メトリクスに基づくアラート

このチュートリアルでは、以前に「Go で書かれた HTTP サーバーのインスツルメンテーション」チュートリアルでインスツルメンテーションしたping_request_countメトリクスに対してアラートを作成します。

このチュートリアルでは、ping_request_countメトリクスが5より大きい場合にアラートを発生させます。アラートの原則について詳しくは、実際のベストプラクティスをご覧ください。

お使いのオペレーティングシステム用の Alertmanager の最新リリースをこちらからダウンロードしてください。

Alertmanager は、emailwebhookpagerdutyslackなどのさまざまなレシーバーをサポートしており、アラートが発火したときに通知することができます。レシーバーのリストと設定方法については、こちらをご覧ください。このチュートリアルでは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_intervalrule_filesalertingのセクションが 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 になると、stateFIRINGになります。この状態でwebhook.siteの URL に戻ると、アラートメッセージが表示されます。

同様に、Alertmanager は他のレシーバーでも、アラートが発火したときに通知するように設定できます。

このページの内容