You need to enable JavaScript to run this app. 如何在Prometheus告警表达式中使用标签名编写触发条件
优惠活动
大模型
产品
解决方案
定价
更多

如何在Prometheus告警表达式中使用标签名编写触发条件

Prometheus告警规则报错问题解析

错误原因

  • 核心语法错误:expr 字段仅支持标准PromQL查询语句,不支持Go模板语法{{ }}。{{ $labels.xxx }}这类模板变量只能在告警规则的annotations、自定义labels字段中使用,直接写在查询表达式中会触发语法解析错误,就是你收到的unexpected left brace '{'报错的直接原因。
  • 逻辑错误:你的需求是「延迟超过100秒」和「SEVERITY标签等于CRITICAL」两个条件同时满足触发告警,表达式中错误使用了或运算符or,会导致只要满足任意一个条件就触发告警,不符合预期。同时单独将标签匹配作为表达式片段,也不符合PromQL的语法规范。

正确写法

直接在指标的标签筛选条件中指定SEVERITY匹配规则即可,不需要用到模板变量:

- alert: TestAppLatency
  expr: LATENCY{SEVERITY="CRITICAL"} > 100
  # 以下为告警规则常规补充配置,可按需调整
  for: 1m
  labels:
    severity: critical
  annotations:
    summary: "应用延迟超过阈值"
    description: "实例{{ $labels.instance }}当前延迟为{{ $value }}秒,超过100秒阈值"

如果你需要将两个条件分开写(比如多指标关联的场景),也可以用and运算符关联,效果完全一致:

expr: LATENCY > 100 and LATENCY{SEVERITY="CRITICAL"}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 17:24:03