4. 验收标准:混沌实验通过/失败判定标准、SLO/SLI与基线的关系

混沌实验的验收不是“实验没报错”或“系统没挂”这种二元结果,而是需要一套可量化的判定体系。本章聚焦三个核心问题:如何定义实验通过/失败、SLO/SLI 如何作为判定依据、基线数据在其中的锚定作用。

4.1 混沌实验通过/失败判定标准

判定标准必须前置定义,在实验设计阶段就写入实验计划。标准分为三个层级:

层级 判定维度 通过条件 失败条件
L1 原子级 实验注入是否生效 目标资源故障注入成功(如 CPU 打满、网络延迟注入) 注入失败、注入未命中目标、注入范围错误
L2 服务级 业务指标是否在 SLO 范围内 实验期间 SLI 均未突破 SLO 阈值 任意 SLI 超出 SLO 阈值,或触发告警/降级/熔断
L3 基线级 恢复后是否回归基线 实验结束后 5 分钟内所有 SLI 恢复至基线 ±5% 区间 恢复后指标偏离基线超过 5%,或出现残留异常
实践建议:L1 是前置条件,L1 失败则实验无效,直接标记为“无效实验”而非“失败”。只有 L1 通过后,才进入 L2 和 L3 的判定。

4.2 SLO/SLI 与基线的关系模型

SLO(服务等级目标)、SLI(服务等级指标)和基线三者构成混沌实验的度量三角:

  • SLI:可测量的原始指标,如 P99 延迟、错误率、吞吐量。
  • SLO:SLI 的目标边界,如“P99 延迟 ≤ 200ms”。
  • 基线:正常生产环境下的 SLI 统计分布,通常取过去 7~30 天的 P50/P95/P99 值。

三者关系可概括为:基线定义“正常”,SLO 定义“可接受”,SLI 定义“当前状态”。混沌实验的通过/失败,本质是验证“当前状态”在故障注入后是否仍在“可接受”范围内,且恢复后能回到“正常”区间。

关键公式:
实验通过 = (SLI实验期间 ≤ SLO阈值) ∧ (SLI恢复后 ∈ 基线区间)
SLO/SLI/基线关系图 SLO / SLI / 基线关系模型 SLI 服务等级指标 P99延迟 / 错误率 / 吞吐量 SLO 服务等级目标 P99 ≤ 200ms / 错误率 ≤ 0.1% 基线 正常状态参考 过去7天P50/P95/P99 实验判定逻辑 SLI 在实验期间 ≤ SLO 阈值,且恢复后 SLI 回归基线区间 → 实验通过

4.3 基线验收的三种典型场景

在实际 GameDay 联动中,基线验收会呈现三种典型结果:

场景 实验期间 SLI 恢复后 SLI 判定结果 后续动作
完全通过 未突破 SLO 回归基线 ±5% 通过 ✅ 更新混沌实验报告,归档基线
部分通过 未突破 SLO 偏离基线 5%~15% 有条件通过 ⚠️ 标记为“需观察”,触发自动回滚或人工确认
不通过 突破 SLO 偏离基线 >15% 或未恢复 失败 ❌ 立即停止实验,触发应急响应,修复后重新验收
注意:“部分通过”场景最容易引发争议。建议在实验计划中提前定义“有条件通过”的容忍窗口(如 5 分钟),超过窗口仍未回归基线则自动转为“不通过”。

4.4 基线漂移与动态基线

基线不是一成不变的。生产环境会因发布、流量变化、基础设施调整而发生基线漂移。混沌实验的验收标准必须考虑基线时效性:

  • 静态基线:取固定时间窗口(如版本发布前 7 天),适合版本级验收。
  • 动态基线:取滚动窗口(如过去 24 小时),适合持续混沌实验。
  • 季节性基线:按业务周期(如工作日 vs 周末、促销期 vs 平峰期)分别建立基线。

推荐在混沌实验计划中明确标注基线来源和基线有效期,避免因基线过期导致误判。

基线漂移与动态基线示意图 基线漂移与动态基线示意图 T0 T1(发布) T2(流量高峰) T3 静态基线 T0 ~ T1 固定窗口 动态基线 滚动 24h 自动更新 季节性基线 工作日/周末 促销期/平峰期 基线选择建议 版本验收 → 静态基线(版本发布前7天) 持续混沌 → 动态基线(滚动24h)

4.5 验收报告关键字段

每次混沌实验的验收结果应记录以下字段,便于后续审计和基线回溯:

实验ID: CHAOS-2025-04-001
目标服务: user-service
注入类型: 网络延迟 500ms
实验时长: 15 分钟
基线窗口: 2025-03-25 ~ 2025-03-31 (7天)
SLO阈值: P99延迟 ≤ 200ms
实验期间 P99: 180ms → 通过
恢复后 P99: 145ms (基线 P99: 140ms) → 偏差 3.6% → 通过
最终判定: ✅ 通过
备注: 恢复后偏差在基线 ±5% 范围内,无需人工干预
自动化建议:将验收判定逻辑编码为自动化脚本,在实验结束后自动比对 SLI、SLO 和基线,生成判定结果并写入混沌实验平台。人工只需审核“有条件通过”和“不通过”的案例。