Alertmanagerとは
Alertmanagerを利用すると、Prometheusで監視しているメトリクスが一定の条件を満たしたとき、メールやSlackなどにアラートを通知することができます。
インストール
こちらのリポジトリを利用すると、Docker ComposeからPrometheusを起動可能です。 → docker-composeのインストール
以下で起動します。
$ git clone https://github.com/vegasbrianc/prometheus
$ cd prometheus
$ docker-compose up
それぞれ以下のポートで起動します。
Prometheus | http://localhost:9090/ |
Alertmanager | http://localhost:9093/ |
Slackの通知設定
以下を参考に、Prometheus用のAppsを作成し、Incoming Webhookを有効にして、Webhook URLを取得します。
alertmanager/config.yml
にusername
, channel
, api_url
を指定します。
route:
receiver: 'slack'
receivers:
- name: 'slack'
slack_configs:
- send_resolved: true
username: '<username>'
channel: '<channel name>'
api_url: '<webhook url>'
Alertmanagerの設定
アラートのルールは以下のように設定を行います。
groups:
- name: <ルール名>
rules:
- alert: <アラート名>
expr: <クエリ式>
for: <条件の期間>
severity: <深刻度>
annotations:
description: "アラートの説明"
summary: "サマリー"
alert | アラート名を記載 |
expr | クエリ式を指定 (PromQLで書く) |
for | 条件の継続時間を指定 (秒:s, 分:m, 時間:h, 日:d など) |
severity | アラートの深刻度を指定(critical, warningなど) |
annotations | アラートの説明、サマリーなど |
今回のリポジトリでは、prometheus/alert.rules
にアラートのルールが記載されています。
以下のように設定を変更すると、exprが1のためアラートが発火します。
groups:
- name: rule-example
rules:
- alert: alert-example
expr: 1
for: 1m
設定の変更が終わったら、反映を行うためにDockerコンテナの再起動を行います。
再度開いてしばらく待つと、http://localhost:9090/alerts でアラートがactiveとなり発火していることがわかります。
statusは、PENDING、FIRINGのどちらかとなり、FIRINGは発火を表します。
Alertmanagerの方では発火したアラートが表示されます。
SlackにもPrometheusから通知が行われます。