本文介绍使用评估表达式设置触发条件的注意事项、限制等信息。

日志服务支持您在配置触发告警的条件时使用评估表达式。例如您配置触发条件有数据匹配和评估表达式,则表示查询和分析结果中存在数据满足评估表达式就触发告警。您可以在评估表达式使用动态变量、操作符和逻辑符等。评估表达式的语法信息,请参见评估表达式语法

配置说明

告警监控规则在评估集合操作结果时,如果集合操作结果满足触发条件,就表示评估通过,生成一条告警。触发条件包括如下选项:
  • 有数据:对集合操作结果中的数据条数进行判断,只要有1条数据,就满足触发条件。
  • 有特定条数据:对集合操作结果中的数据条数进行判断,支持的运算符包括大于、小于、等于等。当有特定条数据时,满足触发条件。例如集合操作结果中有4条数据,触发条件为有特定条数据>10条,则表示集合操作结果未满足触发条件,不会生成告警。
  • 有数据匹配:对集合操作结果中的数据内容进行判断,只要有1条数据的内容匹配评估表达式,就满足触发条件。例如集合操作结果为1条数据(pv=900),触发条件为有数据匹配,pv > 1000,则表示集合操作结果未满足触发条件,不会生成告警。
  • 有特定条数据匹配:对集合操作结果中的数据条数和数据内容进行判断。当有特定条数据的内容匹配评估表达式时,才会触发告警。例如集合操作结果中有4条数据(pv=900、pv=1100、pv=1200、pv=1001),触发条件为有特定条数据>3条,pv > 1000,则表示集合操作结果满足触发条件,生成告警。
触发条件

变量说明

说明 评估查询和分析结果是对集合操作(例如笛卡尔积、左联等)后的最终集合结果进行评估。
  • 如果多个查询和分析结果中不含重复字段,则在评估表达式中引用字段时,可以不加$0、$1、$2等前缀。例如name == 'sls'
  • 如果多个查询和分析结果中含重复字段,则在评估表达式中引用字段时,必须加$0、$1、$2等前缀。例如$0.name == 'sls' || $1.name == 'ecs'

    更多信息,请参见多集合操作机制

类别 子类 说明
日志 无SELECT语句 仅使用查询语句进行查询操作。

设置触发条件表达式时可引用查询结果中的字段。

使用SELECT * FROM log 设置触发条件表达式时可引用所有已开启统计功能的字段。
使用SELECT子查询(包含SELECT * FROM (SELECT...)) 设置触发条件表达式时可引用SELECT子查询中的字段。
时序数据 使用SELECT promql(...) 通过promql_query(string)、promql_query_range(string, string)函数返回固定字段metric、labels、time和value。其中日志服务会将labels字段按照Map格式展开。

设置触发条件表达式时可引用metric、labels、time、value字段以及labels字段中的子字段。

使用SELECT a, b FROM (SELECT promql(...)) 设置触发条件表达式时可引用所有已开启统计功能的字段。
使用SELECT * FROM log 设置触发条件表达式时可引用所有已开启统计功能的字段。
资源数据 资源数据中的字段只支持简单类型(例如字符串,浮点数,数字),不支持复杂类型(例如JSON)。

设置触发条件表达式时可引用资源数据中的字段ID。

配置示例

  • 示例1:如果1天(相对)内任务成功率低于90%且延时超过60秒则触发告警。

    设置触发条件有数据匹配success < 90 && delay > 60

    触发条件
  • 示例2:如果15分钟内出现500错误10次则触发告警。

    设置触发条件有数据匹配status == 500 && total > 10

    示例