Alertmanagerとは - Prometheusドキュメント

このページはPrometheus公式ドキュメント和訳+αの一部です。

Alertmanager

Alertmanagerは、Prometheusサーバーのようなクライアントアプリケーションから送信されたアラートを処理する。 重複を排除したり、グルーピングしたり、emailやPageDuty、OpsGenieのようなレシーバー連携にアラートを送信する。 また、アラートを一時停止したり、抑制したりする。

以下、Alertmanagerが実装しているコアとなる概念を説明する。 これらの詳細な使い方は、設定ドキュメントを参照すること。

Grouping

グルーピングは、似た性質のアラートを1つの通知に分類する。 これは、多くのシステムが一度に失敗し、何百、何千のアラートが同時に起こる大規模障害において特に有益である。

例:ネットワークの分断が起きた時に、何十、何百のサービスのインスタンスクラスタで稼働していたとする。 サービスインスタンスの半分がデータベースにアクセスできない。 Prometheusのアラーティングルールは、データベースに通信できない時にサービスインスタンスそれぞれに対して1つのアラートを送信するように設定されている。結果として、Alertmanagerに何百ものアラートがAlertmanagerに送信される。

ユーザーとしては、どのサービスインスタンスが影響を受けたか正確に把握しつつ、1つの呼び出しを受けるだけにしたい。 そのために、Alertmanagerがアラートをクラスタとアラート名でまとめ、1つの簡潔な通知を送信するように設定できる。

アラートのグループ化、グループ化された通知のタイミング、それらの通知のレシーバーは、設定ファイルのルーティングツリーで設定される。

Inhibition

inhibitionとは、他のアラートがすでに起きている場合に特定のアラートの通知を抑制する概念である。

例:クラスタ全体がアクセス不能になっていることを知らせるアラートが起きているとする。 Alertmanagerは、そのアラートが起きている場合にこのクラスタに関する他の全てのアラートをミュートするように設定できる。 これによって、本当の問題と無関係なアラートが何百、何千と起きたと通知するのを避けることができる。

inhibitionは、Alertmanagerの設定ファイルを通して設定される。

Silences

サイレンスは、指定された時間、単純にミュートする分かりやすい方法である。 サイレンスは、ルーティングツリーのように、マッチャーを元に設定される。 入ってきたアラートは、アクティブなサイレンスの全ての等値・正規表現マッチャーにマッチするか調べられる。 マッチした場合は、そのアラートに対して通知は送られない。

サイレンスは、AlertmanagerのWebインターフェースで設定される。

Client behavior

Alertmanagerは、クライアントの振る舞いに対して特別な要件を持っている。 それらの要件に関係があるのは、アラートを送信するのにPrometheusを使わない高度なユースケースだけである。

High Availability

Alertmanagerは、高可用なクラスタを構築するための設定をサポートしている。 これは、フラグ--cluster-*を利用して設定することができる。

PrometheusとAlertmanagerの間をロードバランスせず、代わりにPrometheusを全てのAlertmanagerのリストに向けさせることが重要である。

参考リンク

おすすめ書籍

入門 Prometheus ―インフラとアプリケーションのパフォーマンスモニタリング

入門 Prometheus ―インフラとアプリケーションのパフォーマンスモニタリング

入門 監視 ―モダンなモニタリングのためのデザインパターン

入門 監視 ―モダンなモニタリングのためのデザインパターン

SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム

SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム

和訳活動の支援

Prometheusドキュメント和訳が役に立った方は、以下QRコードからPayPayで活動を支援して頂けるとありがたいです。

PayPayによる支援用QRコード
上のQRコードからPayPayによる支援