本文目录导读:

告警升级的时间梯度(也称升级策略或Escalation Policy)是运维体系中自动流转的核心机制,它确保当某个告警在既定时间内未被认领或未解决时,会以更高的优先级或更严重的方式通知到更高层级的人员。
以下是设计告警升级时间梯度的通用原则、常见分级模型以及最佳实践。
核心设计原则
- 从轻到重:通知方式从低打扰(邮件、App推送)到高打扰(电话、短信、钉钉/企微语音)。
- 从近到远:通知对象从第一责任人(值班人员)、到团队负责人、再到部门经理/总监。
- 加速收敛:随着时间推移,通知间隔应逐渐缩短(首30分钟不处理,则每5分钟电话一次;1小时后,每2分钟一次)。
- 有始有终:必须有“确认(Acknowledged)”和“解决(Resolved)”的状态变更,停止后续升级。
常见告警级别时间梯度模型
通常按告警的严重程度(P0/P1/P2/P3) 设计不同的时间窗口。
| 级别 | 严重度 | 响应要求 | 典型时间梯度示例 | 通知方式 |
|---|---|---|---|---|
| P0 | 致命/系统崩溃 | 立即响应 | 0-5分钟:通知值班人 5-15分钟:未确认 -> 通知值班组/Team Leader 15-30分钟:未确认 -> 电话通知总监/CTO |
电话 + 短信 + 群@所有人 |
| P1 | 严重/主功能受损 | < 15分钟 | 0-15分钟:通知值班人 15-30分钟:通知团队Leader 30-60分钟:通知部门负责人 |
电话 + App推送 |
| P2 | 中等/部分功能受损 | < 1小时 | 0-30分钟:通知值班人 30-60分钟:通知团队Leader 60-120分钟:升级至上一级 |
App推送 + 邮件 (电话可选) |
| P3 | 轻微/告警 | < 24小时 | 0-4小时:发送邮件/工单 4-24小时:未处理 -> 发送升级邮件给直属Leader |
仅邮件 / 工单系统 |
| P4 | 信息/通知 | 无需响应 | 不升级,仅记录日志或发送摘要邮件 | 无或日志 |
标准时间梯度实现流程(以P1告警为例)
假设告警触发时间为 T=0:
- T=0:系统自动触发告警 -> 通知渠道1(钉钉/飞书机器人@值班人)。
- T=0 ~ T=15 min:等待确认,若值班人点击“认领”,升级停止。
- T=15 min:未确认 -> 自动触发二级升级。
- 通知渠道2:电话呼叫值班人 + 短信通知值班人。
- 通知对象:若电话无人接听,自动呼叫Backup(备选值班人)。
- T=15 ~ T=30 min:等待认领或响应。
- T=30 min:仍无响应 -> 自动触发三级升级。
- 通知对象:团队Leader、SRE经理。
- 通知方式:电话 + 短信 + 群聊@管理层。
- T=60 min:若问题未解决(已认领但未Resolved) -> 自动触发处理超时升级(注意:这与响应升级不同)。
- 动作:通知更高级别的技术专家或值班经理介入。
关键细节与最佳实践
升级触发条件不仅仅是“未响应”
除了“无人认领”,还应设置处理超时升级:
- 未响应升级:人没看到。
- 未解决升级:人看到了,但在约定时间(如P1为1小时)内没修好,需要增援。
时间间隔的指数衰减
推荐使用渐进式频率,避免过度轰炸:
- 第一次电话后,等待15分钟。
- 第二次电话后,等待5分钟。
- 第三次电话后(仍未接),每2分钟拨打一次(直到确认)。
避免“节假日/夜间”一刀切
- 工作时间:可适当延长P2/P3的升级时间(如2小时)。
- 非工作时间:P0/P1应立即升级,P2则可推迟到第二天早上8点再触发升级(使用静默时段+延迟升级规则)。
分层的降噪与收敛
- 依赖/衍生告警:如果数据库挂了,所有业务告警应收敛,只升级数据库这条根因告警,避免同一个事故产生100次升级。
与日历/排班绑定
- 升级路径必须动态绑定到当前值班表。
- 示例:如果今天是张三值班,T=15分钟时电话打给张三;T=30分钟时,系统自动跳过不在岗的李四,直接打给值班组的王五。
应对“无人认领”的兜底
- 最终兜底层(如T=60分钟):自动拉起大群视频会议,开启War Room,并通知所有管理层。
工具配置示例
在主流运维平台(如Prometheus + Alertmanager, PagerDuty, OpsGenie, 或自研平台)中配置时,通常描述为:
# 伪代码配置
teams:
- name: "SRE 值班组"
schedule: "轮值表"
escalation_rules:
# 第一级:值班人
- notify:
- type: "phone"
contact: "{oncall_primary}"
- type: "app_push"
delay: 0 # 立即通知
timeout: 15m # 15分钟内必须确认
# 第二级:备份
- notify:
- type: "phone"
contact: "{oncall_backup}"
- type: "sms"
delay: 15m # 第一级超时后15分钟触发
timeout: 15m
# 第三级:TL
- notify:
- type: "phone"
contact: "{team_lead}"
- type: "phone"
contact: "{sre_manager}"
delay: 30m
timeout: 30m
# 第四级:全员通告
- notify:
- type: "war_room"
- type: "email_group"
delay: 60m
一个实用的默认时间梯度建议
| 优先级 | 1st级 (通知) | 2nd级 (升级) | 3rd级 (高级升级) | 4th级 (灾难) |
|---|---|---|---|---|
| P0 | 0min (立即电话) | 5min (备选/Leader) | 15min (总监) | 30min (War Room) |
| P1 | 0min (App推送+电话) | 15min (Leader电话) | 30min (部门总监) | 60min (War Room) |
| P2 | 0min (App推送) | 30min (Leader推送) | 60min (Leader电话) | 120min (总监邮件) |
| P3 | 0min (邮件) | 4hours (Leader邮件) | 24hours (经理邮件) | - |
关键提醒:时间梯度不是越短越好,过于激进的升级(如P1告警2分钟就开始打电话)会导致告警疲劳,所有人都觉得“反正马上会打给老板,我就不急了”,结果反而降低了响应效率,合理的梯度应是给一线足够的时间反应,同时确保失控时有可靠的兜底机制。