分析和监控日志数据对于及时发现异常情况至关重要。其中,基于关键字触发告警是一种常见的监控告警方式,例如日志中出现目标关键字或出现的次数超过预期就触发告警,可帮助相关人员及时发现重要事件或异常情况。
在指定的时间范围内,日志中出现目标关键字即触发告警。例如参考如下示例创建告警策略,当日志中出现 error 就触发告警。
告警策略
重要配置示例如下,具体操作步骤及参数说明请参考创建告警策略。
执行语句
设置查询时间范围为 近 1 分钟,通过如下检索分析语句,统计 1 分钟内 error 出现的次数。count 值大于 0,表示日志中存在 error。
error | SELECT COUNT(*) AS count
触发条件
当 count 值大于 0 时,触发告警。条件表达式如下:
$1.count >0
告警通知[$1.count=2]
表示在指定的时间范围内出现了两次 error 关键字,因此触发了告警。
在指定的时间范围内,日志中出现目标关键字的次数超过指定次数时,触发告警。例如参考如下示例创建告警策略,当 1 小时内 error 出现的次数大于 10 次时,触发告警。
告警策略
重要配置示例如下,具体操作步骤及参数说明请参考创建告警策略。
执行语句
设置查询时间范围为近 1 小时,通过如下查询检索语句,计算 1 小时内 error 出现的次数。
error | SELECT COUNT(*) AS count
触发条件
当 count 值大于 10 时,触发告警。条件表达式如下:
$1.count >10
告警通知[$1.count=23]
表示在指定的时间范围内出现了 23 次 error 关键字,超过预期的 10 次,因此触发了告警。
当日志关键字的出现具有一定周期性变化(例如上午出现的概率明显较高)时,建议对比不同日期中同一时间段内关键字出现次数,并基于同比增长率触发告警。
告警策略
重要配置示例如下,具体操作步骤及参数说明请参考创建告警策略。
执行语句
设置查询时间范围为近1小时,通过如下查询检索语句计算同比增长率。其中,today
表示今天最近 1 小时内 error 关键词出现的次数,yesterday
表示昨天同时段内 error 关键词出现的次数,ratio
表示今天指定时间段内 error 关键字出现的次数同比昨天同时段的增长率。
说明
仅日志服务 2.0 架构支持 COMPARE 函数,详细说明请参考同比与环比函数。
error | SELECT diff [1] AS today, diff [2] AS yesterday, (diff [3]-1) * 100 AS ratio FROM ( SELECT COMPARE(cnt, 86400) AS diff FROM ( SELECT COUNT(*) AS cnt ) )
触发条件
当 ratio 值大于 10 时,触发告警。条件表达式如下:
$1.ratio >10
告警通知[$1.ratio=23.23728878709288]
表示今天指定时段内 error 关键字出现的次数同比昨天同时段增长 23.11...%,超过预期的 10%,因此触发了告警。