后端与接口
Grafana Cloud 账单过高或…
当需要定位 Grafana Cloud/Mimir 中推高费用的高 DPM、高基数 Prometheus 指标时,用 dpm-finder 排名并生成按 series/label 的成本明细。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
Grafana Cloud 账单过高或 特定
解决思路
- 准备 Python 3.9+ 环境;需要 Grafana Cloud Prometheus endpoint URL、数字 stack ID、以及具有 metrics:read scope 的 API key(glc_…)。
- 克隆仓库:`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`。
- 复制 `.env_example` 为 `.env`,填写 `PROMETHEUS_ENDPOINT`(形如 `https://prometheus-<cluster_slug>.grafana.net`,`.net` 后不能有任何路径)、`PROMETHEUS_USERNAME`(数字 stack ID)、`PROMETHEUS_API_KEY`(`glc_…`)。
- 扫描前验证凭据:`curl -s -u "$PROMETHEUS_USERNAME:$PROMETHEUS_API_KEY" "$PROMETHEUS_ENDPOINT/api/v1/label/__name__/values" | jq '.data | length'`,应返回大于 0 的 series count。
- 运行一次性分析:`./dpm-finder.py -f json -m 2.0 -t 8 --timeout 120 -l 10`(10 分钟 lookback、最低 2.0 DPM、top 输出)。
- 读取结果:`jq -r '.metrics | sort_by(-.dpm) | .[:10][] | "\(.dpm)\t\(.series_count)\t\(.metric_name)"' metric_rates.json`,得到按 DPM 排名前 10 的指标。
- 若上一步结果为空,降低 `-m` 阈值,或确认 endpoint URL 在 `.net` 之后没有多余路径。
- 若已安装 gcx,可用 `gcx config check` 查看当前 active stack context。
- 用 `gcx config list-contexts` 列出所有已配置 stack。
- 用 `gcx config view` 查看包含 endpoint 的完整配置;Prometheus endpoint 模式为 `https://prometheus-{cluster_slug}.grafana.net`,用户名为数字 stack ID。
- 没有 gcx 时,在 Grafana Cloud portal 中查找,或在 usage datasource 上查询 `grafanacloud_instance_info{name=~"STACK_NAME.*"}`。
- 多 stack 运行时,最多并发 3 个,避免 GCloud 限流;将 stack 分批,每批完成后再跑下一批。
- 解读结果:DPM = 该指标各 series 中每分钟最大数据点数量。
- 解读结果:series_count = 该指标的活跃 time-series 数量。
- 解读结果:series_detail[](仅 JSON / text 输出)提供按 label 组合的 DPM 明细,用于定位有问题的 label。
- 按 DPM 降序排序可找到最吵的指标;结合 `--cost-per-1000-series` 可按花费优先级排序。
- 遇到 401 / 403:检查 API key 是否无效或缺少 `metrics:read`;确认 `PROMETHEUS_USERNAME` 是数字 stack ID。
- 遇到超时:对包含数千指标的 stack 将 `--timeout` 提高到 120+。
- 遇到 HTTP 422:指标有 aggregation rules;工具会警告并自动跳过。
- 遇到空结果:降低 `-m`;确认 endpoint 没有尾部路径。
- 遇到连接错误:工具会用指数退避最多重试 10 次;持续失败通常是网络/防火墙问题。
- 需要完整 flag 参考、输出格式细节、exporter mode、Docker 调用、自动排除规则、重试行为时,查阅 `references/cli.md`。
- 工具源码在 https://github.com/grafana-ps/dpm-finder,gcx 在 https://github.com/grafana/gcx。
适用边界 · 注意事项
- 不适用于非 Grafana Cloud / Mimir / Prometheus 指标成本或基数排查;没有 Grafana Cloud Prometheus endpoint、数字 stack ID 及 metrics:read API key 时无法使用。
- 不适用于只想查询单个指标值、告警调试或一般 PromQL 分析;它目标是按 DPM/成本排名排查高开销指标。
- 没有 Python 3.9+ 或无法安装/运行该外部 CLI 的环境,不宜使用。