PromQL 变量设置

使用场景

PromQL 变量设置主要应用于以下场景:

  1. 差异化监控配置

    • 对不同重要程度的机器设置不同的告警阈值
    • 针对特定设备组设置专门的监控规则
  2. 灵活的监控范围调整

    • 快速切换监控目标设备
    • 动态调整监控规则的覆盖范围
  3. 批量规则管理

    • 使用同一个规则模板,通过变量适配不同环境
    • 减少重复配置,提高规则维护效率

什么是变量?

在告警规则上下文中,变量是指那些可以在定义告警查询条件时被引用、但在实际触发告警时其值会被特定信息替换掉的占位符。使用变量可以让告警消息变得更加具体和个人化,同时也使得单个告警模板能够适应多种情况下的不同需求。

支持的类型

  1. 机器标识变量

在某些场景,如果只想对某些网络设备进行监控,这个时候,可以使用机器标识变量

机器标识变量

定义好变量名称之后,可以在 promql 查询条件中,使用 $ident 作为占位符,在查询之前,将变量替换为上面机器标识筛选到的机器

  1. mem_available_percent{ident="$ident"}>80
  1. 网络设备变量

在某些场景,如果只想对某些网络设备进行监控,这个时候,可以使用网络设备变量

网络设备变量

定义好变量名称之后,可以在 promql 查询条件中,使用 $ip 作为占位符,在查询之前,将变量替换为上面筛选到的网络设备

  1. snmp_icmp_packet_loss{agent_host="$ip"}>0
  1. 阈值变量

在某些场景,我们管理了一批机器,其中有几台机器比较特殊,告警阈值和其他机器不同,此时可以使用阈值变量,给特殊的机器配置不同的阈值,如下图所示

阈值变量

上面配置中,业务组为 Default Busi Group 的机器,阈值都是 80,如果在这个业务组的某两台机器,我们想设置特殊的阈值,可以在查询条件下面添加 变量筛选,机器标识选择这两台机器,阈值设置为 90,这个只有这两天机器的阈值是 90,其他机器是 80

  1. 枚举值变量

有些场景,对于某个标签,只想对某几个值进行监控,可以使用枚举值

枚举值变量