2021年2月16日火曜日

Alertmanager で通知を一時的にオフにする方法

概要

メンテナンスなどのときに使えます
Alertmanager の Silence を使います

環境

  • Promethues 2.24.1
  • Alertmanager 0.21.0

Alertmanager の起動

192.168.100.10:9093 で起動します

  • mkdir -p alertmanager/data
  • cd alertmanager
  • vim alertmanager.yml
route:
  receiver: 'containers_notification'
receivers:
- name: 'slack'
  slack_configs:
    - api_url: 'https://hooks.slack.com/services/xxxxxx/xxxxxx/xxxxxxxxx'
      channel: '#general'
      text: "{{ .CommonAnnotations.summary }}"
      send_resolved: true
  • docker run -d -p 9093:9093 --name alertmanager -v $(pwd):/alertmanager prom/alertmanager --config.file=/alertmanager/alertmanager.yml

Promethues の起動

192.168.100.11:9090 で起動します

  • mkdir promethues
  • cd prometheus
  • vim promethues.yml
global:
  scrape_interval:     15s
  evaluation_interval: 15s

alerting:
  alertmanagers:
  - static_configs:
    - targets:
      - 192.168.100.10:9093

rule_files:
  - 'alerts.rule'

scrape_configs:
  - job_name: node
    static_configs:
      - targets:
        - 192.168.100.12:9100

192.168.100.12:9100 が監視するノードで node_exporter を起動しておきます

  • vim alerts.rule
groups:
  - name: 'Test monitoring'
    rules:
    - alert: 'cpu idel alert'
      expr: node_cpu_seconds_total{cpu="0", instance="192.168.100.12:9100", job="node", mode="idle"} > 1
      for: 5s
      annotations:
        summary: 'instance: {{ $labels.instance }}, value: {{ $value }}'
  • docker run -d -p 9090:9090 --name promethues -v $(pwd):/prometheus-data prom/prometheus --config.file=/prometheus-data/prometheus.yml

とりあえず通知が来ることを確認する

idel が 1 以上なので必ず通知が来ると思います
slack に通知が来ることを確認しましょう

一旦アラートを解消する

  • vim alerts.rule
groups:
  - name: 'Test monitoring'
    rules:
    - alert: 'cpu idel alert'
      expr: node_cpu_seconds_total{cpu="0", instance="192.168.100.12:9100", job="node", mode="idle"} < 1
      for: 5s
      annotations:
        summary: 'instance: {{ $labels.instance }}, value: {{ $value }}'
  • docker restart promethues

Slack にアラート解除の通知が来ることを確認します

Silences を登録する

UI から登録できます
開始時間から終了時間の間にアラートしないようにできます

http://192.168.100.10:9093/#/silences

右上に Silence を登録できるボタンがあるのでクリックして作成します
デフォルトだと現在時刻から 2 時間が設定されています
Matchers にマッチしたアラートを無視するようになるので無視したいアラートのマッチ情報を記載しましょう
あとは User と Comment を適当に記載すれば OK です

Matchers はアラートに表示される key/value の値を設定します

登録が完了すると以下のようになります

動作確認

Silence 登録後に再度 alerts.rules を変更してアラートを発泡してみます
すると今度は Slack に通知が来ないのが確認できると思います
Alertmanager の Silence の項目を見るとちゃんと無視しているアラートとしても確認できます

ちなみにアラートが解消されていない状態で Silence が Expire になるとアラートが飛んで来るのでちゃんと解消されていることを確認してから Expire にしましょう

おまけ: API で Silence を登録する

curl http://localhost:9093/api/v1/silences -d '{
  "matchers": [
    {
      "name": "alername",
      "value": "cpu idel alert",
      "isRegex": false
    }
  ],
  "startsAt": "2021-02-15T04:00:00.000000000Z",
  "endsAt": "2021-02-15T05:00:00.000000000Z",
  "createdBy": "api",
  "comment": "test silence",
  "status": {
    "state": "active"
  }
}'

参考サイト

0 件のコメント:

コメントを投稿