告警级别定义:P0/P1/P2/P3分级标准
告警级别这事儿,说白了就是给故障分个三六九等。
我刚做运维那会儿,团队里所有告警都往一个群里扔。结果呢?半夜三点,磁盘空间用了80%的告警和核心数据库宕机的告警混在一起。值班兄弟直接麻了,分不清哪个该先处理。后来我们花了整整两个迭代,才把分级标准定下来。
我个人习惯,告警级别分四档:P0、P1、P2、P3。数字越小,优先级越高。
P0:系统挂了,全员给我醒着
P0是什么?就是用户完全用不了你的系统了。
举个例子:支付网关全部超时、用户登录全面失败、核心数据库主库挂了且切换失败。这种级别的故障,影响的是所有用户,而且是持续性的。
我在项目中遇到过最典型的P0:双十一凌晨,订单创建接口全部502。那会儿我正睡觉呢,电话一响,看到是P0告警,直接从床上弹起来。嗯,那晚我们搞到凌晨四点才恢复。
- 核心功能完全不可用
- 影响所有用户或核心业务
- 需要立即响应,5分钟内必须有人处理
- 恢复时间目标(RTO)通常小于30分钟
P1:部分功能挂了,影响面不小
P1比P0低一档,但同样紧急。
你想想看,用户能登录,但查不到历史订单;或者能下单,但支付一直转圈。这种就是P1。功能可用,但核心链路有严重问题。
我记得有一次,我们的推荐系统挂了。用户能正常浏览商品,但首页推荐全是空的。虽然不影响下单,但转化率直接掉了40%。这就是典型的P1——不是不能用,是体验极差。
P2:有影响,但能忍
P2级别的告警,说白了就是「有问题,但不着急」。比如某个非核心页面加载慢、某个报表生成延迟了10分钟、某个次要模块报错但自动恢复了。
这类告警通常不需要半夜处理。我一般建议:工作时间响应,24小时内解决。
举个例子:用户头像上传偶尔失败,重试就好了。这种就是P2。影响面小,有临时解决方案。
P3:知道了,有空再看
P3就是最低级别的告警。通常是些小毛病:某个接口响应时间从50ms涨到了80ms、某个日志里出现了少量警告、某个服务的内存使用率缓慢增长。
这类告警我一般攒着,每周统一看一次。说白了,就是「知道有问题,但不影响当前业务」。
影响范围与紧急程度矩阵
光有分级还不够。你得搞清楚:这个告警到底影响了谁?有多紧急?
我习惯用一个矩阵来辅助判断:
| 影响范围 \ 紧急程度 | 高紧急(立即处理) | 中紧急(1小时内) | 低紧急(24小时内) |
|---|---|---|---|
| 全量用户 | P0 | P1 | P2 |
| 部分用户 | P1 | P2 | P2 |
| 内部/非核心 | P2 | P3 | P3 |
这个矩阵怎么用?举个例子:
- 全量用户 + 高紧急 = P0(所有用户都登不上了,赶紧的)
- 部分用户 + 中紧急 = P2(某个区域的用户加载慢,先排查)
- 内部系统 + 低紧急 = P3(运维后台某个图表不显示了,有空再看)
我在项目中遇到过最纠结的情况:某个功能影响了10%的用户,但恰好是VIP用户。按矩阵是P2,但业务方坚持要P0。后来我们加了一个「业务影响度」的权重因子,VIP用户的影响自动升一级。嗯,这个后面会细讲。
SLA与告警级别的关联
SLA(服务等级协议)和告警级别是绑定的。说白了,你承诺了99.9%的可用性,那告警响应时间就得跟上。
我一般这样关联:
| 告警级别 | 响应时间(SLA) | 恢复时间(SLA) | 通知方式 |
|---|---|---|---|
| P0 | 5分钟 | 30分钟 | 电话 + 短信 + 群@所有人 |
| P1 | 15分钟 | 2小时 | 电话 + 群@相关人员 |
| P2 | 1小时 | 8小时(工作时间) | 群消息 + 工单 |
| P3 | 24小时 | 72小时 | 工单 + 日报 |
这里有个关键点:SLA不是拍脑袋定的。你得根据团队规模、值班人数、系统复杂度来调整。小团队搞P0 5分钟响应?不现实。我建议刚开始可以放宽一些,比如P0 15分钟响应,等团队成熟了再收紧。
另外,SLA要跟告警级别联动。比如某个服务承诺了99.99%的可用性,那它的告警级别天然就高。反过来,一个内部工具,SLA是99%,那P2级别的告警可能就够了。
- 告警级别决定响应速度
- SLA决定告警级别的下限
- 影响范围决定紧急程度
- 三者结合,才能做出合理的告警策略
最后说一句:分级标准不是一成不变的。我每季度都会复盘一次告警数据,看看哪些P0其实可以降级,哪些P2其实应该升级。动态调整,才能让告警体系越来越精准。