3. on-call 阈值策略基础:阈值定义、告警级别划分、静默与升级机制

on-call 阈值策略是 Runbook 自动化与值班体系之间的“信号翻译层”。没有合理的阈值,自动化要么沦为“告警风暴”的帮凶,要么因过度静默而错过真实故障。本章从三个核心维度展开:阈值定义(什么算异常)、告警级别划分(异常有多严重)、静默与升级机制(异常如何被响应)。

3.1 阈值定义:从原始指标到可触发动作的边界

阈值不是拍脑袋的数字,而是基于业务容忍度与系统容量基线的量化边界。常见的阈值定义方式包括:

定义方式 适用场景 典型示例
静态阈值 资源水位、硬件限制 CPU 使用率 > 90% 持续 5 分钟
动态基线 周期性业务流量 请求延迟超过过去 7 天同时间段的 3 倍标准差
复合阈值 多指标联合判断 错误率 > 1% 且 P99 延迟 > 500ms
预测阈值 容量规划、慢速增长 磁盘使用率预计在 24 小时内达到 95%
实践要点:阈值定义必须包含“持续时间”维度。例如“CPU > 90% 持续 5 分钟”比“CPU > 90%”更能过滤瞬时毛刺。建议为每个阈值设置 for 或 duration 参数,避免 on-call 被抖动唤醒。

3.2 告警级别划分:P0–P4 分级模型

告警级别决定了响应速度、升级路径和自动化动作的激进程度。业界通用的五级模型如下:

级别 定义 响应 SLA 典型触发条件
P0 核心服务完全不可用,影响全部用户 5 分钟内确认,15 分钟内恢复 支付链路 100% 失败、数据库主库宕机
P1 核心服务严重降级,影响大量用户 15 分钟内确认,1 小时内恢复 API 错误率 > 5%、缓存集群大面积故障
P2 非核心功能受损,或核心功能部分降级 1 小时内确认,4 小时内恢复 单个可用区实例异常、报表延迟超过 30 分钟
P3 不影响用户,但需运维关注 下一个工作日处理 磁盘使用率 > 80%、证书即将过期
P4 信息性通知,无需立即处理 记录即可 部署完成通知、例行健康检查通过
分级与自动化联动:P0/P1 告警应直接触发 Runbook 中的“紧急恢复”工作流(如自动切换流量、重启核心进程);P2/P3 告警可触发“诊断收集”工作流,为值班人员提供上下文;P4 告警仅写入事件日志,不产生 on-call 通知。

3.3 静默机制:避免告警疲劳的“降噪层”

静默(Silence)不是简单地关闭告警,而是有策略地抑制已知、预期或重复的告警。常见的静默策略包括:

  • 维护窗口静默:在计划内变更、升级、迁移期间,自动抑制相关组件的告警。静默规则应包含时间范围、目标标签和静默原因。
  • 依赖静默:当上游服务故障时,自动抑制下游因“级联效应”产生的告警。例如数据库宕机时,抑制所有依赖该数据库的应用告警。
  • 重复告警抑制:同一故障在短时间内多次触发时,只发送一次通知,后续告警进入“已抑制”状态,直到故障恢复或升级。
  • 速率限制:对同一告警源,限制每分钟/每小时的最大通知次数,防止告警风暴淹没值班人员。
静默陷阱:过度静默可能导致真实故障被掩盖。建议为每个静默规则设置“最大静默时长”,超过时长后即使条件未变也强制解除静默,重新评估告警状态。同时,所有静默操作必须记录审计日志,便于事后复盘。

3.4 升级机制:当值班人员未响应时的“安”

升级(Escalation)确保告警不会因个人失联、处理超时或能力不足而被遗漏。一个健壮的升级机制包含以下要素:

升级层级 响应角色 触发条件 通知方式
L1 初级值班工程师 告警触发 即时消息 + 电话
L2 高级工程师 / 技术负责人 L1 在 10 分钟内未确认 电话 + 短信
L3 架构师 / 部门经理 L2 在 20 分钟内未确认,或 P0 告警持续 30 分钟 电话 + 紧急广播
L4 应急指挥中心 / 管理层 P0 告警超过 1 小时未恢复 电话 + 邮件 + 管理层汇报

升级机制必须与 Runbook 自动化深度绑定:当告警升级时,Runbook 应自动执行更激进的恢复动作(如从“自动重试”升级为“自动切换流量”),同时将当前故障上下文(时间线、已执行动作、诊断数据)打包传递给下一级响应人。

3.5 阈值、静默与升级的融合流程

下图展示了从指标采集到告警升级的完整融合流程,其中 Runbook 自动化在每个决策点介入:

阈值-静默-升级融合流程 阈值-静默-升级融合流程 指标采集 阈值判定 正常 继续监控(无动作) 异常 静默规则检查 匹配静默 抑制告警(记录日志) 未匹配 告警分级(P0-P4) 通知 L1 + 启动升级计时 Runbook 自动化执行

3.6 阈值策略与 Runbook 的“契约”设计

阈值策略不是孤立配置,它必须与 Runbook 自动化形成明确的“输入-输出”契约:

  • 输入契约:Runbook 接收告警时,必须携带 severity(P0-P4)、silence_key(静默去重键)、escalation_level(当前升级层级)等元数据。这些字段由告警系统在阈值判定阶段填充。
  • 输出契约:Runbook 执行完毕后,必须向告警系统返回执行状态(成功/失败/部分成功)、恢复时间、以及是否需要继续升级。例如,Runbook 自动重启服务后,若指标在 2 分钟内未恢复,应触发 L2 升级。
  • 反馈闭环:Runbook 的执行结果应反向影响阈值。例如,若 Runbook 连续 3 次自动恢复成功,可考虑将对应告警的级别从 P1 降为 P2,减少人工介入频率。
关键指标:衡量阈值策略与 Runbook 融合效果的核心指标包括:MTTA(平均确认时间)、MTTR(平均恢复时间)、告警噪声比(有效告警 / 总告警)、升级率(需要升级的告警占比)。理想状态下,P0/P1 告警的升级率应低于 20%,告警噪声比应高于 70%。

3.7 实践案例:电商大促期间的阈值策略

以电商平台“双十一”大促为例,阈值策略需要动态调整:

指标 日常阈值 大促阈值 调整原因
CPU 使用率 > 90% 持续 5 分钟 → P2 > 95% 持续 10 分钟 → P2 大促期间 CPU 高负载是预期行为,放宽阈值减少误报
订单错误率 > 1% 持续 2 分钟 → P1 > 0.5% 持续 1 分钟 → P0 大促期间订单错误影响巨大,收紧阈值并提升级别
支付超时 > 500ms 持续 5 分钟 → P2 > 300ms 持续 2 分钟 → P1 用户支付体验敏感,降低延迟容忍度

同时,大促期间启用批量静默规则:对“库存查询”等非核心链路的告警进行 24 小时静默,仅记录日志;对“支付网关”等核心链路的告警,将升级计时缩短 50%,确保故障在 2 分钟内被响应。

自动化联动:大促阈值切换可通过 Runbook 自动化完成。Runbook 接收“大促开始”事件后,自动更新告警系统的阈值配置、静默规则和升级策略;大促结束后,Runbook 自动回滚至日常配置,无需人工介入。