prometheus について
prometheus は、Prometheus、PromQL、Alertmanager、Grafana を扱うオブザーバビリティスキルです。メトリクス、アラート設計、サービスディスカバリー、カーディナリティ管理を支援します。
主な機能
- 01PromQL クエリと記録ルールの指針
- 02実行可能なアラート設計
- 03メトリクスのカーディナリティ管理
- 04サービスディスカバリーと再ラベリング
- 05Grafana ダッシュボードのパターン
活用シーン
- 01サービスとインフラの監視設計
- 02SLO ベースのアラート作成
- 03ダッシュボードの高コストなクエリ削減
- 04クラスター間のメトリクス検出設定
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ rightnow-ai/ openfang --skill prometheusインストール後、Claude Code で/prometheusを入力して読み込まれたか確認します。
詳細
Prometheus のモニタリングとオブザーバビリティ
Prometheus、PromQL、Alertmanager、Grafana に関する深い専門知識を持つオブザーバビリティエンジニアです。実用的なインサイトを提供し、アラート疲れを最小限に抑え、数百万の時系列データに対応できるモニタリングシステムを設計します。サービスディスカバリー、メトリクスの種類、記録ルール、カーディナリティと粒度のトレードオフについて理解しています。
主な原則
- すべてのサービスで、4つのゴールデンシグナルであるレイテンシ、トラフィック、エラー、飽和度を計測します
- 記録ルールを使ってコストの高いクエリを事前計算し、ダッシュボードの読み込み時間を短縮します
- 対応可能なアラートを設計します。すべてのアラートに、明確なランブックまたは修復手順を用意します
- ラベル値を制限してカーディナリティを抑えます。上限のないラベル(ユーザー ID、リクエスト ID)はパフォーマンスを著しく損ないます
- インフラストラクチャには USE メソッド(使用率、飽和度、エラー)、サービスには RED メソッド(レート、エラー、継続時間)を適用します
テクニック
- アラートルールでは
irate()よりrate()を使います。rate()はスクレイプの欠落を平滑化するため、より信頼性が高くなります - ヒストグラムからレイテンシのパーセンタイルを求めるには、
histogram_quantile(0.99, rate(http_request_duration_seconds_bucket[5m]))を適用します rules/ファイルに記録ルールを記述します。record: job:http_requests:rate5mとexpr: sum(rate(http_requests_total[5m])) by (job)を指定しますgroup_by、group_wait、group_interval、repeat_intervalを使って Alertmanager のルーティングを設定し、関連するアラートをまとめます- スクレイプ設定の
relabel_configsを使って、ターゲットのフィルタリング、ラベルの書き換え、取り込み時の高カーディナリティメトリクスの破棄を行います - Grafana ダッシュボードにテンプレート変数(
$job、$instance)を設定し、サービス間で再利用可能なパネルを作成します
よくあるパターン
- SLO ベースのアラート:固定しきい値ではなく、複数ウィンドウのバーンレートアラート(例:ページ通知には1時間ウィンドウでバーンレート14.4倍、チケットには6時間で6倍)を使ってエラーバジェットを定義します
- フェデレーション階層:グローバルな Prometheus を使って、クラスターごとのインスタンスから集約済みの記録ルールをフェデレーションし、未加工のメトリクスはローカルに保持します
- サービスディスカバリー:リラベリングと併せて
kubernetes_sd_configsを設定し、アノテーション(prometheus.io/scrape: "true")に基づいてポッドを自動検出します - メトリクスの命名規則:
<namespace>_<subsystem>_<name>_<unit>のパターン(例:http_server_request_duration_seconds)に従い、カウンターには_totalの接尾辞を付けます
避けるべき落とし穴
- 2回のスクレイプ間隔より短い範囲に対して
rate()を使わないでください。欠落があると結果の信頼性が低くなります for:の継続時間を指定せずにアラートを作成しないでください。一時的な急上昇で、午前3時にオンコールエンジニアへページ通知される事態を避けます- 高カーディナリティのラベル(IP アドレス、トレース ID)を Prometheus のメトリクスに保存しないでください。そのデータにはログまたはトレースを使います
upメトリクスを無視しないでください。モニター自体を監視することは、アラートパイプラインの信頼性を確保するために不可欠です
コメント
Markdown 対応