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

如何在Prometheus中修改时间序列的标签值?

在Prometheus中修改已有指标的标签值是否可行?

问题背景

现有指标:

test_gauge{name="name_value",test_label="qwerty"} 12

希望将标签值name_value替换为renamed_value,qwerty替换为renamed_qwerty,得到:

test_gauge{name="renamed_value",test_label="renamed_qwerty"} 12

解答

PromQL本身不支持直接修改已存储的时序数据的标签值,因为Prometheus的设计定位是专注于时序数据的写入与查询,原生不提供数据修改/更新的能力。不过可以通过以下几种方式实现类似需求:

1. 从数据源端直接修改

如果能控制指标的生成逻辑(比如客户端Exporter、自定义埋点脚本),直接在指标生成阶段替换目标标签值,这是最直接有效的方案。例如修改Exporter的配置或代码,让它直接输出带有renamed_value和renamed_qwerty的标签。

2. 写入阶段用Relabeling规则处理

如果无法修改数据源,可以在Prometheus的scrape_configs中添加relabel_configs,在数据写入存储前完成标签值替换。示例配置:

scrape_configs:
  - job_name: 'your_target_job'
    static_configs:
      - targets: ['your_target_address:port']
    relabel_configs:
      # 替换name标签的指定值
      - source_labels: [name]
        regex: 'name_value'
        replacement: 'renamed_value'
        target_label: name
      # 替换test_label标签的指定值
      - source_labels: [test_label]
        regex: 'qwerty'
        replacement: 'renamed_qwerty'
        target_label: test_label

注意:该规则仅对配置生效后新写入的数据起作用,已存储的历史数据不会被修改。

3. 查询阶段用Recording规则生成新指标

如果只需要在查询时展示修改后的标签值,可以通过Recording Rule生成一个带有新标签值的指标系列。示例规则:

groups:
  - name: label_rename_rules
    rules:
      - record: test_gauge_renamed
        expr: test_gauge{name="name_value", test_label="qwerty"}
        labels:
          name: renamed_value
          test_label: renamed_qwerty

执行后会生成新指标test_gauge_renamed,包含目标标签值,但原始的test_gauge数据仍会保留。

总结

Prometheus原生不支持修改已存储的历史数据标签值,只能通过上述方案处理新数据或生成新的指标系列来满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 05:46:13