mcpField
D
dpm-finder

dpm-finder

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

dpm-finder について

dpm-finderは、Prometheusメトリクスのデータ量を調べるGrafana Cloudユーザー向けのPythonコマンドラインツールです。1分あたりのデータポイント数で順位付けし、系列ごとの内訳から負荷の高いラベルを特定できます。

主な機能

  1. 01DPMによるメトリクス順位付け
  2. 02アクティブな時系列数の表示
  3. 03ラベル組み合わせ別のDPM内訳
  4. 04推定コストによる優先順位付け

活用シーン

  1. 01データポイント数が多いメトリクスの特定
  2. 02高DPMの原因となるラベル組み合わせの調査
  3. 03コスト確認対象のメトリクスの優先付け

インストール

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

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

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

同梱ファイルreferences/cli.md

詳細

dpm-finder

Grafana PS のツールです。Prometheus のメトリクスを DPM でランキングし、系列ごとの内訳を表示します。ソース:https://github.com/grafana-ps/dpm-finder

前提条件

  • Python 3.9+
  • Grafana Cloud Prometheus エンドポイント URL、数値のスタック ID、API キー(glc_…、metrics:read スコープ)

よくあるワークフロー

1 回限りの分析(最も一般的)
# 1. Clone + venv + install
git clone https://github.com/grafana-ps/dpm-finder.git
cd dpm-finder
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt

# 2. Configure creds — copy .env_example → .env and fill in:
#    PROMETHEUS_ENDPOINT  https://prometheus-<cluster_slug>.grafana.net  (NOTHING after .net)
#    PROMETHEUS_USERNAME  <numeric stack id>
#    PROMETHEUS_API_KEY   glc_…

# 3. Verify creds before scanning — should return >0 series count
curl -s -u "$PROMETHEUS_USERNAME:$PROMETHEUS_API_KEY" \
  "$PROMETHEUS_ENDPOINT/api/v1/label/__name__/values" | jq '.data | length'

# 4. Run the scan (10-min lookback, 2.0 DPM minimum, top output)
./dpm-finder.py -f json -m 2.0 -t 8 --timeout 120 -l 10

# 5. Read the result — top 10 metrics by DPM
jq -r '.metrics | sort_by(-.dpm) | .[:10][] | "\(.dpm)\t\(.series_count)\t\(.metric_name)"' metric_rates.json

手順 5 の結果が空の場合は、-m の値を小さくするか、エンドポイント URL の .net 以降にパスが付いていないことを確認してください。

gcx でスタックの詳細を確認する

gcx がインストールされている場合は、エンドポイントとユーザー名を取得できます。

gcx config check          # active stack context
gcx config list-contexts  # all configured stacks
gcx config view           # full config with endpoints

Prometheus エンドポイントのパターンは https://prometheus-{cluster_slug}.grafana.net です。ユーザー名は数値のスタック ID です。

gcx を使わない場合は、Grafana Cloud ポータルで確認するか、使用状況データソースで grafanacloud_instance_info{name=~"STACK_NAME.*"} をクエリします。

複数スタックの実行

GCloud のレート制限を避けるため、同時に実行するのは最大 3 件にしてください。スタックをバッチに分け、各バッチの完了を待ってから次のバッチを実行します。

結果の解釈

  • DPM = そのメトリクスの系列全体における、1 分あたりのデータポイント数の最大値
  • series_count = そのメトリクスのアクティブな時系列の数
  • series_detail[](JSON/テキストのみ)= ラベルの組み合わせごとの DPM の内訳です。問題の原因となっているラベルを特定するために使用します
  • DPM の降順で並べ替えると、ノイズの多いメトリクスが分かります。--cost-per-1000-series と組み合わせると、コストに基づいて優先順位を付けられます

トラブルシューティング

  • 401 / 403 — API キーが無効か、metrics:read が設定されていません。PROMETHEUS_USERNAME が数値のスタック ID であることを確認してください
  • タイムアウト — 数千のメトリクスがあるスタックでは、--timeout を 120 以上に増やしてください
  • HTTP 422 — メトリクスに集約ルールが設定されています。ツールが警告を表示し、自動的にスキップします
  • 結果が空 — -m の値を小さくしてください。エンドポイントに末尾のパスがないことを確認してください
  • 接続エラー — 指数バックオフで最大 10 回再試行します。失敗が続く場合は、通常ネットワークまたはファイアウォールが原因です

参考資料

  • references/cli.md — フラグの完全なリファレンス、出力形式の詳細、エクスポーターモード、Docker の実行方法、自動除外ルール、再試行の動作

リソース

コメント