一、告警规则设计导论

大家好,我是你们的老朋友。今天咱们聊聊告警规则设计这件事。

说实话,我在这个行业摸爬滚打了十几年,见过太多因为告警规则设计不合理导致的线上事故。有的团队告警太多,运维人员直接躺平;有的团队告警太少,出了事才发现。嗯,这两种我都经历过。

1.1 什么是告警?

告警,说白了就是系统在告诉你:「嘿,出问题了,快来看看!」

但这里有个关键点——告警不是目的,而是手段。我们真正想要的是:在用户发现问题之前,先发现问题

我个人习惯把告警分成三类:

  • 故障告警:系统已经挂了,需要立即处理。比如服务502、数据库连接失败。
  • 风险告警:系统还能跑,但指标在恶化。比如CPU使用率持续上升、内存泄漏。
  • 通知告警:只是告诉你一声,不需要立即处理。比如版本发布成功、备份完成。

核心观点:好的告警规则,应该让故障告警少而精,风险告警及时准确,通知告警不打扰人。

我在项目中遇到过最典型的反面教材:某团队给每个服务都配了「CPU > 80%」的告警,结果每天收到上千条告警。最后运维同学直接把告警群屏蔽了——这跟没有告警有什么区别?

1.2 告警的黄金三要素

聊到告警规则,就绕不开这三个东西:指标、阈值、持续时间。我管它们叫「黄金三要素」。缺一个,告警就不完整。

1.2.1 指标(Metric)

指标就是你要监控什么。常见的包括:

  • 资源指标:CPU、内存、磁盘、网络
  • 应用指标:QPS、响应时间、错误率
  • 业务指标:订单量、用户活跃数、支付成功率

选指标有个原则:选能反映用户体验的,而不是选容易采集的

举个例子,你监控了服务器的CPU使用率,但用户访问很慢。这时候CPU指标其实没太大意义。真正该看的是接口的P99响应时间。

我的经验:刚开始做监控时,我恨不得把所有指标都加上告警。后来发现,指标越多,噪音越大。现在我的做法是:先选3-5个核心指标,跑通后再逐步扩展。

1.2.2 阈值(Threshold)

阈值就是「到什么程度算有问题」。这里有个坑——很多人喜欢拍脑袋定阈值。

比如:「CPU超过80%就告警」。为什么是80%?不是90%?不是70%?

我曾经在一个项目中,运维同学把阈值设成「磁盘使用率 > 90%」。结果某天凌晨3点,磁盘涨到89.9%,没触发告警。半小时后,磁盘满了,服务全挂。嗯,这就是阈值设得太死板的后果。

阈值设计有几种常见方式:

方式 说明 适用场景
固定阈值 写死的数值,比如CPU > 80% 资源指标,变化规律明显
动态阈值 基于历史数据自动计算 业务指标,有周期性波动
同比/环比 和昨天/上周同一时间对比 流量类指标,有日/周规律

避坑指南:我曾经见过一个团队,把所有告警阈值都设成固定值。结果业务高峰期天天误报,低峰期又漏报。后来改用动态阈值,误报率降了70%。

1.2.3 持续时间(Duration)

持续时间是很多人容易忽略的要素。它的作用是:避免因为瞬时抖动而误报

你想想看,CPU偶尔飙到90%然后马上降下来,这算问题吗?不算。但如果持续5分钟都在90%以上,那就要注意了。

持续时间的设计原则:

  • 短时间(几秒到1分钟):用于快速响应的场景,比如服务挂了
  • 中等时间(1-5分钟):用于资源类指标,比如CPU、内存
  • 长时间(5-15分钟):用于趋势类指标,比如磁盘使用率缓慢增长

我个人习惯:宁可多等30秒,也不要误报一次。因为误报会消耗信任,信任一旦没了,告警系统就废了。

1.3 告警规则在AIOps中的定位

说到AIOps,很多人觉得就是「用AI代替人工」。其实不是。AIOps的核心是辅助决策,而不是替代决策。

告警规则在AIOps中扮演什么角色?我总结了三层:

  1. 基础层:规则驱动的告警。这是最传统的方式,基于固定阈值、持续时间等规则。
  2. 增强层:规则+算法的告警。比如用动态阈值、异常检测算法来辅助规则。
  3. 智能层:算法驱动的告警。比如用机器学习模型自动发现异常,甚至预测故障。

但说实话,我见过很多团队一上来就想搞智能层,结果连基础层的规则都没做好。这就像还没学会走路就想跑。

我的建议:先把基础层的告警规则做到极致,再逐步引入算法。AIOps不是银弹,它只是帮你把规则做得更聪明。

下面这张图展示了告警规则在AIOps体系中的位置:

告警规则在AIOps中的定位 基础层:规则驱动 固定阈值 + 持续时间 + 静态规则 示例:CPU > 80% 持续5分钟 → 告警 增强层:规则 + 算法 动态阈值 + 异常检测 + 规则引擎 示例:基于历史数据自动调整阈值 智能层:算法驱动 机器学习 + 预测分析 + 自动根因定位 示例:预测未来30分钟可能发生的故障 复杂度递增 智能程度递增

你看这张图,从下往上,复杂度越来越高,但稳定性要求也越来越高。我的建议是:先打好基础层,再逐步向上演进

一个小技巧:在引入AIOps能力之前,先把基础告警规则的准确率做到90%以上。否则,算法再牛也救不了烂数据。

小结

这一章我们聊了三个核心问题:

  • 告警是什么——它是手段,不是目的
  • 黄金三要素——指标、阈值、持续时间,缺一不可
  • 告警规则在AIOps中的定位——从基础到智能,一步步来

我记得刚入行时,带我的老工程师说过一句话:「告警规则设计得好不好,直接决定了你晚上能不能睡个好觉。」现在想想,这话一点不假。

下一章,我们会深入聊聊如何设计高质量的告警规则。到时候见。


专注资料整理