首页 > 解决方案 > Prometheus - 在抓取之前覆盖具有不同标签的相同指标

问题描述

我正在使用自定义 python 应用程序使用从 Kafka 到 Prometheus 的各种计量指标。指标需要在越来越少的同一时间(毫秒)内使用。我只能从下面的示例中成功抓取最后一个指标,因为前三个会立即被覆盖。

my_metric{labelA = "aaa", labelB = "111"} 8
my_metric{labelA = "aaa", labelB = "222"} 12
my_metric{labelA = "bbb", labelB = "111"} 7
**my_metric{labelA = "bbb", labelB = "222"} 15**

我可以通过为它们设置一个唯一的指标名称获取所有四个指标,例如:

my_metric_aaa_111{labelA = "aaa", labelB = "111"} 8

但这似乎不是最佳实践,而且在 Grafana 后期使用此类指标通常非常困难。

我还可以连续推送指标以进行抓取,并降低 Prometheus 配置中的抓取间隔,但这与解决方案的整体理念背道而驰。

除了我完全不知道的建议之外 - 是否可以为 Prometheus 保留相同的指标以在只有标签值不同的情况下被抓取?我发现的唯一讨论在这里没有答案:https ://github.com/prometheus/pushgateway/issues/65 。

如果上述不可行,我可以稍后在 Prometheus/Grafana 中以某种方式合并/加入/组合指标名称,以便能够根据它们的标签使用它们吗?意思是删除上面示例中不必要的结尾_aaa_111以将所有内容都作为一个指标进行处理?

标签: pythongrafanaprometheus

解决方案


您可以使用标签组合或某些唯一值来更改 Pushgateway 作业名称。所以普罗米修斯可以刮掉你所有的指标,而且它们不会被其他人覆盖。

在你的情况下,如果你 export:my_metric{labelA = "aaa", labelB = "111"} 8到一个名为的工作,some_job_aaa_111.

您可以测试手动推送一些指标:echo "my_metric{labelA = \"aaa\", labelB = \"111\"} 8" | curl --data-binary @- http://localhost:9091/metrics/job/some_job_aaa_111

在 Prometheus pushgateway 中,您将看到以下内容:

Prometheus pushgateway 职位

在 Prometheus 中,pushgateway 作业变成了一个您可以轻松忽略的标签,例如 Prometheus 的下一个输出:

普罗米修斯职位


推荐阅读