4. 闭环流程总览:从告警产生到关闭的完整链路
聊到SLA闭环,很多人第一反应就是“收到告警→修好→完事”。
说实话,这种认知在早期运维阶段还行。但当你管理的服务器超过一千台,告警一天几千条的时候,你就会发现——没有闭环的告警,其实就是噪音。
我习惯把整个链路拆成五个阶段:触发、确认、处置、验证、关闭。这五个节点,少一个都不行。
4.1 触发:告警是怎么来的
告警触发是整个流程的起点。说白了,就是监控系统发现某个指标不对劲了,给你发了一条消息。
我见过不少团队,在这个阶段就栽了跟头。比如阈值设得太低,半夜CPU涨到40%就疯狂报警。结果值班同学直接静音,真正的故障反而被淹没了。
触发阶段的关键原则:
- 告警必须可量化:不要模糊的“系统慢”,要“API响应时间超过3000ms持续1分钟”。
- 避免告警风暴:同一个故障,只发一条聚合告警,而不是每台机器都发。
- 带上上下文:告警信息里要有实例IP、错误日志片段、当前值vs阈值。否则接警的人还得去翻监控。
我的经验:我们曾经把告警触发比例从1:300优化到1:5。怎么做?把所有告警按“是否可直接行动”分类。不可直接解决的,先降级为事件。
4.2 确认:谁来看、谁来接
告警触发了,接下来就是“确认”环节。这个阶段的核心就两件事:认领和抑制。
认领是什么意思?就是有人站出来说:“这条告警我接了,我来跟进。”
我记得有个项目,团队初期没有认领机制,结果一条工单三四个同事同时去查,互相不知道对方在做什么。白白浪费人力。
我建议的做法是:
- 告警推送到值班同学的IM群里,谁先点“认领”按钮,其他人就只围观不操作。
- 如果2分钟内无人认领,自动升级给TL(团队负责人)。
- 抑制:如果是已知的已知问题,比如正在灰度发布导致的预期抖动,就标记为“抑制”,不纳入SLA考核。
避坑指南:我曾经见过一个团队把“确认”简单理解为“点了确认按钮就行”。结果有人值夜班时,一口气点了100条确认,然后继续睡觉。真正的故障根本没处理。所以“确认”必须附带初始诊断结论,比如“初步判断为DB慢查询,已开始排查”。
4.3 处置:真正动手的阶段
确认之后进入处置阶段。这时候接警的同学已经明确知道自己要解决什么问题了。
处置阶段我习惯再拆成三个子步骤:
- 诊断:定位根因。是代码问题?配置问题?还是基础设施挂了?
- 决策:选方案。是重启大法好,还是跑个脚本,或是回滚版本?
- 执行:动手操作。记得在工单里记录每一步操作和输出。
这里有个容易忽视的点:处置时长要根据告警级别来设SLA。
| 告警级别 | SLA目标(确认→处置完成) | 典型场景 |
|---|---|---|
| P0(紧急) | 30分钟 | 核心服务不可用、数据丢失 |
| P1(严重) | 2小时 | 部分功能受损、响应超时 |
| P2(一般) | 24小时 | 单实例故障、监控死循环 |
| P3(提示) | 72小时 | 磁盘使用率告警、证书即将过期 |
你想想看,如果P3的告警也是一小时内必须修复,值班同学会被耗死的。分级处置才是长久之计。
4.4 验证:别修完就当甩手掌柜
处置完就算结束了吗?当然不是。我见过太多“修完就忘”的情况。
嗯,这里要注意:验证阶段的核心是“证据”。
怎么验证?
- 自动化验证:比如写一个健康检查脚本,跑一遍通过才算恢复。
- 人工验证:从用户视角走一遍业务流程。确认页面能打开,数据能写入。
- 观察期:我建议设置一个5-10分钟的观察期,确认指标没有再反弹。很多时候刚修完指标短暂恢复,过一会儿又掉了。直接关闭等于埋雷。
关键点:验证不通过的系统状态,不能点关闭。要做成硬性规则——未验证通过的告警,关闭按钮不可用。
4.5 关闭:不是终点,是复盘起点
终于到最后一步了。很多人觉得告警关了就等于完事了。说实话,这个想法很危险。
关闭阶段至少要做三件事:
- 根因记录:把这次故障的根因写清楚。是代码bug?是上线流程没卡住?还是监控本身有问题?
- 知识沉淀:更新SOP(标准操作流程)。下次再出类似问题,新人也能照着做。
- SLA考核反馈:这条工单从触发到关闭用了多久?哪个环节超时了?用来优化后续流程。
我记得有一次,一个P0故障的根因其实两周前就已经在P2告警里出现过了,但因为没人去复盘,没人把根因往上提炼,导致最终酿成大故障。
避坑指南:我曾经在一个团队里发现,关闭率是100%,但重复告警率也是100%。这意味着什么?所有告警都关了,但问题根本没有解决,只是把告警静音了。所以关闭前必须确认:根因是否已修复,或者是否已排入迭代计划。
整个闭环流程走下来,你会发现它不只是个流程,更是一种运维文化。每个阶段都在推着你做正确的事,而不是图省事。