多client向同一个pushgateway推送指标被覆盖问题
问题:
多个client向同一个pushgateway推送指标,每个client推送的指标名称相同但是lable不同。如下:
# TYPE ObjectCount gauge
ObjectCount{server_id="server1"} 4
ObjectCount{server_id="server2"} 4
ObjectCount{server_id="server3"} 0
推送地址如下:
http://192.168.0.1/metrics/job/test
结果从pushgateway处只能查询其中一个client推送的指标,推测时发生了覆盖。
原因:
根据官方文档描述
Pushed metrics are managed in groups, identified by a grouping key of any number of labels, of which the first must be the
job
label.
grouping key是这些metrics的唯一标识,grouping key实际上就是若干个label的组合。
也就是说上述指标都推送到http://192.168.0.1/metrics/job/test,会被pushgateway认为是同一组指标的多次推送,所以发生了覆盖。
解决:
每个client需要推送到独立的url上,即每个client的grouping key需要不一样。例如三个client的推送URL改为:
http://192.168.0.1/metrics/job/test/server_id/server1http://192.168.0.1/metrics/job/test/server_id/server2http://192.168.0.1/metrics/job/test/server_id/server3
问题便可迎刃而解
参考:
解决pushgateway数据多次推送会覆盖的问题_pushgateway 数据覆盖-CSDN博客
the same metric with different labels override each other · Issue #65 · prometheus/pushgateway · GitHub
GitHub - prometheus/pushgateway: Push acceptor for ephemeral and batch jobs.