
多个client,往同一台pushgateway推送数据时,采用同一个job名称,会发现始终只能留下一个client的数据,其他的会被覆盖
使用语言 python
分析通过抓包发现,所有数据均已推送到9091端口,所以排除是某个client推送的问题
代码push_to_gateway(pushgateway_url, job=job_name, registry=registry)
相当于推送到了 metrics/job/job_name
问题原因推送的指标按组进行管理,由任意数量标签的分组键标识,一般有Job跟instance,推送时候只指定Job的话,会误将几个server推送的数据当成同一组数据,出现覆盖的情况
所以应该在分组标识中加入该批数据的唯一标识,即推送的链接应该为该批数据的唯一指定存放位置,类似门牌号的概念。只用job的话相当于都推到同一个位置了。
解决推送到 metrics/job/job_name/instance/id即可
在这里可以推到 metrics/job/job_name/client/client_name
参照python库的用法
https://github.com/prometheus/client_python
改为下述代码即可成功推送
push_to_gateway(pushgateway_url, job=job_name, registry=registry,grouping_key={"client":client_name})