3. 可靠性评审核心指标:MTTR、MTBF、错误预算、SLO/SLI 在评审中的应用
在变更冻结闸口评审中,仅凭主观经验判断风险远远不够。SRE 团队必须依赖一组量化的可靠性指标,将评审从“感觉是否安全”升级为“数据是否达标”。本章聚焦四个核心指标——MTTR、MTBF、错误预算、SLO/SLI,并说明它们在冻结闸口评审中的具体用法。
3.1 指标定义与评审角色
| 指标 | 全称 | 定义 | 在冻结评审中的角色 |
|---|---|---|---|
| MTTR | Mean Time To Repair | 从故障发生到恢复的平均时长 | 评估团队在冻结期间能否快速止血 |
| MTBF | Mean Time Between Failures | 两次故障之间的平均正常运行时长 | 判断系统固有稳定性,决定冻结窗口长度 |
| 错误预算 | Error Budget | SLO 允许的最大不可用时间 | 冻结前剩余预算是否充足,决定是否放行 |
| SLO/SLI | Service Level Objective / Indicator | 目标值 vs 实际测量值 | 定义评审的准入/准出门限 |
评审原则: 四个指标必须联合使用,单一指标无法全面评估冻结风险。例如 MTBF 很高但错误预算已耗尽,仍应拒绝变更。
3.2 MTTR:冻结期间的恢复能力底线
MTTR 衡量的是故障响应与恢复速度。在变更冻结期间,如果引入的变更导致故障,团队必须在更短的时间内完成回滚或修复,因为冻结期通常伴随人员缩减或值班轮换。
- 评审阈值: 若当前服务的 MTTR > 4 小时,冻结期间必须安排至少 2 名 On-Call 工程师。
- Jaeger 联动: 通过追踪分析历史故障的恢复阶段耗时,识别恢复链路中的瓶颈(如镜像拉取慢、数据库回滚脚本未预置)。
- 典型场景: 某支付服务 MTTR 为 12 分钟,评审通过;另一日志服务 MTTR 为 3.5 小时,评审要求补充回滚预案。
3.3 MTBF:判断冻结窗口的合理长度
MTBF 反映系统的固有稳定性。MTBF 越长,系统越可靠,冻结窗口可以适当延长;反之,冻结窗口应缩短,并增加人工巡检频率。
| MTBF 区间 | 建议冻结窗口 | 评审动作 |
|---|---|---|
| > 720 小时(30 天) | ≤ 7 天 | 正常放行,无需额外监控 |
| 168 ~ 720 小时(7~30 天) | ≤ 3 天 | 要求增加 Jaeger 采样率至 50% |
| < 168 小时(7 天) | ≤ 1 天 | 拒绝冻结,或要求全量灰度 + 人工值守 |
注意: MTBF 计算应排除计划内维护窗口,否则会高估系统稳定性。建议从 Jaeger 的“服务健康看板”中提取非计划故障间隔。
3.4 错误预算:冻结放行的“余额检查”
错误预算是 SLO 与实际可用性之间的差值。在变更冻结评审中,错误预算相当于风险储备金。预算充足时,即使变更引发少量故障,仍能维持整体 SLO;预算不足时,任何变更都可能直接导致 SLO 违约。
- 评审公式: 剩余错误预算 ≥ 预计变更影响时间 × 2(安全系数)。
- 示例: 某服务 SLO 为 99.9%(月错误预算 43.2 分钟),当前已消耗 30 分钟,剩余 13.2 分钟。若变更预计影响 10 分钟,则 13.2 ≥ 20?不满足,评审拒绝。
- Jaeger 联动: 在 Jaeger 中设置错误预算消耗告警,当消耗速度超过线性预测时,自动触发冻结闸口重新评估。
3.5 SLO/SLI:评审的准入与准出门限
SLO(目标)和 SLI(实际测量)构成了评审的量化门限系统。在变更冻结闸口,我们通常设置两级门限:
- 准入门限: 当前 SLI 必须 ≥ SLO 的 90%。若低于此值,说明系统已处于亚健康状态,不应再引入变更。
- 准出门限: 变更完成后,SLI 必须恢复到 SLO 的 95% 以上,否则视为变更失败,自动触发回滚。
Jaeger 集成技巧: 将 SLO 门限配置为 Jaeger 的“服务监控”标签。当 SLI 低于准入门限时,Jaeger 自动在追踪中注入“风险标记”,评审人员可在 Trace 详情页直接看到当前服务的 SLO 健康状态。
3.6 四指标联合评审矩阵
在实际评审中,四个指标并非独立决策,而是构成一个联合评估矩阵。以下矩阵展示了不同指标组合下的评审结论:
| MTTR | MTBF | 错误预算 | SLO/SLI | 评审结论 |
|---|---|---|---|---|
| ≤ 30 min | ≥ 720 h | ≥ 50% | ≥ SLO | ✅ 放行 |
| ≤ 30 min | ≥ 720 h | ≤ 20% | ≥ SLO | ⚠️ 有条件放行(需增加值班) |
| ≥ 2 h | ≥ 720 h | ≥ 50% | ≥ SLO | ⚠️ 有条件放行(需预置回滚脚本) |
| ≥ 2 h | ≤ 168 h | ≤ 20% | ≤ SLO | ❌ 拒绝 |
3.7 从指标到追踪:Jaeger 数据如何反哺评审
上述指标并非静态数字,它们可以从 Jaeger 的分布式追踪中实时计算:
- MTTR: 通过追踪中“故障 span”的结束时间戳与“恢复 span”的开始时间戳之差计算。
- MTBF: 通过追踪中连续两次“错误 span”的时间间隔统计。
- 错误预算: 通过追踪中 SLI 指标的累计错误计数与总请求数之比实时更新。
- SLO/SLI: 通过 Jaeger 的“服务健康”仪表板直接导出,支持按时间窗口滑动计算。
3.8 评审检查清单(基于指标)
- MTTR 检查: 当前服务 MTTR 是否 ≤ 30 分钟?若否,是否已安排额外值班人员?
- MTBF 检查: 最近 30 天 MTBF 是否 ≥ 168 小时?若否,冻结窗口是否已缩短?
- 错误预算检查: 剩余错误预算是否 ≥ 预计变更影响时间 × 2?
- SLO/SLI 检查: 当前 SLI 是否 ≥ SLO 的 90%?变更后是否 ≥ 95%?
- Jaeger 数据源检查: 上述指标是否全部来自 Jaeger 实时追踪,而非手工填报?
最佳实践: 将上述检查清单自动化集成到变更审批系统中。当所有指标均通过时,系统自动放行;否则自动升级到人工评审。结合 Jaeger 的 Webhook,每次指标变化时重新评估冻结状态。