mcpField
P
prometheus

prometheus

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

prometheus について

prometheusは、Prometheusのメトリクス運用を扱うガイドスキルで、PromQL、アラート、レコーディングルールを解説します。PrometheusやGrafanaのメトリクスを扱うユーザー向けに、分析と設定の例を示します。

主な機能

  1. 01PromQLセレクター、レート、集約
  2. 02一般的なメトリクス分析パターン
  3. 03アラートルールとルーティングの例
  4. 04レコーディングルールの設定と検証
  5. 05Grafana Metrics Drilldownの案内

活用シーン

  1. 01リクエストレートやエラーのクエリ作成
  2. 02Prometheusアラートの設定と検証
  3. 03レコーディングルールによるダッシュボード指標の事前計算
  4. 04PromQLを書かずにメトリクスを探索

インストール

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

$npx skills add https://github.com/grafana/skills --skill prometheus

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

詳細

Prometheus と Grafana によるメトリクス

ドキュメント: https://prometheus.io/docs/ | Grafana Cloud Metrics: https://grafana.com/docs/grafana-cloud/send-data/metrics/

PromQL クイックリファレンス

インスタントベクターセレクター
# By metric name
http_requests_total

# Label filter
http_requests_total{job="api-server"}

# Multiple labels (AND)
http_requests_total{job="api-server", method="GET"}

# Regex
http_requests_total{job=~"api.*", status=~"5.."}

# Negative
http_requests_total{status!="200"}
レンジベクターとレート
# Per-second rate over 5 minutes
rate(http_requests_total[5m])

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

# Instant rate (last two samples)
irate(http_requests_total[5m])

# Offset (5 minutes ago)
rate(http_requests_total[5m] offset 5m)
集計
# Sum by label
sum by (job) (rate(http_requests_total[5m]))

# Average
avg by (instance) (node_cpu_seconds_total)

# Top-K
topk(5, rate(http_requests_total[5m]))

# Histogram quantiles
histogram_quantile(0.99, rate(http_request_duration_seconds_bucket[5m]))

# Count distinct
count(up{job="api"})
一般的なパターン
# Error rate percentage
sum(rate(http_requests_total{status=~"5.."}[5m]))
  / sum(rate(http_requests_total[5m])) * 100

# Saturation (CPU usage %)
100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)

# Memory usage
node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes

# Predict disk full (linear extrapolation)
predict_linear(node_filesystem_free_bytes[6h], 24*3600) < 0

アラートルール

Prometheus アラートルール
groups:
  - name: api_alerts
    rules:
      - alert: HighErrorRate
        expr: |
          sum(rate(http_requests_total{status=~"5.."}[5m]))
            / sum(rate(http_requests_total[5m])) > 0.05
        for: 5m
        labels:
          severity: critical
        annotations:
          summary: "High 5xx error rate ({{ $value | humanizePercentage }})"
Alertmanager のルーティング
# alertmanager.yml
route:
  receiver: default
  group_by: [alertname, job]
  group_wait: 30s
  group_interval: 5m
  routes:
    - match:
        severity: critical
      receiver: pagerduty
    - match:
        severity: warning
      receiver: slack

receivers:
  - name: pagerduty
    pagerduty_configs:
      - service_key: "<key>"
  - name: slack
    slack_configs:
      - channel: "#alerts"
        api_url: "<webhook_url>"
  - name: default
    email_configs:
      - to: "[email protected]"
アラート設定の検証
promtool check rules rules.yml
amtool check-config alertmanager.yml
amtool config routes test --config.file=alertmanager.yml severity=critical

記録ルール

ダッシュボードのパフォーマンス向上のため、負荷の高い PromQL を事前計算します。

groups:
  - name: api_rules
    interval: 1m
    rules:
      - record: job:http_requests:rate5m
        expr: sum by (job) (rate(http_requests_total[5m]))
      - record: job:http_request_duration_seconds:p99
        expr: histogram_quantile(0.99, sum by (job, le) (rate(http_request_duration_seconds_bucket[5m])))
記録ルールのデプロイと検証
# 1. Validate rule syntax
promtool check rules rules/recording.yml

# 2. Reload Prometheus (after adding to rule_files in prometheus.yml)
curl -X POST http://localhost:9090/-/reload

# 3. Verify rules are active
curl -s http://localhost:9090/api/v1/rules | jq '.data.groups[].rules[] | {name, health}'

メトリクスのドリルダウン(Grafana 12+)

PromQL を記述せずに Prometheus を探索できます。メトリクスを閲覧するには、Explore > Metrics Drilldown に移動するか、<grafana-url>/a/grafana-metricsdrilldown-app を使用します。 ラベルの内訳を表示するメトリクス検索、異常検出のためのスマートなセグメンテーション、自動可視化、メトリクスから関連するログやトレースへのテレメトリのピボット機能を提供します。

リソース

コメント