一、语法说明
| 运算符 | 说明 | 示例 |
| $N.__QUERYCOUNT__ | 执行语句结果条数,N为对应的执行语句编号。针对不同使用场景,其具体含义如下:日志主题执行语句不包含 SQL:匹配检索条件的原始日志条数执行语句包含 SQL:SQL结果条数(注意:SQL 中未指定 limit 时,默认最大返回100条结果)指标主题:PromQL 查询结果条数 | $1.__QUERYCOUNT__ |
| $N.keyname | 引用执行语句的结果,N为对应的执行语句编号,keyname 为执行语句结果中的字段名称。注意:keyname 首字符必须是字母,可以包含字母、数字、下划线,如包含特殊字符:日志主题执行语句中支持使用 AS 语法 对字段名称设置别名使用方括号整体包裹,例如 [$1.@value]监控对象为指标主题时,除指标维度(label)外,系统预置如下变量:$N.__name__:指标的名称$N.value:指标的值$N.time:指标对应的时间,秒级 UNIX 时间戳指标维度(label)的字段名称如果与上述变量冲突,会在原字段名称前自动添加@符号,例如[$1.@value] | $1.ErrCount$1.value |
| + | 求和运算符 | $1.ErrCount+$1.FatCount>10 |
| – | 减法运算符 | $1.Count-$1.InfoCount>100 |
| * | 乘法运算符 | $1.RequestMilSec*1000>10 |
| / | 除法运算符 | $1.RequestSec/1000>0.01 |
| % | 取模运算符 | $1.keyA%10==0 |
| == | 比较运算符:等于 | $1.ErrCount==100$1.level=="Error" |
| > | 比较运算符:大于 | $1.ErrCount>100 |
| < | 比较运算符:小于 | $1.pv<100 |
| >= | 比较运算符:大于等于 | $1.ErrCount>=100 |
| <= | 比较运算符:小于等于 | $1.pv<=100 |
| != | 比较运算符:不等于 | $1.level!="Info" |
| () | 括号,控制运算优先级 | ($1.a+$1.b)/$1.c>100 |
| && | 逻辑运算符:与 | $1.ErrCount>100 && $1.level=="Error" |
| || | 逻辑运算符:或 | $1.ErrCount>100 || $1.level=="Error" |
·需使用比较运算符对变量进行比较,且结果需为布尔值且为“真”时才会触发告警。例如$1.a值为80,$1.b值为20时:
·表达式$1.a+$1.b:结果为100,不是布尔值,不触发告警。
·表达式$1.a+$1.b>=100:结果为“真”,触发告警。
·一个告警策略中可以设置多个执行语句(最多3个),每个执行语句有编号(从1开始依次递增),例如 $1.key1 引用编号为1的执行语句中的key1字段, $2.key2 引用编号为2的执行语句中的key2字段。
·监控对象为指标主题时,建议在执行语句中直接配置好告警条件,触发条件中直接使用$N.__QUERYCOUNT__ > 0即可(请将其中的 N 替换为执行语句编号),详见 示例3。
·当执行语句返回多个结果时,会根据返回结果依次计算1000次,判断其是否满足触发条件,当计算结果为真时停止。例如,表达式为 $1.a+$2.b>100,若执行语句1返回 m 条结果,执行语句 2 返回 n 条结果,则会进行 m * n 次计算,计算过程中当结果满足 $1.a+$2.b>100 为真时停止或计算超过1000次停止。超过1000次仍未满足触发条件时,认为本次判断结果为假,不触发告警。
二、示例1:【日志主题】当近5分钟出现 error 级别日志时触发告警
·监控对象:日志主题
·执行语句:
level:error
·查询时间范围:近5分钟
·触发条件:执行语句1的结果条数大于0
$1.__QUERYCOUNT__>0
三、示例2: 【日志主题】当某 VIP 用户(uid:10001)的请求平均延时大于10s 时触发告警
·监控对象:日志主题
·执行语句:
uid:10001 | select avg(request_time) as latency
·查询时间范围:近5分钟
·触发条件:执行语句1的 latency 大于10
$1.latency>10
四、示例3: 【指标主题】文件系统空间占用率大于 50% 时触发告警
·监控对象:指标主题
·执行语句:
filesystem_usage_pct > 0.5
·触发条件:执行语句1的结果条数大于0
$1.__QUERYCOUNT__>0
__QUERYCOUNT__为系统预置变量,表示执行语句的结果条数。执行语句中已经通过> 0.5对指标进行了过滤,所以只要执行语句的结果条数大于 0 就需触发告警。