日志服务 触发条件表达式

触发条件表达式用于判断是否触发告警。将执行语句结果作为触发表达式的输入变量,当表达式判断结果为真时触发告警。

相关产品
日志服务 产品页,含版本规格、价格与购买入口。

一、语法说明

运算符 说明 示例
$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 就需触发告警。

赞 (0)
上一篇 4天前
下一篇 4天前