4. 告警路由与通知策略:基于服务树的路由、通知渠道、升级策略与静默期
告警路由与通知策略是 On-Call 响应体系的“神经传导系统”。其核心目标是将正确的事故信息,在正确的时间,通过正确的渠道,送达正确的人。本章聚焦于基于服务树的精准路由、多渠道通知编排、升级策略与静默期控制,确保告警不丢失、不轰炸、不错过。
4.1 基于服务树的路由机制
服务树(Service Tree)是组织架构与微服务拓扑的映射关系。告警路由基于服务树节点,实现从“告警产生”到“责任团队”的精准匹配。
核心原则: 告警携带服务树路径(如
/prod/ecommerce/payment/gateway),路由引擎根据路径匹配 On-Call 轮值表,而非人工配置 IP 或主机名。
4.1.1 服务树节点与路由规则
| 层级 | 示例节点 | 路由目标 | 匹配优先级 |
|---|---|---|---|
| L1 业务域 | /prod/ecommerce |
业务域 SRE 负责人 | 低(兜底) |
| L2 服务组 | /prod/ecommerce/payment |
支付组 On-Call 轮值 | 中 |
| L3 微服务 | /prod/ecommerce/payment/gateway |
网关服务 On-Call 轮值 | 高(精确匹配) |
| L4 实例/集群 | /prod/ecommerce/payment/gateway/cluster-a |
集群 A 值班人 | 最高 |
最佳实践: 路由规则采用“最长前缀匹配”策略。当告警携带
/prod/ecommerce/payment/gateway 时,优先匹配 L3 节点;若 L3 无值班人,则逐级向上回溯至 L2 或 L1。
4.1.2 服务树路由流程图
4.2 通知渠道与编排策略
不同严重级别的告警需要匹配不同的通知渠道。渠道的选择需权衡实时性、打扰成本和信息丰富度。
4.2.1 渠道特性对比
| 渠道 | 实时性 | 打扰程度 | 信息容量 | 适用场景 |
|---|---|---|---|---|
| 电话(语音) | 极高(秒级) | 极高 | 低(仅摘要) | P0/P1 严重事故 |
| 短信 | 高(秒级) | 高 | 中(关键指标) | P1/P2 高优先级 |
| IM(钉钉/企微/Slack) | 中(秒~分钟) | 中 | 高(上下文+图表) | P2/P3 日常告警 |
| 邮件 | 低(分钟级) | 低 | 极高(完整报告) | P3/P4 通知、日报 |
4.2.2 渠道编排策略
推荐采用分层递进式通知编排,避免单一渠道失效导致告警遗漏。
- 第一层(即时通知): IM 群机器人推送告警详情,包含服务树路径、当前值、阈值、告警时间。
- 第二层(确认催促): 若 3 分钟内无人确认,触发短信通知值班人。
- 第三层(升级通知): 若 5 分钟内仍无人确认,触发电话语音呼叫,并自动拉起事故响应群。
- 第四层(归档通知): 事故解决后,邮件发送完整的事故报告。
避坑提示: 避免所有渠道同时触发。多渠道并行轰炸会导致值班人信息过载,反而错过关键告警。建议采用“串行+超时升级”模式。
4.3 升级策略
升级策略(Escalation Policy)定义了当值班人未及时响应时,告警如何自动流转至更高级别或备选人员。
4.3.1 升级策略配置要素
| 参数 | 说明 | 推荐值 |
|---|---|---|
| 确认超时 | 从告警发出到值班人确认的最大等待时间 | P0: 2min / P1: 5min / P2: 15min |
| 升级层级 | 逐级升级的层数(L1→L2→L3→经理) | 3~4 层 |
| 升级间隔 | 每级之间的等待时间 | P0: 2min / P1: 5min / P2: 10min |
| 升级目标 | 下一级值班人或备选组 | 按服务树父节点或 SRE 经理组 |
4.3.2 升级策略流程图
4.4 静默期与抑制策略
静默期(Silence / Mute)用于在特定时间段或条件下,临时阻止告警通知,避免非工作时间或已知维护窗口内的无效打扰。
4.4.1 静默期类型
| 类型 | 定义 | 示例 |
|---|---|---|
| 定时静默 | 按固定时间窗口静默(如夜间、周末) | 每日 22:00~08:00 静默 P3 告警 |
| 维护窗口静默 | 配合变更窗口,在变更期间静默已知告警 | 每周二 02:00~04:00 数据库变更窗口 |
| 告警依赖静默 | 当上游服务已告警时,抑制下游衍生告警 | 网关 5xx 告警时,静默下游服务超时告警 |
| 手动静默 | 值班人手动对特定告警或服务树节点静默 | 已知问题未修复前,手动静默该告警 24h |
4.4.2 静默期配置原则
- 白名单优先: P0/P1 告警默认不受静默期影响,除非显式配置。
- 静默溯源: 每次静默操作必须记录操作人、原因、到期时间,并关联事故单。
- 自动恢复: 静默期到期后自动恢复通知,避免“永久静默”导致告警黑洞。
- 审计日志: 所有静默操作写入审计日志,供事后复盘。
工程实践: 在变更窗口期间,建议使用“维护窗口静默”配合“变更标签”。当变更系统自动标记服务树节点为“变更中”时,告警引擎自动对该节点下的已知告警进行静默,同时保留未知告警的实时通知能力。
4.5 告警路由与通知策略验证清单
在事故响应变更窗口测试中,需验证以下关键点:
| 验证项 | 验证方法 | 预期结果 |
|---|---|---|
| 服务树路由准确性 | 模拟不同服务树路径的告警,检查路由目标 | 告警精确到达对应值班人 |
| 渠道编排顺序 | 模拟告警不确认场景,检查渠道触发顺序 | IM→短信→电话 按超时时间递进 |
| 升级策略超时 | 模拟 L1 不确认,检查 L2 是否在 T1+T2 后收到 | 升级时间符合配置 |
| 静默期生效 | 在静默窗口内触发告警,检查是否发送通知 | P2/P3 告警被抑制,P0 告警正常通知 |
| 静默期自动恢复 | 等待静默期到期后触发告警 | 告警通知恢复正常 |
关键提醒: 告警路由与通知策略的测试不能只在预发环境执行。必须定期在生产环境进行“混沌工程式”的告警注入演练,验证真实链路的可靠性。静默期配置错误是导致“告警黑洞”的首要原因,务必纳入变更窗口的自动化回归测试。