Prometheus - 具有不同标签的相同指标在抓取之前被覆盖

Jon*_*s S 5 python grafana 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**
Run Code Online (Sandbox Code Playgroud)

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

my_metric_aaa_111{labelA = "aaa", labelB = "111"} 8
Run Code Online (Sandbox Code Playgroud)

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

我还可以连续推送要抓取的指标并降低 Prometheus 配置中的抓取间隔,但这违背了解决方案的整体理念。

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

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

Asi*_*mez 4

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

在您的情况下,如果您将:导出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 的下一个输出:

普罗米修斯职位