メトリクスに基づくアラート
このチュートリアルでは、以前に「Go で書かれた HTTP サーバーのインスツルメンテーション」チュートリアルでインスツルメンテーションしたping_request_count
メトリクスに対してアラートを作成します。
このチュートリアルでは、ping_request_count
メトリクスが5より大きい場合にアラートを発生させます。アラートの原則について詳しくは、実際のベストプラクティスをご覧ください。
お使いのオペレーティングシステム用の Alertmanager の最新リリースをこちらからダウンロードしてください。
Alertmanager は、email
、webhook
、pagerduty
、slack
などのさまざまなレシーバーをサポートしており、アラートが発火したときに通知することができます。レシーバーのリストと設定方法については、こちらをご覧ください。このチュートリアルではwebhook
をレシーバーとして使用します。webhook.siteにアクセスし、後で Alertmanager を設定するために使用する webhook URL をコピーしてください。
まず、webhook レシーバーで Alertmanager をセットアップしましょう。
alertmanager.yml
global:
resolve_timeout: 5m
route:
receiver: webhook_receiver
receivers:
- name: webhook_receiver
webhook_configs:
- url: '<INSERT-YOUR-WEBHOOK>'
send_resolved: false
alertmanager.yml ファイル内の<INSERT-YOUR-WEBHOOK>
を、先ほどコピーした webhook で置き換えて、次のコマンドを使用して Alertmanager を実行します。
alertmanager --config.file=alertmanager.yml
Alertmanager が起動して実行されたら、https://:9093に移動してアクセスできるはずです。
Webhook レシーバーで Alertmanager を設定したので、Prometheus の設定にルールを追加しましょう。
prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 10s
rule_files:
- rules.yml
alerting:
alertmanagers:
- static_configs:
- targets:
- localhost:9093
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ["localhost:9090"]
- job_name: simple_server
static_configs:
- targets: ["localhost:8090"]
evaluation_interval
、rule_files
、alerting
のセクションが Prometheus の設定に追加されていることに注意してください。evaluation_interval
はルールが評価される間隔を定義し、rule_files
はルールを定義する YAML ファイルの配列を受け入れ、alerting
セクションは Alertmanager の設定を定義します。このチュートリアルの冒頭で述べたように、ping_request_count
の値が5より大きい場合にアラートを発生させる基本的なルールを作成します。
rules.yml
groups:
- name: Count greater than 5
rules:
- alert: CountGreaterThan5
expr: ping_request_count > 5
for: 10s
次に、次のコマンドを使用して Prometheus を実行します。
prometheus --config.file=./prometheus.yml
ブラウザでhttps://:9090/rulesを開いてルールを確認してください。次に、インスツルメンテーションされた ping サーバーを実行し、https://:8090/pingエンドポイントにアクセスし、ページを少なくとも6回リフレッシュします。ping の回数は、https://:8090/metricsエンドポイントに移動して確認できます。アラートのステータスを確認するには、https://:9090/alertsにアクセスしてください。ping_request_count > 5
の条件が10秒以上 true になると、state
がFIRING
になります。この状態でwebhook.site
の URL に戻ると、アラートメッセージが表示されます。
同様に、Alertmanager は他のレシーバーでも、アラートが発火したときに通知するように設定できます。