[Prometheus] ローカルでAlertmanagerを使ってみるまで

2021年8月4日
[Prometheus] ローカルでAlertmanagerを使ってみるまで

Alertmanagerとは

Alertmanagerを利用すると、Prometheusで監視しているメトリクスが一定の条件を満たしたとき、メールやSlackなどにアラートを通知することができます。

インストール

こちらのリポジトリを利用すると、Docker ComposeからPrometheusを起動可能です。 → docker-composeのインストール

以下で起動します。

$ git clone https://github.com/vegasbrianc/prometheus
$ cd prometheus
$ docker-compose up

それぞれ以下のポートで起動します。

Prometheushttp://localhost:9090/
Alertmanagerhttp://localhost:9093/

Slackの通知設定

以下を参考に、Prometheus用のAppsを作成し、Incoming Webhookを有効にして、Webhook URLを取得します。

alertmanager/config.ymlusername, 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から通知が行われます。

参考