Prometheus・Alertmanager 連携
Alertmanager から Echobell へ Webhook またはメールでアラートを送信する手順
Prometheus 連携
Prometheus と Alertmanager は広く使われているオープンソースの監視・アラート基盤です。Alertmanager を Echobell と連携すると、アラートルールが発火した際に、即時のモバイル通知(時限性や通話形式も可)を受け取れます。
前提条件
- Echobell アカウント(チャンネルを 1 つ以上作成済み)
- 稼働中の Prometheus + Alertmanager
- Alertmanager 設定(alertmanager.yml)の編集権限
手順の流れ
- Echobell チャンネルを作成
- 通知テンプレート(任意でリンクテンプレート)を設定
- 連携方法を選択:
- Webhook(Alertmanager の webhook レシーバー。推奨)
- メール(Alertmanager の email レシーバー。代替)
- アラートルールを作成/更新
- テストと調整
手順
1) Echobell チャンネル作成
- Echobell アプリを開く
- 新規チャンネル(例: "Prometheus Alerts")を作成
- 識別しやすい色を選択
2) 通知テンプレート設定
Alertmanager の webhook ペイロードには status、commonLabels、commonAnnotations、externalURL、alerts 配列などのフィールドが含まれます。Echobell のテンプレートでそれらを直接参照できます。
推奨テンプレート:
タイトルテンプレート:
{{commonLabels.alertname}} - {{status}}本文テンプレート:
🔔 アラート: {{commonLabels.alertname}}
📊 重大度: {{commonLabels.severity}}
🖥️ インスタンス: {{alerts[0].labels["instance"]}}
⏰ 開始: {{alerts[0].startsAt}}
ℹ️ 概要: {{commonAnnotations.summary}}
🧾 詳細: {{commonAnnotations.description}}オプションのリンクテンプレート(詳細設定):
{{alerts[0].generatorURL || externalURL}}これにより、記録に関連グラフ/ダッシュボードへのリンクが表示されます。generatorURL が無い場合は externalURL を使用します。
3) 方法 A — Webhook(推奨)
- Echobell チャンネルの Triggers から Webhook URL をコピー
- Alertmanager にその URL に POST する webhook レシーバーを追加
alertmanager.yml 最小例:
route:
receiver: echobell-webhook
receivers:
- name: echobell-webhook
webhook_configs:
- url: "https://hook.echobell.one/t/REPLACE_WITH_YOUR_TOKEN"
send_resolved: true
http_config:
follow_redirects: true注意:
- send_resolved: true は解消時(resolved)も通知します
- Echobell は JSON 本文をそのまま解釈するため、上記テンプレートで正しくレンダリングされます
3 代替) 方法 B — メール
メールを使う場合は、Alertmanager の email レシーバーでチャンネルのメールアドレスへ送信します。
- Echobell の Triggers からチャンネルのメールアドレスをコピー
- Alertmanager でメールレシーバーを設定し、簡単なテンプレートを使用
例:
receivers:
- name: echobell-email
email_configs:
- to: "チャンネルのメールアドレスを貼り付け"
send_resolved: true
subject: "{{ .CommonLabels.alertname }} - {{ .Status }}"
html: |
<p><strong>概要:</strong> {{ .CommonAnnotations.summary }}</p>
<p>{{ .CommonAnnotations.description }}</p>
<p>
<a href='{{ (index .Alerts 0).GeneratorURL }}' target='_blank' rel='noopener'>Prometheus で開く</a>
</p>Echobell のメールトリガー用テンプレートでは、subject、text、html などの変数を使用できます。
4) サンプルアラートルール
groups:
- name: example
rules:
- alert: HighCPU
expr: avg(rate(process_cpu_seconds_total[5m])) > 0.8
for: 2m
labels:
severity: critical
annotations:
summary: "CPU 使用率が高い"
description: "CPU が 2 分以上 80% を超過"発火すると、Alertmanager がレシーバーへ送信し、Echobell がチャンネル購読者に通知します。
テスト方法
- 閾値を一時的に下げるか、すぐに発火するテストを作成
- 発火時に Echobell 通知が届くか確認
- リンクテンプレート使用時は、記録からリンクを開く
- 解消時の通知(有効な場合)も確認
通知タイプの選択
- Time Sensitive: 本番重大障害、緊急ページ
- Calling: 重大障害でフォーカスモードを突破したい場合
- Normal: 日常的な警告・情報通知
ベストプラクティス
- 簡潔かつ要点を含むテンプレート(名前、重大度、インスタンス、概要)
- リンクテンプレートで関連画面へ即ジャンプ
- Alertmanager 側でグルーピング/ルーティングしてノイズを軽減
- severity ラベルと Echobell の通知タイプを使い分け
- Webhook URL は秘匿し、露出時はローテーション
トラブルシューティング
- Webhook URL またはチャンネルのメールが正しいか
- チャンネルが有効で購読者がいるか
- Alertmanager のログに配送エラーがないか
- alertmanager.yml の route が正しいレシーバーを指しているか
- 単純なテストルールで検証
- メール使用時は SMTP と配送を確認
プライバシー
- 通知内容はデバイス上に保存
- サーバーには最小限の設定データのみ保存
- Webhook URL とチャンネルメールは秘密として扱う
- Echobell はアラートのペイロードを保持しません