PrometheusとAlertmanagerでSolrの異常を通知する
はじめに
前回の記事では Prometheus と Grafana による可視化を採り上げました。今回はさらに Alertmanager を組み合わせてメール通知を試してみました。
前回の続きで Solr と Prometheus と prometheus-exporter が動いている前提です。
Alertmanager のインストールと起動
$ wget https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz $ tar zxf alertmanager-0.21.0.linux-amd64.tar.gz $ cd alertmanager-0.21.0.linux-amd64 $ ./alertmanager --config.file=alertmanager.yml
今回はメール通知の動作確認用の alertmanager.yml を作成しました。メール以外にも Slack や Pushover など、様々な通知手段が用意されています。
global: resolve_timeout: 5m smtp_from: 'solr-alert@example.com' smtp_smarthost: 'localhost:25' route: receiver: 'mail_test' receivers: - name: 'mail_test' email_configs: - to: 'alert-receiver@example.com' require_tls: false
Prometheus の設定
prometheus.yml でルールファイルを設定
rule_files: - "alert_rules.yml"
alert_rules.yml の内容
Solr の Ping API が正常応答しなかったら通知する設定です。
groups: - name: sample_alert rules: - alert: solr_test_alert expr: absent(solr_ping) == 1 for: 1m labels: severity: test test_type: SampleAlert annotations: summary: 'Solr Ping Error'
試してみる
正常な状態では、Prometheus の Alerts のページは以下のような表示です。
ここで Solr のプロセスを落としてみます。しばらく待つと異常を検知してPending状態に入ります。
このまま回復しなければメール通知されます。
受信したメールの内容です。
おわりに
簡単な例でメール通知できるところまで設定してみました。
Prometheus と Alertmanager の組み合わせでは、promQL による条件の記述や振り分けルールの設定などを使ってかなり複雑なこともできるようになっており、Solr 自体の監視だけでなく、インデックスの内容に基づいたアラートも可能です。