释放运维潜能,让你的系统告警更精准!

27 阅读7分钟

作为运维人员,我们每天都面临着各种各样的告警,但其中很多告警可能是无关紧要的,有时候甚至会在短时间内接收到大量的告警。这给我们带来了一系列问题,如告警疲劳和关键告警被淹没的风险。在本文中,我们将探讨如何解决这个问题,即如何进行告警降噪,分享一些实用的方法和策略,让告警更加精准。

01 降噪分类

从我们的生产实践和一些开源或商用的平台,降噪目前大致有两种方法,一种是基于规则降噪,即通过配置明确的告警规则进行降噪;另一种是智能降噪,即通过AI算法实现一些降噪的功能。

比较熟知的开源降噪工具alertmanger,主要基于规则进行降噪,然后也有一些商用告警平台做了些智能降噪的工作,以下我们讨论这两种方式有哪些实现方法和优缺点。

02 基于规则降噪

基本概念

一般告警处理主要包含静默、抑制、聚合等规则,当然在不同的告警平台可能说法有些差异,不过本质是一样的。

静默:是指在特定条件下临时关闭或禁止某个告警的通知,以避免对操作人员造成干扰。例如,在系统维护期间,可以选择将某些告警静默,以免干扰正在进行的维护工作。

抑制:是指在某些情况下,当一个告警触发时,系统会自动抑制或取消其他相关告警的触发,以避免产生大量重复的告警。例如,当一个服务器宕机时,系统可以自动抑制与该服务器相关的其他告警,以避免洪水般的告警通知。下图是我们做抑制的截图。

图片

聚合:将多个相关的告警合并为一个告警,以帮助操作人员更好地理解和处理告警。例如,当多个服务器同时出现高负载时,系统可以将这些告警聚合为一个高负载告警,以便操作人员能够更好地识别和解决问题。在alertmanager中是分组的概念。

虽然聚合能够很大程度减少告警的数量,不过在配置的时候也需要意识到,聚合是会降低告警的实时性的,因为聚合是有个时间窗口,在配置告警规则时要能够容忍这个时效。

图片

我们在实践中加入了暂停、最大告警次数、最小时间间隔等几个规则。

暂停:指在一段时间内暂时停止触发和发送警报的过程。当需要进行维护、升级或其他计划性操作时,可以暂停告警以避免不必要的警报通知。如我们的告警暂停如下图进行配置。

图片

最大告警次数:限制了告警的发送次数,避免同一个告警无休止地发送。

最小时间间隔:定义了告警的最大频率,避免告警风暴的发生。

告警值班:设立值班人员也在一定程度上避免同时推送给多人,避免更多的人被打扰,在一定程度上也算是降噪的一个范畴。

优缺点

1.优点

  • 基于规则的告警降噪可信度很高,通过规则过滤,可以确保只有符合特定条件的警报才会被触发和通知。这提高了警报的可信度和准确性,减少了误报的可能性。

2.缺点

  • 难以覆盖所有情况:由于规则是基于已知情况编写的,因此很难涵盖所有可能的异常情况。

  • 难以维护:随着业务的发展和变化,规则也需要随之更新和调整。如果规则数量庞大且更新不及时,可能会导致告警降噪效果下降。

  • 无法自适应:基于规则的告警降噪方法是基于固定的规则和逻辑实现的,无法根据具体情况进行自适应调整。这可能会导致在某些情况下告警无法被正确地过滤或抑制。

03 智能降噪

基本概念

告警智能降噪是一种利用人工智能和机器学习技术来自动识别和过滤掉不必要告警的方法。通过分析历史数据、学习系统行为和模式,以及应用预定义的规则和算法,自动识别和过滤掉那些不重要的警报。它可以根据警报的特征、上下文和相关性进行判断,只保留那些真正重要和有价值的警报,从而减少警报的数量和噪音。

类似其他机器学习算法,同样依赖于从数据中学习特定规律。一般也需要通过数据收集、预处理、训练等步骤。

一般方法

1.  去重

告警触发后,如果是首次触发,则直接发送告警通知,否则利用告警的标题、内容、触发时间等文本信息,计算其和历史一段时间内的告警的相似度,例如余弦相似度、词袋模型等,如果相似度高于阈值时则可屏蔽该条告警。

2.  合并

在一定时间窗口内,我们可以根据文本相似度对所有告警进行聚类,告警聚类可以使用的聚类算法包括KMeans、DBSCAN等,聚类过程旨在使用无监督算法将大量冗余且复杂的告警进行分类,以便将大量相似且相关的告警有效地聚集在一起,避免多次通知。

聚类的粒度应该根据实际业务情况动态调整,粒度太大会导致所有告警合并,太小则无法减少数量。

3. 趋势预测

去重与合并两种方式都侧重于告警的内容,或者说是相似性,但是我们知道告警的时序也是非常重要的一个特征。

例如,对于正常业务来说,白天工作时间段的请求量肯定大于夜间数量,我们可以使用RNN或者LSTM对告警的时间和数量进行拟合,这样就能在业务高峰期减少信息的发送进行降噪,同时在业务低谷期可以全部发送防止遗漏。

优缺点

1.优点

智能告警降噪在当前的技术发展中取得了显著的进展,并在实际应用中展现出了许多优势。通过分析历史数据和学习系统行为,自动识别过滤,减少了运维团队的负担,解决部分基于规则的一些弊端。

2.缺点

不能取代规则甚至部分依赖于规则,因为大多数算法的效果受数据量和数据所含信息的影响很大,因此在采用更智能的算法之前,需要收集更多相关信息来辅助后续任务,比如收集补充CMDB信息等。

特殊场景的适用局限性。例如,对于复杂的系统和多变的环境,智能告警降噪可能需要更复杂的算法和模型来处理。此外,对于一些特定领域或特殊情况,智能告警降噪的性能和准确性可能还有进一步提升的空间。

04 总结

本文从规则和智能两个方面阐述了如何进行告警的降噪,让告警更加精准,阐述了各种方法如何去实现,以及各自的优缺点。希望为正在建立告警治理或者有这方面需求的你提供一些参考。

在我们实践中,目前基本是两者的结合,在基于规则方面的实践已经十分成熟,在智能告警这方面也在不断进行实践优化。