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

如何在Prometheus alert rules中使用条件运算符设置severity等级

Prometheus 告警规则按环境动态设置severity的实现方法

Prometheus 原生告警规则的labels字段不直接支持类if的条件判断语法,你可以通过以下两种常用方案实现需求:

方案1:拆分两条告警规则(最推荐,易维护易调试)

分别匹配生产和非生产环境,各自定义对应severity等级即可:

# 生产环境CPU高负载告警,级别critical
- alert: CPULoad_Prd
  expr: expression_used_to_check_load and env == "prd"
  for: 15m
  labels:
    severity: critical
  annotations:
    summary: 生产环境CPU负载过高
    description: "实例{{ $labels.instance }}CPU负载持续15分钟超过阈值"

# 非生产环境CPU高负载告警,级别warning
- alert: CPULoad_NonPrd
  expr: expression_used_to_check_load and env != "prd"
  for: 15m
  labels:
    severity: warning
  annotations:
    summary: 非生产环境CPU负载过高
    description: "实例{{ $labels.instance }}CPU负载持续15分钟超过阈值"

方案2:动态生成severity标签(适合不想拆分规则的场景)

用PromQL的label_replace函数结合布尔运算,动态给指标加上severity标签,可实现单条规则完成条件判断:

- alert: CPULoad
  expr: label_replace(
          expression_used_to_check_load,
          "severity", "critical", "env", "prd"
        ) or label_replace(
          expression_used_to_check_load,
          "severity", "warning", "env", ".+"
        )
  for: 15m
  annotations:
    summary: "{{ $labels.env }}环境CPU负载过高"
    description: "实例{{ $labels.instance }}CPU负载持续15分钟超过阈值"

注:该写法中or运算符会优先匹配前面的生产环境规则,生产环境匹配到critical标签后不会再走后面的非生产匹配,完全符合你需要的条件判断逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 02:09:03