查看原文
其他

SLS智能告警入门——分组评估

览界 日志服务 2022-08-25

在智能告警中,我们可以使用查询分析语句来进行日志查询,并对结果集设置告警。其中,当我们希望对查询结果进行进一步的分组时,可以使用我们的分组评估功能。


基本概念

分组评估是告警监控规则中的一个参数。当告警监控系统对查询和分析结果进行计算时,可基于特定字段进行分组,每个分组单独评估触发条件并触发告警。即您可以使用一条告警监控规则同时监控多个目标,并对每个分组进行独立的告警管理和事件管理。


例如,我们的在时序库中存储了主机和 cpu 使用率的信息,通过查询返回一个包含 IP 和 CPU 字段的结果集,如下图:



这时候我们设置告警的评估条件为 CPU > 80, 那么在任何一台主机的 cpu > 80 的时候,都会触发告警,若只是想要这样的效果,那么到这里就可以了。


但这时候我们无法对不同的 ip 做不同的处理,如果想要更进一步,例如由于主机的归属不同,告警的时候想要通知不同的接受人,那么就需要进行分组评估了。对 ip 进行分组之后。告警的评估条件会对每个分组进行单独评估,最后根据评估结果进行告警。同时,分组的字段会自动加入 label 中,提供给之后的行动策略作为判断条件。


简单来说,如果我们不使用分组评估功能,而想要根据查询结果的某个字段进行分组,并分别通过不同渠道告警,那么只能通过在查询语句中添加 group 语句,并创建多个告警来实现了。



使用场景示例:

CPU使用率

多个服务器的指标数据存储在一个时序库中,但希望每个服务器的CPU使用率(cpu_util)超过95%时,日志服务可以分开发送每个服务器的告警信息。针对此需求,您可以在创建告警监控规则时设置分组评估。



在时序库中,选择我们要查询的指标 cpu_util,这时会自动帮我们填入对应的查询语句

* | select promql_query_range('cpu_util')  

from metrics limit 1000

点击“另存为告警”按钮



这时会打开新建告警界面,并会自动将刚才的查询语句引入



点击语句输入框,可以查看详情



可以看到项目,指标库等详细信息,并可以对查询语句进行修改,点击预览可以查看数据图表



返回刚才的界面,设置好告警触发的条件为“有数据匹配” value > 95,这里 value 即是指 cpu_util 的值



默认情况下,使用时序库时,分组评估会自动选择“标签自动”选项,在该选项下,会自动对时序指标进行分组。



如果选择不分组,那么在当前状况下,任意一台或者多台主机的 cpu 大于 95 都会触发一次告警。



如果我们选择标签自定义,并选择 ip 字段,那么每次评估有一台主机满足条件会触发一次告警,有多台同时满足的话,就会触发多条告警。如果想要给不同的主机设置不同的告警接收人,需要配合行动策略进行设置。



在行动策略编辑时,可以指定条件和行动组,如下图,




如之前所说,用于分组评估的字段会被加到标签中,所以这里就指定了 ip 作为条件,并指定对应的接收人。将行动策略保存之后,在告警编辑页面进行选择就可以完成全部的告警设置。


监控OSS访问日志

监控OSS访问日志时,希望每分钟发生500错误超过1000次的Bucket可以分开告警。针对此需求,您可以在创建告警监控规则时设置分组评估。


在查询框中输入 http_status=500 可以查询所有 http_status 为 500 的日志记录。



进一步将语句改为

http_status=500 | select bucket,count(1) as pv group by bucket  order by pv desc


可以看到各个 bucket 的记录数。



我们将条件设到 pv > 60 得到一条结果。点击右上角“另存为告警”




这里我们将分组评估设置为 bucket 字段,同时将触发条件设置为“有数据”



这样就完成了告警的设置。如果想要对不同的 bucket 做不同的告警处理,可以参考 cpu 的场景在行动策略中进行设置。


为您推荐(持续更新)

6月25日13:00—16:30

上海人工智能中心

针对日常运维工作中出现的问题

阿里云邀请多位大咖

和大家聊聊关于智能运维相关话题

欢迎感兴趣的朋友前来参加哦

扫描海报二维码或点击原文报名, 期待您一起开启智能运维新时代!


点此报名参加【数智创新行·智能运维专场】

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存