mcpField
P
prometheus

prometheus

github.com/julianobarbosaクラウド・DevOps1464 回インストール3 日前に更新
リポジトリ

prometheus について

prometheusは、HTTP APIと付属スクリプトでPrometheus監視システムを照会するスキルです。時系列データの確認に加え、ターゲット、メタデータ、アラート、システム状態の調査にも使えます。

主な機能

  1. 01瞬時クエリと範囲クエリを実行
  2. 02PromQLの整形と系列の検索
  3. 03ラベルとメトリクスメタデータを取得
  4. 04ターゲット、ルール、アラートを確認
  5. 05設定と実行状態を確認
  6. 06クエリ・ヘルスチェック用スクリプトを収録

活用シーン

  1. 01指定時点のメトリクス値を確認
  2. 02一定期間のメトリクス推移を分析
  3. 03ターゲットと発生中のアラートを確認
  4. 04Prometheusの健全性と実行情報を調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/julianobarbosa/claude-code-skills --skill prometheus

インストール後、Claude Code で/prometheusを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
api_reference.md
promql_functions.md
scripts/
prom_health.py
prom_metadata.py
prom_query.py

詳細

Prometheus API スキル

/api/v1 の HTTP API を使って、Prometheus の監視システムにクエリを実行します。

クイックリファレンス

即時クエリ
curl 'http://<prometheus>:9090/api/v1/query?query=<promql>&time=<timestamp>'
範囲クエリ
curl 'http://<prometheus>:9090/api/v1/query_range?query=<promql>&start=<ts>&end=<ts>&step=<duration>'

レスポンス形式

すべてのレスポンスは JSON を返します。

{
  "status": "success" | "error",
  "data": <result>,
  "errorType": "<string>",
  "error": "<string>",
  "warnings": ["<string>"]
}

HTTP コード:400(パラメーター不正)、422(式エラー)、503(タイムアウト)。

クエリエンドポイント

エンドポイント用途主なパラメーター
/api/v1/query即時クエリquery、time、timeout、limit
/api/v1/query_range範囲クエリquery、start、end、step、timeout、limit
/api/v1/format_queryPromQL の整形query
/api/v1/seriesラベルによる時系列の検索match[]、start、end、limit
/api/v1/labelsラベル名の一覧表示start、end、match[]、limit
/api/v1/label/<name>/valuesラベル値start、end、match[]、limit
/api/v1/query_exemplarsエグザンプラーのクエリquery、start、end

メタデータとステータスのエンドポイント

エンドポイント用途
/api/v1/targetsターゲット検出のステータス(state=active|dropped|any)
/api/v1/targets/metadataターゲットからのメトリクスメタデータ
/api/v1/metadataすべてのメトリクスメタデータ
/api/v1/rulesアラートルール/記録ルール
/api/v1/alertsアクティブなアラート
/api/v1/alertmanagersAlertmanager の検出
/api/v1/status/config現在の設定 YAML
/api/v1/status/flagsCLI フラグ
/api/v1/status/runtimeinfoランタイム情報
/api/v1/status/buildinfoビルド情報
/api/v1/status/tsdbTSDB のカーディナリティ統計
/api/v1/status/walreplayWAL 再生の進行状況

管理者用エンドポイント(--web.enable-admin-api が必要)

エンドポイントメソッド用途
/api/v1/admin/tsdb/snapshotPOSTTSDB スナップショットの作成
/api/v1/admin/tsdb/delete_seriesPOST時系列の削除(match[]、start、end)
/api/v1/admin/tsdb/clean_tombstonesPOST削除済みデータのクリーンアップ

よく使う PromQL パターン

# Rate of counter over 5m
rate(http_requests_total[5m])

# Sum by label
sum by (job) (rate(http_requests_total[5m]))

# Percentile from histogram
histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m]))

# Filter by label
up{job="prometheus", instance=~".*:9090"}

# Increase over time
increase(http_requests_total[1h])

# Average over time range
avg_over_time(process_cpu_seconds_total[5m])

結果の型

  • vector:[{"metric": {...}, "value": [timestamp, "value"]}]
  • matrix:[{"metric": {...}, "values": [[ts, "val"], ...]}]
  • scalar:[timestamp, "value"]
  • string:[timestamp, "string"]

スクリプト

クエリスクリプト:scripts/prom_query.py

# Instant query
python scripts/prom_query.py http://localhost:9090 'up'

# Range query
python scripts/prom_query.py http://localhost:9090 'rate(http_requests_total[5m])' \
  --start '2024-01-01T00:00:00Z' --end '2024-01-01T01:00:00Z' --step '1m'

# Output: table, json, csv
python scripts/prom_query.py http://localhost:9090 'up' --format table

ヘルスチェック:scripts/prom_health.py

python scripts/prom_health.py http://localhost:9090

詳細リファレンス

API の完全なドキュメント:references/api_reference.md

PromQL 関数:references/promql_functions.md


注意点

  • 頻繁にリセットされるカウンターに対する rate():計算は正しくても意味をなさない場合があります — カウンター値がスクレイプ間で維持されない場合は、increase() を使い、明示的に間隔で割ってください。
  • up{} はターゲットごとのゲージです:不安定なターゲットは up=0 になりますが、for の条件を満たすまではアラートは発生しません。稼働確認には短い for を、ノイズを抑えるには長い for を設定してください。
  • 記録ルールは固定間隔で評価されます。評価が抜けても遡って補完されないため、インシデント中は記録時系列にギャップが生じます。
  • フェデレーションの match[] パラメーターでは、すべてのマッチャーが一致する必要があります — 空のマッチャーは時系列を返さないため、データのない正常なクエリのように見えます。
  • 古いマーカーのセマンティクス:時系列のスクレイプが停止すると、デフォルトで 5 分後に古いマーカーが付きます。その後、クエリ結果は「0」ではなく「データなし」になります。absent() に対するアラートに影響します。
  • サービスディスカバリーと relabel_config:keep アクションの正規表現に誤りがあると、すべてのターゲットが通知なく除外されます。設定を変更するたびに /api/v1/targets で確認してください。

コメント