路由合并概述
SLS的告警策略包含三种子策略:
- 路由合并
- 抑制
- 静默
其中最重要的就是路由合并策略。简而言之,路由合并的作用就是:告警经过一定的规则,合并成不同的合并集合,统一进行通知的发送。它的最大的优点就是可以进行告警的降噪,由于是合并后统一发送,因此可以有效避免告警风暴的产生。
可以参考如下的简单示例:
一共产生了四个告警,它们经过路由合并之后,变成了三个合并集合,其中Alert-1和Alert-3在一起,会被一起发送通知。当然这只是一个非常简单的示意,可以简单理解为这里根据的是不同的颜色进行了合并。在实际的使用场景中,可以根据告警自身的多种属性进行策略的配置,例如把相同严重度的告警合并在一起,或者把同一个Project产生的告警放在一起,等等。在了解了路由合并的基本作用之后,接下来我们来看路由合并的一些详细使用。
告警指纹
在对路由合并进行深入的了解之前,我们需要先来认识一下告警的指纹。简单来说,每个告警都需要有一个唯一的身份证号,需要我们来识别它。
例如 08:00 产生了一条告警,说的是 192.168.1.100 这台机器 CPU 使用率过高,达到了 90%;然后再 08:05 继续产生了一条告警,说 192.168.1.100 这台机器 CPU 使用率过高,达到了 95%。在这个例子中,我们可以看到,这两个触发的告警描述的其实是同一件事情,本质上它们其实是同一个告警,只不过是在连续的两个周期都触发了而已。就好像某个人昨天穿了白色的衣服出门,今天穿了黑色的衣服出门,虽然看起来有稍许区别,但其实还是同一个人。
对于告警来说,也有这样的一个唯一标识,不管它在什么时候触发,我们都可以通过该标识来知道,它描述的某一个确切的事情。我们可以称之为告警的指纹。如果两个告警的指纹完全相同,那么它们就是同一个告警的两次出现。
告警指纹的计算依赖于告警的如下属性:
- 用户ID:阿里云账号UID
- Project:告警监控规则所在的项目
- 告警规则ID
- 告警标签(key-value 结构)
一句话概括就是:如果两条告警属于同一用户在同一个Project下创建的同一条告警监控规则,并且它们的标签相同,那么就是同一个告警。
关于告警的标签,是在配置监控规则的时候设置的。
- 分组评估:
- 不分组:则默认没有标签
- 标签自动:仅对时序库有效,自动将时序指标的所有标签作为告警的标签
- 标签自定义:需要用户自己配置分组的标签,例如
* | select host, count(*) as cnt group by host
这样的查询语句,结果里会有 host 和 cnt 两个字段,假如用户配置了按照 host 进行分组,那么告警里就会有 host 这个标签
- 如果开启了无数据告警,那么还会有一个特殊的标签
__no_data__
- 此外用户还可以自己添加标签,例如自己添加
app: nginx
类似的固定标签
基于告警指纹的降噪
假如同一个告警一直在触发,那么在告警管理的流程中,只会保留最新的那一次触发。也就是说,每个告警集合会根据告警的指纹进行去重,仅保留最新版本。
例如:某台主机从 20:00 开始每分钟不停地触发高CPU告警,告警策略按照配置来进行发送。那么在首次触发后,后续重复的告警都会去重并且延迟(因为配置了重复等待)发送。
合并集合
上面我们解释了告警指纹及其去重机制,接下来介绍一下合并集合。合并集合简单来说就是一个告警的容器,是一个批量处理单元。所有在该容器内的告警都会进行统一的发送通知。
合并集合有如下属性:
- 合并基准
- 行动策略
- 首次等待时间
- 变化等待时间
- 重复等待时间
这几个属性解决了如下问题:
- 为什么告警会在一起:合并基准
- 要发送给谁:行动策略
- 如何发送:首次等待、变化等待、重复等待
我们可以配置告警策略的路由合并基准,将告警归类自动分派到多个合并集合中,并进一步的降噪控制(去重、合并等)后,将合并的告警分别发送给相应的行动策略。
例如上面的例子,通过合并基准的配置,将十个告警分到了六个合并集合中,并且会使用各自的行动策略来进行通知的发送。
使用告警策略进行数据隔离
通常来说,如果两个合并集合的五个属性完全相同,那么它们本质上就是同一个合并集合。但是这有个前提,就是需要这两个合并集合是由同一个告警策略产生的。
也就是说,告警策略相当于是提供了一个命名空间的作用。如果两个告警使用了不同的告警策略,那么即使最终它们所在的合并集合各个属性都相同,但它们也是不同的合并集合。
因此可以使用告警策略来进行告警数据的隔离。例如不同的团队使用不同的告警策略,那么这两个团队的告警数据肯定不会混在一起,每个团队只需要关注自己的告警策略配置即可。
最后,如果您还想了解更多智能运维前沿资讯,欢迎您报名参加【数智创新行·智能运维专场】。
6月25日|上海·西岸国际人工智能中心
数智创新行上海站·智能运维专场
阿里云将带来云原生智能运维解决方案,满足海量事件有效感知、高效响应,可观测数据统一分析、故障定位,以及基于AI的异常检测等需求,助力企业构建自己的运维平台,成为开发、运维人员高效可靠的助手。
扫描海报二维码或点击下方链接报名, 期待您一起开启智能运维新时代!
https://www.aliyun.com/page-source//developer/special/osssalon