我正在使用自定义python应用程序使用从Kafka到普罗米修斯的各种度量标准。指标需要在相同的时间(毫秒)内消耗。我只能成功地从下面的示例中提取最后一个度量,因为前三个度量立即被覆盖。
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配置中的抓取间隔,但这与解决方案的整个想法背道而驰。
除了我完全不知道的建议之外,普罗米修斯是否可以在标签值不同的地方保留相同的度量标准?我在这里找到的唯一讨论没有答案:https://github.com/prometheus/pushgateway/issues/65.
如果无法实现上述功能,我能否稍后在Prometheus/Grafana中以某种方式合并/加入/合并度量名称,以便能够根据它们的标签与它们一起工作?意思是删除上面示例中不必要的结尾以将所有内容作为一个指标进行处理?
您可以使用标签组合或某些唯一值更改Push网关作业名称。因此prometheus可以抓取您的所有指标,并且它们不会被其他人覆盖。
在您的情况下,如果您将:my_metric{labelA="aaa", labelB="111"} 8
导出到名为some_job_aaa_111
的作业。
您可以手动测试推送某些指标:echo“my\u metric{labelA=\“aaa\”,labelB=\“111\”}8“\124; curl--数据二进制@-http://localhost:9091/metrics/job/some_job_aaa_111代码>
在普罗米修斯pushgateway中,您将看到下一个:
在Prometheus中,推送网关作业变成了一个您可以轻松忽略的标签,例如Prometheus的下一个输出:
另一种解决方案:使用prometheus.yml
上的scrape_interval
属性使抓取操作更频繁地重复。如果您基于分钟,请将其转换为秒或毫秒以避免竞争条件。
- job_name: 'pushgateway'
honor_labels: true
scrape_interval: 50ms
metrics_path: /metrics
static_configs:
- targets:
- localhost:9091
在推送到推送网关时,您还可以使用不同的分组键(并且看起来比为作业名称使用相同的前缀和不同的后缀更好)