Caloogy 文章
English

安全监控与告警疲劳

日期
2026 年 8 月 17 日
系列
方法论
阅读
4 分钟
主题
MonitoringAlertingAlert fatigueHeartbeat

一句话版本

监控系统最常见的两种失败,一种是告警太多:每天几百条,绝大多数是误报,真正重要的那条被淹没了;另一种是告警系统自己坏了却没人知道:没有告警,大家以为一切正常,其实是监控早已停止工作。 好的告警只发给人"需要现在采取行动"的事,并按严重程度分级;同时用心跳证明监控本身还活着:"没有消息"不能等于"好消息"。

全文分三层:

  1. 通俗理解:狼来了,和睡着的哨兵
  2. 实际用处:Target 和 Equifax 两起数据泄露
  3. 原理与工程要点:什么值得告警、分级与路由、心跳、降低误报

第一层:通俗理解

1.1 两个寓言

寓言 监控中的对应
狼来了:喊了太多次假警报,真狼来时没人理 告警太多、误报太多,人学会了忽略
睡着的哨兵:哨兵睡着了,营地以为一夜平安 监控程序挂了、告警渠道断了,没有告警被当成"一切正常"

两种情况的结果一样:真正的事故发生时,没有人采取行动。

1.2 一条好告警的标准

一条告警应该同时满足:

  1. 需要人去做点什么(否则就只是一条日志);
  2. 需要现在做(否则可以放进每日报告);
  3. 收到的人知道该做什么(否则只会制造焦虑)。

第二层:实际用处


第三层:原理与工程要点

3.1 什么值得告警

值得立即告警 放进日志或日报即可
生产环境页面内容和预期不符 一次登录失败
出现了未登记的部署版本 单个请求超时
审计日志的哈希链断裂(见《哈希链审计日志》) 磁盘使用率 70%
管理员账号在陌生地点登录 正常的部署完成
多个数据源结果不一致导致交易被拒绝 被正常拦截的扫描器流量
登录失败率是平时的 10 倍(见《限流与抗滥用》)

原则:告警针对症状和后果(用户受影响了、安全不变量被打破了),而不是针对每一个底层指标的波动。

3.2 分级与路由

级别 含义 渠道
紧急 正在发生的安全事件或资金风险 电话 / 推送,半夜也要叫醒人
高 需要当天处理 即时消息、邮件
低 需要关注,可以排期 工单、日报

还要考虑:

3.3 心跳:证明哨兵醒着

方法 说明
定期心跳消息 监控系统每隔一段时间主动发一条"我还活着"的消息;如果到期没收到,就说明它出问题了
死人开关(dead man's switch) 由一个独立的外部服务等待心跳,超时没收到就告警
金丝雀 故意制造一个已知应该触发告警的事件(比如访问一个蜜罐地址),确认告警真的会到达
证书和凭证到期监控 Equifax 的教训:监控工具自己的证书、令牌过期,会让它悄悄失明

关键是心跳的检查方必须独立于被检查的系统,否则两者可能同时失效。

3.4 降低误报

3.5 告警之后

告警只是开始。收到紧急告警后的流程(谁负责、怎么判断、怎么止损、怎么沟通)属于事故响应,见《事故响应与复盘》。


总结

层次 要点
两种失败 狼来了(告警疲劳,Target)、睡着的哨兵(监控失明,Equifax)
好告警 需要行动、需要现在、知道怎么做
工程 分级路由、去重聚合、状态变化通知、抖动保护
心跳 独立的死人开关;监控自身的证书和凭证也要监控