メトリクスに基づくアラート
このチュートリアルでは、以前の 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 にアクセスしてアクセスできることを確認してください。
Alertmanager を webhook レシーバーで設定したので、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
ブラウザで 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 は他のレシーバーと設定して、アラートが発信されたときに通知することができます。