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

如何配置Prometheus实现跨job的metrics标签合并关联

如何将job_2指标的标签添加到job_1的所有指标中

场景说明

我有两个Prometheus Job的配置:

- job: job_1
  static_configs:
    - targets: ['192.168.1.1:7777']
- job: job_2
  static_configs:
    - targets: ['192.168.1.1:8888']  

其中:

  • job_1包含多个指标,示例:kube_node_work{node:192.168.1.1,work_1:value_1....}
  • job_2的kube_node_home指标带有17个标签,示例:kube_node_home{instance:"192.168.1.1",home_1:value_2....}

需求是把kube_node_home的所有标签添加到job_1的所有指标中,最终效果示例:
kube_node_work{node:192.168.1.1,work_1:value_1,home_1:value_2....}

解决方案

跨Job的标签转移无法通过采集阶段的relabel_configs实现,必须借助**Prometheus记录规则(Recording Rules)**完成,具体步骤如下:

1. 统一关联标签(可选但推荐)

job_1用node标识节点,job_2用instance,为了通用关联,先给job_1的指标添加instance标签,修改job_1的采集配置:

- job: job_1
  static_configs:
    - targets: ['192.168.1.1:7777']
  relabel_configs:
  - source_labels: [node]  # 读取原node标签的值
    target_label: instance # 生成instance标签

修改后job_1的指标会同时拥有node和instance标签,和job_2的标签统一,方便后续关联。

2. 创建记录规则文件

新建规则文件(比如add_labels_rules.yaml),内容如下:

groups:
- name: add_job2_labels_to_job1
  rules:
  - record: kube_node_work_with_home_labels  # 新指标名称,可根据需求调整
    expr: >
      kube_node_work 
      * on(instance)  # 通过instance标签关联两个Job的指标
      group_left(home_1, home_2, ..., home_17)  # 列出job_2需要添加的所有标签名
      (kube_node_home{job="job_2"} * 1)  # 保持job_2指标值不变,作为关联数据源

注意:

  • 把home_1, home_2, ..., home_17替换成kube_node_home实际的17个标签名
  • 如果不需要逐个指定标签,可直接写group_left(),但要注意避免标签名冲突(比如job标签会覆盖job_1的原有job标签),这种情况建议还是逐个列出需要的标签。

3. 加载规则文件到Prometheus

在Prometheus主配置文件中添加规则文件路径:

rule_files:
  - "add_labels_rules.yaml"  # 确保路径和实际文件位置一致

4. 重启Prometheus

重启后等待规则生效,即可查询到带有job_2所有指定标签的新指标kube_node_work_with_home_labels。

如果需要直接覆盖原kube_node_work指标,可将record的值改为kube_node_work,但不建议这么做,保留原指标更利于问题排查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 05:43:17