ES日志告警规则

es001

日志类型和常规的指标告警规则非常相似,其唯一的区别在于告警条件的设置。指标告警规则使用 PromQL 作为查询条件,而日志类型的告警规则则使用布尔表达式作为查询条件。这些告警条件(如 A、B 等)需要通过查询统计来获取。

在配置查询统计时,会发现它和 ES日志即时查询 类似,先选择索引和查询条件以及日期字段,还有两个额外的数据字段组:数值提取和 Group By。

es002

为了获得数值类型的结果,需要使用数值提取,选择适当的统计函数。除了常见的 count、sum、avg、min、max 等函数外,还支持一些百分位值函数,如 p90、p95、p99。

此外,通过配置 Group By,可以根据特定字段对结果进行分组。这将生成多个时间序列,并在满足告警条件的情况下产生多个异常点,从而生成多条告警事件。

例子1:HTTP CODE 为4xx的告警条件

说明:在每10分钟的时间段内,检查日志中的 message 字段。如果4xx的日志数量超过2次,产生告警,并且按照 host.hostname 字段进行分组统计,配置方式如下

es003

例子2:接口耗时大于1秒时触发告警

说明:根据 http_method 分组统计某个请求接口耗时大于1秒,配置方式如下

es004

例子3:request_time 大于1900ms,匹配日志超过10条时触发告警

说明:在每2分钟的时间段内,筛选出 request_time 大于1900ms 的日志。按 request_uri 维度进行分组,检查日志数量是否超过10条,配置方式如下

es005

在配置完成所需的数据字段后,还可以通过数据预览按钮来预览查询结果。

es006