很多公司希望提升服务稳定性,而上线了各类监控系统,指标的、链路的、日志的,而且只是指标层面可能就会有多个监控系统,这么多监控系统、这么多监控目标,如果没有良好的治理,很快就会产生告警风暴的问题,如何通过一些手段达到告警降噪的效果呢?
在现代化的互联网架构中,告警是监控系统里最重要的一环。它帮助运维人员、研发人员及时发现问题、定位问题并推动恢复,最终目标是保障服务可用性和稳定性。
但随着业务扩大、系统升级、监控目标增多,告警数量也会快速增加。指标监控、链路监控、日志监控并行存在,指标层面又可能接入多套监控系统。如果没有统一治理,重复告警、低价值告警、级联告警会叠加成告警风暴,让真正需要处理的问题反而被淹没。
核心摘要
- 告警降噪的目标不是少发告警,而是让需要行动的告警及时触达正确的人。
- 告警风暴通常不是通知渠道的问题,根因往往在告警策略、优先级、分类和处理流程上。
- 去重、聚合、屏蔽、分级、抑制、静默等手段可以减少噪音,但不能替代策略治理。
- 业务告警和资源告警要区别对待,订单量下跌这类北极星指标应该有更高优先级。
- 多套监控系统并存时,建议建设统一的告警事件 OnCall 中心,集中处理聚合降噪、排班、认领、升级和协同。
什么是告警风暴,为什么需要告警降噪
告警风暴是指短时间内产生大量告警,导致处理人员难以判断优先级、难以识别根因、难以及时响应关键事件的状态。它会带来三个直接问题:
- 重要告警被普通告警淹没,真正影响业务的问题无法被优先处理。
- 重复通知不断打扰研发和运维,长期看会降低大家对告警系统的信任。
- 事件处理链路混乱,告警触达、认领、升级、协同都容易断层。
所以,告警降噪不是简单把告警关掉,也不是把通知渠道从电话改成 IM。更合理的目标是:保留有行动价值的告警,减少重复、无害、低优、无责任人的告警,并让告警能够进入清晰的处理流程。
治理告警风暴的基本思路
治理告警风暴,需要先从策略和流程看问题,再考虑技术手段。
1. 优化告警策略
告警策略要根据业务特点和实际情况制定。过于严格的阈值、缺少恢复条件、没有持续时间判断、没有明确处理动作,都可能带来大量无用告警。
一个简单判断标准是:告警接收者看到这条告警后,是否需要立刻采取动作?如果只是通知一下,而接收者无需处理,那么这个告警策略是否合理就值得深究。
2. 设置告警优先级
不同告警的业务影响不同,通知和处理方式也不应该相同。关键业务告警需要优先触达,低优告警可以进入相对温和的通知或聚合规则。
优先级的价值在于让 P1、P2 这类高优告警先被看到、先被认领、先被升级,而不是和 P3、P4 告警混在一起。
3. 做好告警分类
告警分类可以帮助处理人员判断问题性质和紧急程度。业务告警、资源告警、基础设施告警、应用告警、通知类告警,不同类型适合不同的通知媒介和处理流程。
分类清楚之后,后续的去重、聚合、抑制、静默、升级策略才有执行基础。
4. 建立告警处理流程
告警产生之后,还需要有完整处理流程:谁接收、谁认领、何时升级、如何协同、如何沉淀 Runbook,最好还能进一步做到自动化自愈。
如果告警只负责发出去,却没有后续事件流转机制,告警系统就很容易变成一个噪音制造器。
告警降噪手段总览
下面这些是治理告警风暴和告警降噪时常见的技术手段。前几项是 Notion 给出的通用建议,我做了补充修正,后面再展开一些实战建议。
| 手段 | 解决的问题 | 适用场景 | 注意点 |
|---|---|---|---|
| 告警去重 | 重复告警反复触达 | 同一对象、同一规则、同一故障反复触发 | 去重要保留事件状态变化,不能把恢复信息丢掉 |
| 告警聚合/压缩 | 短时间大量同类告警涌入 | 多实例、多节点、批量失败导致的告警风暴 | 聚合后仍要能看到影响范围和明细 |
| 告警屏蔽/静默 | 已知无害告警持续打扰 | 明确无需处理的告警、维护期内的告警 | 不要把未知风险长期静默掉 |
| 告警分级 | 高低优告警混杂 | P1、P2、P3、P4 等不同影响级别并存 | 分级要和通知、升级、处理流程联动 |
| 告警抑制 | 高低级别规则同时触发 | 同一故障同时触发资源告警和业务告警 | 低级别告警可被抑制,但根因定位所需信息要保留 |
| Runbook | 告警有人收到但不知道怎么处理 | 告警规则已有明确处理预案 | Runbook 预置率可以作为策略治理指标 |
| 统一 OnCall 中心 | 多套监控系统后续处理逻辑不一致 | 指标、日志、链路等多源告警并存 | 监控系统负责产生告警事件,OnCall 中心负责分发触达与协同 |
最重要的降噪动作:优化告警策略
优化告警策略是最为釜底抽薪的办法。大量告警产生,大概率是告警策略本身就有问题。
很多告警发出来,只是起到通知作用,告警接收者无需产生动作。这类告警如果越来越多,会让值班人员逐渐忽略整个告警系统,最终连真正关键的告警也可能被错过。
通常来说,告警规则里建议配置 Runbook,也就是预案 SOP 的链接。告警发生之后,处理人员看到预案内容,就可以一步一步操作,减少临场判断成本。Runbook 预置率可以作为一个很关键的告警策略量化分析指标,预置率太低,一定是有问题的。
Grafana、Nightingale 等系统在配置告警规则的时候,都支持附加字段,允许用户配置额外字段信息。其中 Runbook 字段是内置的,可见这类信息在告警治理里的重要程度。
业务告警和资源告警要区别对待
告警优先级不能只看技术指标,还要看业务影响。
比如 A 告警是订单量下跌,B 告警是某个机器的 CPU 飙高,哪个更重要?一目了然吧。老板更关注哪个?也一目了然吧。
A 告警产生,说明公司核心业务可能已经出现故障,甚至直接造成资损,老板可能很快就会收到投诉电话。B 告警产生,可能在 Kubernetes 平台的自动处理之下,相关业务 Pod 很快就被自动调度走了。
所以,业务指标应该有 VIP 级别的对待方式。这类指标通常被称为北极星指标,是全公司员工共同努力的方向。Flashcat 产品中专门有个子模块叫北极星,就是因为这类指标实在太重要了。
对北极星指标,应该有更高优的处理机制、更完备的告警规则和更好的展示方式。资源告警当然也重要,但它更多时候服务于根因定位和容量治理;业务告警则直接告诉我们用户体验和业务结果是否已经受损。
多套监控系统并存时,建立统一 OnCall 中心
很多公司都有多套监控系统。监控系统通常把重心放在数据采集、时序库、告警规则管理、监控大盘等功能上,对于告警事件产生之后的后续处理逻辑关注较少。
有些监控系统或多或少也会做一些事件处理能力,但是整体来看,这方面能力良莠不齐。所以,我们更推荐的做法是建立统一的告警事件 OnCall 中心,在这个产品里完成告警事件聚合降噪、排班 OnCall、认领、升级、协同等一系列逻辑。
这样一来,监控系统只需要产生告警事件,不奢望它做更多事情。统一 OnCall 中心负责后续事件处理,主要解决两个大问题:告警事件的分发触达,以及事件处理过程中的协同。
分发触达:让不同级别告警走不同策略
告警事件的分发触达,需要支持灵活通知策略。
比如 P1、P2 的高优告警有自己的通知和聚合规则,P3、P4 的低优告警有自己的通知和聚合规则。高优告警可以更强触达,低优告警可以更强调聚合、静默和异步处理。
协同处理:让事件能流转、能共享、能升级
协同主要体现在两个方面。
一是与钉钉、飞书、企微的良好打通,让告警能进入团队真实工作的沟通场景。二是事件流转和信息共享,让认领、升级、处理进展、根因定位、恢复状态都能被团队看到。
这方面相关的产品,大家可以关注一下 PagerDuty 和 Flashduty。
用量化指标持续改进告警治理
通过去重、聚合、抑制、静默、OnCall 协同等手段,告警风暴和打扰问题或许可以得到改善。但具体做得如何,最好能够量化出来。
量化有两个价值:一个是可以给老板讲,有数据有依据;另一个是我们做改造的时候也能有据可依,知道这些手段确实带来了改进。
典型的量化方法包括:
- 告警事件数量。
- 短信、邮件、电话、IM 的通知数量。
- 告警系统的 NPS 评分。
- Runbook 预置率。
- 高优告警认领和升级情况。
这些指标不一定一次全部做全,但至少应该围绕“告警是否减少了无效打扰、是否提升了关键事件响应效率”来观察。
FAQ
告警降噪是不是把告警关掉?
不是。告警降噪的核心不是减少所有告警,而是减少重复、无害、低价值、无行动项的告警,让真正需要处理的告警更容易被看到。
告警去重和告警聚合有什么区别?
告警去重主要处理重复告警,避免同一问题反复通知。告警聚合或压缩主要处理短时间大量同类告警,把多个相关告警合并成一个更容易处理的事件。
什么时候应该使用告警抑制?
当同一份监控数据同时触发高级别和低级别告警规则时,可以只发送高级别告警,降低低级别告警的干扰。但抑制不等于删除信息,根因定位所需的上下文仍然应该保留。
为什么业务告警要比资源告警更优先?
业务告警直接反映业务结果是否受损,比如订单量下跌。资源告警反映的是底层资源状态,比如某台机器 CPU 飙高。资源问题可能被 Kubernetes 等平台自动调度缓解,但核心业务异常往往需要更高优先级响应。
多套监控系统应该怎么做告警治理?
更推荐建立统一的告警事件 OnCall 中心。监控系统负责产生告警事件,OnCall 中心统一负责聚合降噪、排班、认领、升级、通知和协同,避免每套监控系统各做一套不完整的后续处理逻辑。
结论
告警风暴治理不是单点功能问题,而是一套从策略、优先级、分类、处理流程到 OnCall 协同的系统工程。
最有效的路径是先优化告警策略,明确哪些告警真正需要行动;再通过去重、聚合、抑制、静默、分级等手段减少噪音;最后用统一 OnCall 中心和量化指标持续改进。希望各位朋友都能够有一个良好的告警治理体系,每天不至于太过疲惫,快乐工作、健康生活。
