dpm-finder について
dpm-finderは、Prometheusメトリクスのデータ量を調べるGrafana Cloudユーザー向けのPythonコマンドラインツールです。1分あたりのデータポイント数で順位付けし、系列ごとの内訳から負荷の高いラベルを特定できます。
主な機能
- 01DPMによるメトリクス順位付け
- 02アクティブな時系列数の表示
- 03ラベル組み合わせ別のDPM内訳
- 04推定コストによる優先順位付け
活用シーン
- 01データポイント数が多いメトリクスの特定
- 02高DPMの原因となるラベル組み合わせの調査
- 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 の実行方法、自動除外ルール、再試行の動作
リソース
コメント
Markdown 対応