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

PromQL如何将指标值转为新标签并批量匹配指标值?

解决方案指引

方案1:简化PromQL表达式(无需额外配置)

直接利用vector()和bool运算符简化多OR条件,最终表达式如下:

task_code{pod="foobar"} == bool (vector(9) or vector(15) or vector(29))

当指标值匹配9、15、29中的任意一个时,表达式返回1(触发告警),否则返回0。如果需要明确判断存在匹配项,也可以用exists包裹:

exists(task_code{pod="foobar"} == bool (vector(9) or vector(15) or vector(29)))

方案2:通过记录规则将指标值转为标签(适合频繁复用场景)

如果需要多次复用这类匹配逻辑,可以通过Prometheus的记录规则,预先把指标值转为标签,之后就能用标签正则匹配:

  1. 在Prometheus配置中添加记录规则:
groups:
- name: task_code_transform
  rules:
  - record: task_code_with_label
    expr: task_code{pod="foobar"}
    labels:
      code_val: '{{ $value }}'
  1. 重启Prometheus后,使用新生成的指标编写告警表达式:
task_code_with_label{pod="foobar", code_val=~"9|15|29"}

该方式将指标数值转为字符串类型的code_val标签,直接用标签正则匹配即可,逻辑更直观。

关于label_replace的说明

label_replace仅作用于现有标签,无法读取指标数值生成新标签,因此你之前的尝试无法成功,需通过上述记录规则的方式实现指标值转标签的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 14:21:08