You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Pushgateway接收的指标保留原始生成实例的job与instance标签

核心原因

Prometheus默认抓取目标时,若指标自带的标签与当前抓取任务的目标标签(此处就是push-gateway任务的job=push-gateway、instance=localhost:9091)冲突,会自动给指标自带的同名标签加上exported_前缀,避免覆盖抓取任务的标签。
要实现自定义指标和原虚拟机标签一致,有两种常用方案:


方案1:开启honor_labels配置(更简单,推荐)

直接修改Prometheus中push-gateway的抓取配置,添加honor_labels: true参数,开启后Prometheus会优先保留指标本身携带的标签,不会追加前缀也不会用抓取任务的标签覆盖:

- job_name: 'push-gateway'
  static_configs:
  - targets: ['localhost:9091']
  honor_labels: true

配置修改后重载Prometheus,后续从各个虚拟机推送指标到Pushgateway时,只要给指标附带的job、instance标签值和WMI exporter自动发现的对应虚拟机标签值完全一致,抓取后的标签就会和虚拟机原生标签匹配,直接使用原有Grafana变量即可筛选。


方案2:通过 relabel 规则重写标签(适合需要避免标签冲突的场景)

如果不想全局开启honor_labels,可以通过指标重打标签的规则,把自动生成的exported_job、exported_instance覆盖到原来的job、instance标签上,再删除多余的前缀标签:

- job_name: 'push-gateway'
  static_configs:
  - targets: ['localhost:9091']
  metric_relabel_configs:
  # 用exported_job覆盖job标签
  - source_labels: [exported_job]
    target_label: job
    action: replace
  # 用exported_instance覆盖instance标签
  - source_labels: [exported_instance]
    target_label: instance
    action: replace
  # 删除多余的exported_前缀标签
  - regex: 'exported_job|exported_instance'
    action: labeldrop

这个方案不需要修改推送侧的逻辑,只要你推送指标时已经附带了正确的job、instance标签即可生效。


内容的提问来源于stack exchange,提问作者Python_Rookie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 12:48:05