PromQL 变量设置
使用场景
PromQL 变量设置主要应用于以下场景:
差异化监控配置
- 对不同重要程度的机器设置不同的告警阈值
- 针对特定设备组设置专门的监控规则
灵活的监控范围调整
- 快速切换监控目标设备
- 动态调整监控规则的覆盖范围
批量规则管理
- 使用同一个规则模板,通过变量适配不同环境
- 减少重复配置,提高规则维护效率
什么是变量?
在告警规则上下文中,变量是指那些可以在定义告警查询条件时被引用、但在实际触发告警时其值会被特定信息替换掉的占位符。使用变量可以让告警消息变得更加具体和个人化,同时也使得单个告警模板能够适应多种情况下的不同需求。
支持的类型
- 机器标识变量
在某些场景,如果只想对某些网络设备进行监控,这个时候,可以使用机器标识变量
定义好变量名称之后,可以在 promql 查询条件中,使用 $ident 作为占位符,在查询之前,将变量替换为上面机器标识筛选到的机器
mem_available_percent{ident="$ident"}>80
- 网络设备变量
在某些场景,如果只想对某些网络设备进行监控,这个时候,可以使用网络设备变量
定义好变量名称之后,可以在 promql 查询条件中,使用 $ip 作为占位符,在查询之前,将变量替换为上面筛选到的网络设备
snmp_icmp_packet_loss{agent_host="$ip"}>0
- 阈值变量:
在某些场景,我们管理了一批机器,其中有几台机器比较特殊,告警阈值和其他机器不同,此时可以使用阈值变量,给特殊的机器配置不同的阈值,如下图所示
上面配置中,业务组为 Default Busi Group 的机器,阈值都是 80,如果在这个业务组的某两台机器,我们想设置特殊的阈值,可以在查询条件下面添加 变量筛选,机器标识选择这两台机器,阈值设置为 90,这个只有这两天机器的阈值是 90,其他机器是 80
- 枚举值变量
有些场景,对于某个标签,只想对某几个值进行监控,可以使用枚举值