Dpm Finder
Grafana LabsOfficialPublished by Grafana Labs
- Skill
- Tool integration
- Cloud and DevOps
- Apache-2.0
- Low risk
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
dpm-finder is a specialized command-line interface designed to help users analyze their Prometheus metric usage within Grafana Cloud. By calculating Data Points per Minute (DPM) and providing a per-label-set breakdown, it enables administrators to pinpoint noisy or high-cardinality metrics that contribute most to their cloud spend. The tool supports multiple output formats, optional cost estimation, and an exporter mode for continuous monitoring.
What it does
- Ranks Prometheus metrics by Data Points per Minute (DPM).
- Provides granular per-label-set breakdowns to identify specific high-cardinality offenders.
- Calculates estimated costs when provided with pricing parameters.
- Supports multiple output formats including CSV, JSON, and Prometheus exposition format.
- Includes an exporter mode to serve metrics for ongoing monitoring.
- Automatically excludes internal Grafana metrics and those with existing aggregation rules.
When to use it
- When investigating unexpectedly high Grafana Cloud bills.
- When hunting for noisy or high-cardinality metrics impacting system performance.
- When comparing metric cardinality before and after implementing recording rules.
- When you need to feed cost data into custom dashboards for better visibility.
Advantages
- Directly links metric usage to potential billing drivers.
- Simplifies the identification of specific label combinations causing high cardinality.
- Flexible integration options via CLI, Docker, or Prometheus exporter mode.
- Built-in retry logic and exponential backoff to handle API rate limits.
Usage examples
- “Find the top 10 metrics by DPM in my Grafana Cloud instance.”
- The tool scans the instance and outputs a list of the 10 most active metrics, showing their DPM and series count.
- “How can I estimate the cost of my high-cardinality metrics?”
- Running the tool with the --cost-per-1000-series flag adds an estimated_cost column to the output report.
- “Run dpm-finder as a Prometheus exporter.”
- The tool starts a local server on port 9966, exposing metric analysis data for collection by other monitoring tools.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/grafana/dpm-finder/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip dpm-finder.zip -d .agents/skills
Documentation by Grafana Labs
dpm-finder
Grafana PS tool ranking Prometheus metrics by DPM with per-series breakdown. Source: https://github.com/grafana-ps/dpm-finder
Prerequisites
Python 3.9+
A Grafana Cloud Prometheus endpoint URL + numeric stack ID + API key (
glc_…,metrics:readscope)
Common Workflows
One-shot analysis (most common)
# 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.jsonIf step 5 is empty, lower -m or confirm the endpoint URL has no trailing path after .net.
Discover stack details with gcx
If gcx is installed it can derive the endpoint + username:
gcx config check # active stack context
gcx config list-contexts # all configured stacks
gcx config view # full config with endpointsThe Prometheus endpoint pattern is https://prometheus-{cluster_slug}.grafana.net. Username is the numeric stack ID.
Without gcx: look up in the Grafana Cloud portal, or query grafanacloud_instance_info{name=~"STACK_NAME.*"} on the usage datasource.
Multi-stack runs
Limit to max 3 concurrent runs to avoid GCloud rate limits. Batch the stacks and wait for each batch before the next.
Interpreting results
DPM = max data points per minute across that metric's series
series_count = active time-series count for that metric
series_detail[] (JSON / text only) = per-label-combination DPM breakdown — use this to spot the offending label
Sort by DPM descending → noisiest metrics; combine with
--cost-per-1000-seriesto prioritize by spend
Troubleshooting
401 / 403 — API key invalid or missing
metrics:read; confirmPROMETHEUS_USERNAMEis the numeric stack IDTimeouts — bump
--timeoutto 120+ for stacks with thousands of metricsHTTP 422 — metric has aggregation rules; tool warns + skips automatically
Empty results — lower
-m; verify endpoint has no trailing pathConnection errors — exponential backoff retries up to 10 times; persistent failure usually = network/firewall
References
references/cli.md— full flag reference, output-format details, exporter mode, Docker invocation, auto-exclusion rules, retry behavior
Resources
Files
- ATTRIBUTION.mdAdded by AutoGineer841 B
- LICENSELicence file added by AutoGineer11.1 KiB
- SKILL.md3.8 KiB
- references/cli.md1.8 KiB
references/cli.md
dpm-finder CLI flags
| Flag | Default | Description |
|---|---|---|
-f, --format | csv | Output format: csv, text, txt, json, prom |
-m, --min-dpm | 1.0 | Minimum DPM threshold to include a metric |
-t, --threads | 10 | Concurrent processing threads |
-l, --lookback | 10 | Lookback window in minutes |
--timeout | 60 | API request timeout (s). Bump to 120+ for large stacks. |
--cost-per-1000-series | (none) | Adds estimated_cost column |
-q, --quiet | false | Suppress progress output |
-v, --verbose | false | Debug logging |
-e, --exporter | false | Run as Prometheus exporter |
-p, --port | 9966 | Exporter port |
-u, --update-interval | 86400 | Exporter refresh interval (s) |
Output formats
Files write to the current working directory.
csv→metric_rates.csv— columns:metric_name,dpm,series_count(+estimated_costif priced)json→metric_rates.json— includesseries_detail[]per-label DPM breakdown +performance_metricstext→metric_rates.txt— human-readableprom→metric_rates.prom— Prometheus exposition for Alloy textfile collector
Exporter mode
./dpm-finder.py -e -p 9966 -u 86400Serves http://localhost:PORT/metrics, recalculates every -u seconds.
Docker
docker build -t dpm-finder:latest .
docker run --rm --env-file .env -v $(pwd)/output:/app/output \
dpm-finder:latest --format json --min-dpm 2.0Auto-excluded metrics
Histogram/summary components:
*_count,*_bucket,*_sumGrafana internals:
grafana_*prefixAnything with aggregation rules defined in the cluster (HTTP 422 → skipped + logged)
Retry behavior
Exponential backoff up to 10 retries; HTTP 429 backed off automatically; other 4xx not retried.
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs an API key, Needs a command-line tool, Needs Python
Security
What our scanner noticed· Low risk
- Instructions that use the network
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Published by
- Grafana Labs
- Publisher
- Grafana Labs (Official)
- Source
- grafana/skills · skills/grafana-cloud/dpm-finder · commit 8fb72a5
- Licence
- Apache License 2.0 (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Grafana Labs.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download dpm-finder.zip