后端与接口
Grafana Cloud Metrics 账单高或…
当出现 Mimir/Grafana Cloud 指标费用高、active series 爆炸、高基数标签(如 pod_uid、service_instance_id、version)或未使用指标时,用 Adaptive Metrics 预聚合和标签丢弃来降低计费序列数。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
Grafana Cloud Metric特定
解决思路
- 查看并应用自动推荐:用 `curl -s -H "Authorization: Bearer <KEY>" "https://adaptive-metrics.grafana.net/api/v1/recommendations" | jq '.recommendations[] | {metric_name, current_series, projected_series, estimated_reduction_percent}'` 拉取按序列削减影响排序的推荐列表。
- 为自动推荐捕获目标指标的基线序列数:用指标查询端点(basic auth,不是 Bearer key)执行 `curl -s -u "<metrics_user>:<metrics_token>" "https://prometheus-prod-XX.grafana.net/api/prom/api/v1/query?query=count({__name__=\"process_cpu_seconds_total\"})" | jq '.data.result[0].value[1]'`,得到如 "12480"。
- 应用推荐(或在 UI 中点击 Apply):`curl -s -X POST -H "Authorization: Bearer <KEY>" "https://adaptive-metrics.grafana.net/api/v1/recommendations/<ID>/apply"`。
- 等待约 5 分钟并验证:重新运行 count 查询,预期大幅下降;同时检查节省指标 `grafanacloud_instance_active_series_dropped_by_aggregation_rules`。
- 回滚自动推荐:先列出规则 `curl -s -H "Authorization: Bearer <KEY>" "https://adaptive-metrics.grafana.net/api/v1/rules" | jq '.rules[] | {id, metric_name}'`,再删除规则 `curl -s -X DELETE -H "Authorization: Bearer <KEY>" "https://adaptive-metrics.grafana.net/api/v1/rules/<RULE_ID>"`;或在 UI 中进入 Rules → 对应行 → Disable。
- 手写自定义规则前先做安全检查:确认指标没有与要丢弃的标签一起用于仪表盘/告警,执行 `grep -r 'process_cpu_seconds_total' dashboards/ alerts/ | grep -E 'version|go_version'`;预期无命中,表示可安全丢弃。
- 创建自定义规则:`curl -s -X POST -H "Authorization: Bearer <KEY>" -H "Content-Type: application/json" "https://adaptive-metrics.grafana.net/api/v1/rules" -d '{"rules":[{"metric_name":"process_cpu_seconds_total","match_type":"MATCH_TYPE_EXACT","drop_labels":["version","go_version"],"aggregations":[{"type":"AGGREGATION_TYPE_SUM"}]}]}'`。
- 验证自定义规则:用与上面相同的 `count()` 查询,序列数应在 5 分钟内下降;完整 payload(regex match、aggregation types、所有注意事项)见 `references/api.md`。
- 完全丢弃未使用指标:先用 `curl -s -H "Authorization: Bearer <KEY>" "https://adaptive-metrics.grafana.net/api/v1/usage-analysis?filter=unused" | jq '.metrics[] | {metric_name, series_count, last_queried}'` 列出未使用指标。
- 确认未使用指标未被引用:执行 `grep -r '<METRIC_NAME>' dashboards/ alerts/ recording-rules/`。
- 在 Alloy 中添加 `write_relabel_config` drop 来丢弃该指标(完整块见 `references/api.md`),然后重载 Alloy:`curl -X POST http://localhost:12345/-/reload`。
- 验证未使用指标已消失:约 10 分钟后执行 `curl -s -u "<metrics_user>:<metrics_token>" 'https://prometheus-prod-XX.grafana.net/api/prom/api/v1/label/__name__/values' | jq '.data | index("<METRIC_NAME>")'`,应为 `null`。
- 测量影响:用 PromQL 查询总 active series(计费单位)`grafanacloud_instance_active_series`。
- 测量影响:用 PromQL 查询被 Adaptive Metrics 规则丢弃的序列 `grafanacloud_instance_active_series_dropped_by_aggregation_rules`。
- 规则约 5 分钟生效;完整计费影响在 1 小时内出现;原始高基数样本仍会流入,但被丢弃的标签不再计入计费。
适用边界 · 注意事项
- 不适用于没有 Grafana Cloud Metrics 付费计划、没有具备 `metrics:write` 的 API key,或无法访问 Home → Adaptive Metrics 的情况。
- 不适用于无法用具备 `metrics:read` 的 basic auth(`<metrics_user>:<metrics_token>`)执行验证查询的情况;Adaptive Metrics API 用 Bearer key,而指标查询端点不用 Bearer key。
- 如果无法访问 Alloy 或不能重载 Alloy,则不能执行通过 `write_relabel_config` 完全丢弃未使用指标的兜底做法。