TT Lab
はじめる
学ぶ 学習パス コース

PCA — Prometheus認定アソシエイト

指標が実際に流れるPrometheus

TT Labで続きを見る

このラボは本物のPrometheusで動きます

VMの中でPrometheus・Alertmanager・node-exporterが実際に起動しています。node-exporterが本物の指標を出すので、PromQLが本物のデータを扱い、ルールは実際に評価され、アラートは実際に発火してAlertmanagerまで届きます。

PCAコースの他のラボが動く疑似クラスターには、Prometheus自体がありません。クエリを文章として書く練習までが、すべてでした。

kube-prometheus-stackは使いません。オペレーターが設定を代わりに書いてくれると、prometheus.ymlを触る機会がなくなりますが、PCAが問うのは、まさにそのファイルだからです。

最初の起動には3分ほどかかります。

用意されているもの

Prometheus     http://127.0.0.1:30090   설정은 /etc/prometheus/prometheus.yml
Alertmanager   http://127.0.0.1:30093
규칙           /etc/prometheus/rules/rules.yml
대상           node-exporter(데몬셋) · demo-app · Prometheus 자신
질의 도구      promq 'up'

目標

スクレイプ設定から、アラートがAlertmanagerに届くまでの全経路を自分でつなぎます。

なぜ重要なのか

Prometheusを扱ううえで、最もよく詰まる場所は、文法ではありません。

最後が特に価値があります。「サービスが死ねばアラートが来るだろう」と信じていたのに、Podが丸ごと消えるデプロイ事故では、アラートは1つも来ません。

ステップ

  1. 今何をスクレイプしているかを確認して、記録してください(保存先: /root/pca/targets.txt)。
  2. kubernetes_sd_configsで、Podを自動的に見つけるようにして、結果を記録してください(保存先: /root/pca/sd.txt)。
  3. relabel_configsで、アノテーションが付いたものだけを残し、appラベルを作って、記録してください(保存先: /root/pca/relabel.txt)。
  4. PromQLを書いて、記録してください(保存先: /root/pca/promql.txt)。instant=、range=、rate_result=の3行が必要です。
  5. レコーディングルールを1つ作成し(名前はlevel:metric:operationの慣例)、結果が実際に出ることを記録してください(保存先: /root/pca/recording.txt)。
  6. アラートルールを作成し、ターゲットを実際に故障させてfiringになるまでを記録してください(保存先: /root/pca/alert.txt)。for句も書きます。
  7. PrometheusがAlertmanagerに送るようにして、実際に届いたことを記録してください(保存先: /root/pca/am.txt)。
  8. レポート(/root/pca/report.md)に、up_targets=、alert_fired=yes、recording_rule=の3行と説明を書いてください。

参考

今何をスクレイプしているか

今何をスクレイプしているかを確認して、記録してください(保存先: /root/pca/targets.txt)。

/api/v1/targetsと現在のprometheus.ymlを、一緒に見てください。

ターゲットを手で書かない

kubernetes_sd_configsで、Podを自動的に見つけるようにして、結果を記録してください(保存先: /root/pca/sd.txt)。

kubernetes_sd_configsのrole: podを使うと、Podが起動したり消えたりするたびに、一覧が追従します。

何を残して何を捨てるか

relabel_configsで、アノテーションが付いたものだけを残し、appラベルを作って、記録してください(保存先: /root/pca/relabel.txt)。

__meta_で始まるラベルは、リラベルの前にしか存在しません。keepで絞り込み、target_labelで新しいラベルを作ってください。

本物のデータでクエリする

PromQLを書いて、記録してください(保存先: /root/pca/promql.txt)。instant=、range=、rate_result=の3行が必要です。

instant=、range=、rate_result=の3行が必要です。カウンターにはrate()を使います。

あらかじめ計算しておく

レコーディングルールを1つ作成し(名前はlevel:metric:operationの慣例)、結果が実際に出ることを記録してください(保存先: /root/pca/recording.txt)。

名前はlevel:metric:operationの慣例に従ってください。コロンが入っていてこそ、元の指標と区別できます。

アラートを実際に発火させる

アラートルールを作成し、ターゲットを実際に故障させてfiringになるまでを記録してください(保存先: /root/pca/alert.txt)。for句も書きます。

up == 0は、ターゲットがあるのに応答しないときだけ真です。Podを削除すると、時系列自体が消えます。

アラートの行き先が必要

PrometheusがAlertmanagerに送るようにして、実際に届いたことを記録してください(保存先: /root/pca/am.txt)。

alerting.alertmanagersを書かないと、ルールが発火しても、どこにも行きません。

何を学んだのか

レポート(/root/pca/report.md)に、up_targets=、alert_fired=yes、recording_rule=の3行と説明を書いてください。

up_targets=、alert_fired=yes、recording_rule=の3行と説明を書いてください。