メトリクスに基づいたアラート

このチュートリアルでは、以前のGoで記述されたHTTPサーバーのインストルメンテーションチュートリアルでインストルメントした`ping_request_count`メトリックでアラートを作成します。

このチュートリアルでは、`ping_request_count`メトリックが5を超えた場合にアラートを発生させます。アラートの原則の詳細については、現実世界のベストプラクティスを確認してください。

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

Alertmanagerは、アラートが発報されたときに通知できる`email`、`webhook`、`pagerduty`、`slack`など、さまざまなレシーバーをサポートしています。レシーバーの一覧とそれらの設定方法はこちらにあります。このチュートリアルではレシーバーとして`webhook`を使用します。webhook.siteにアクセスしてWebhook URLをコピーし、後でAlertmanagerの設定に使用します。

まず、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が稼働したらhttp://localhost: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"]

Prometheusの設定に`evaluation_interval`、`rule_files`、`alerting`セクションが追加されていることに注意してください。`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

ブラウザでhttp://localhost:9090/rulesを開いてルールを確認してください。次に、インストルメントされたpingサーバーを実行し、http://localhost:8090/pingエンドポイントにアクセスして、ページを少なくとも6回更新します。http://localhost:8090/metricsエンドポイントにアクセスしてping回数をチェックできます。アラートの状態を確認するにはhttp://localhost:9090/alertsにアクセスします。条件`ping_request_count > 5`が10秒以上trueになると、`state`は`FIRING`になります。ここで`webhook.site`のURLに戻ると、アラートメッセージが表示されます。

同様に、Alertmanagerは他のレシーバーで設定して、アラートが発報されたときに通知できます。

このドキュメントはオープンソースです。問題を報告したり、プルリクエストを送信したりすることで、改善にご協力ください。