Alertmanager
Alertmanager は、Prometheus サーバーのようなクライアントアプリケーションから送信されたアラートを処理します。メール、PagerDuty、OpsGenie などの適切なレシーバー統合への deduplication(重複排除)、grouping(グループ化)、routing(ルーティング)を行います。また、アラートの silencing(サイレンス)と inhibition(抑制)も担当します。 Alertmanager
以下に、Alertmanager が実装するコアコンセプトについて説明します。詳細な使用方法については、設定ドキュメントを参照してください。
グループ化
グループ化は、類似した性質のアラートを単一の通知に分類します。これは、多くのシステムが同時に障害を起こし、数百から数千のアラートが同時に発生する可能性のある大規模な障害発生時に特に役立ちます。
例: ネットワークパーティションが発生すると、クラスターで実行されているサービスインスタンスの数十から数百が影響を受けます。サービスインスタンスの半分がデータベースに到達できなくなります。Prometheus のアラートルールは、データベースと通信できないサービスインスタンスごとにアラートを送信するように設定されていました。その結果、何百ものアラートが Alertmanager に送信されます。
ユーザーとしては、単一のページを受信したいものの、影響を受けたサービスインスタンスを正確に確認できる必要があります。そのため、Alertmanager をクラスターとアラート名でグループ化するように設定すると、単一のコンパクトな通知を送信できます。
アラートのグループ化、グループ化された通知のタイミング、およびそれらの通知のレシーバーは、設定ファイル内のルーティングツリーによって設定されます。
抑制
抑制とは、特定のアラートがすでに発生している場合に、そのアラートの通知を抑制する概念です。
例: クラスター全体が到達不能であることを通知するアラートが発生しています。Alertmanager は、その特定のアラートが発生している場合に、他のすべてのクラスター関連アラートをミュートするように設定できます。これにより、実際の問題とは無関係の何百ものアラート通知を防ぐことができます。
抑制は、Alertmanager の設定ファイルを通じて設定されます。
サイレンス
サイレンスは、指定された時間、アラートを単純にミュートするための簡単な方法です。サイレンスは、ルーティングツリーと同様に、マッチャーに基づいて設定されます。受信したアラートは、アクティブなサイレンスのすべての等価または正規表現マッチャーに一致するかどうかチェックされます。一致する場合、そのアラートの通知は送信されません。
サイレンスは、Alertmanager のWebインターフェースで設定されます。
クライアントの動作
Alertmanager には、クライアントの動作に関する特別な要件があります。これらは、Prometheus がアラート送信に使用されない高度なユースケースにのみ関連します。
高可用性
Alertmanager は、高可用性のためのクラスターを作成する設定をサポートしています。これは、--cluster-* フラグを使用して設定できます。
Prometheus と Alertmanager 間のトラフィックをロードバランシングするのではなく、Prometheus をすべての Alertmanager のリストにポイントすることが重要です。