You need to enable JavaScript to run this app.
导航

触发条件表达式

最近更新时间2023.11.13 16:31:23

首次发布时间2022.03.04 14:18:49

创建日志服务告警策略时,需要指定告警的触发条件表达式,日志服务根据触发条件表达式的执行结果判断是否满足告警条件。
判断触发条件表达式的执行结果时,表达式变量对应的告警策略中分析语句的执行结果将作为输入。如果判断触发条件表达式的执行结果为真,则触发告警。例如指定执行语句为 result:error | SELECT count(*) AS ErrCount,指定告警的触发条件表达式为 $1.ErrCount>0,表示出现 result 为 error 的日志时触发告警。

语法说明

告警触发条件表达式的语法格式为 $N.keyname,支持引用查询分析的结果。
其中:

  • N为对应的监控对象编号,最多支持 3 个监控对象。例如 $1.key 引用编号为 1 的查询中的 key 字段名。
  • keyname 为查询分析结果中的字段名,字段名支持字母、数字、下划线。推荐使用 AS 语法对分析结果设置别名,例如 SELECT count(*) AS ErrCount

当查询分析结果返回多个值时:

  • 根据表达式的变量来判断需要使用哪些结果求值。例如配置 A、B、C 共 3 个分析语句,表达式中仅配置 A 和 B 两个语句作为监控对象,表示判断表达式的值只需要使用 A 和 B 两个语句的分析结果。
  • 返回结果依次计算最多 1000 次,当计算结果为真(true)时停止。例如,表达式为 $1.key1+$2.key2>100,若分析语句 1 和 2 分别返回 x 和 y 条结果,则会进行 x*y 次计算。在计算过程中当结果满足 $1.key1+$2.key2>100 为真时告警、或计算达到 1000 次时停止计算不告警。

注意事项

  • 只有表达式判断为真(true)时,才会触发告警。例如,$1.key1+$1.key2 计算结果为 100,$1.key1+$1.key2 >100 不会触发,$1.key1+$1.key2 >=100 则会触发。
  • 若字段名含有特殊字符,需要用[]将引用变量括起来,[]内的变量会当作一个整体来处理。例如 [$1.process-time],其中 process-time 整体会被当作一个 key。
    特殊字符包括 + - / * & | ^ ** % >> << > >= < <= == != =~ !~ || && ! - ~ ? : ()
  • 数值类型将作为 64 位浮点数进行运算,对其使用等于、大于等比较操作可能出现误差。

支持的运算符

分类

运算符名称

运算符

示例

基础运算符

求和运算符

+

$1.key1+$1.key2>10

减法运算符

-

$1.key1-$1.key2>100

乘法运算符

*

$1.LatencyMs\*1000>10

除法运算符

/

$1.Distance/1000>10

取模运算符

%

$1.Column%10==0

比较运算符

等于

==

$1.Number==100
$1.Result=="Error"

大于

>

$1.Number>100

小于

<

$1.Number<100

大于等于

>=

$1.Number>=100

小于等于

<=

$1.Number<=100

不等于

!=

$1.Result != "error"

括号

小括号
控制运算优先级

()

($1.key1+$1.key2)/$1.key3>100

逻辑运算符

&&

$1.Number>100 && $1.Result=="Error"

||

$1.Number>100||$1.Result=="Error"

转义运算

转义运算

[]

[$1.process-time],其中 process-time 整体会被当作一个key。