2. 基线核验概念:系统基线、核验目的与指标定义

在混沌工程实践中,系统基线(System Baseline)是故障注入前必须建立的可量化参考坐标系。没有基线,故障注入后的观测数据将失去比较基准,无法判断系统行为是否“正常”。本节从基线定义、核验目的和指标定义三个层面展开,为后续故障注入评审奠定度量基础。

2.1 什么是系统基线

系统基线是指在无故障、稳态运行条件下,对系统关键行为指标进行持续采集后形成的可重复参考值集合。它并非单次快照,而是通过统计方法(均值、P99、标准差)对一段时间内系统表现的量化描述。

基线 ≠ 监控阈值:基线描述“正常是什么样”,阈值定义“什么算异常”。基线是动态的,随版本、流量、配置变化而更新;阈值通常是静态告警线。

系统基线通常包含以下维度:

  • 性能基线:响应时间、吞吐量、并发连接数、CPU/内存利用率。
  • 可用性基线:请求成功率、错误率、健康检查通过率。
  • 容量基线:最大支撑 QPS、资源饱和度拐点。
  • 依赖基线:下游服务调用延迟、缓存命中率、数据库连接池水位。
系统基线概念结构 系统基线 性能基线 可用性基线 容量基线 依赖基线 响应时间 · 吞吐量 成功率 · 错误率 最大QPS · 饱和度 调用延迟 · 命中率 基线需在无故障稳态下持续采集 ≥ 7 天

2.2 基线核验的目的

基线核验(Baseline Verification)是在故障注入之前,对已建立的系统基线进行有效性、完整性和可重复性的确认过程。其核心目的包括:

  1. 确认系统处于已知正常状态:排除已存在隐性故障或配置漂移,确保注入前系统“干净”。
  2. 验证观测工具链的准确性:确认监控、日志、链路追踪等数据采集通道工作正常,数据无丢失、无延迟。
  3. 建立可量化的比较基准:为故障注入后的指标偏差提供统计意义上的参考区间(如均值 ± 3σ)。
  4. 识别基线漂移:对比历史基线,发现因版本变更、流量模式变化导致的系统行为偏移。
  5. 降低误判风险:避免将基线本身的波动误判为故障注入的影响。
实践建议:在每次故障注入实验前,至少执行 30 分钟的基线核验窗口。如果核验期间发现指标波动超过基线 P99 的 20%,应中止注入并排查系统状态。

2.3 基线指标定义

基线指标的选择遵循 MECE(Mutually Exclusive, Collectively Exhaustive) 原则,确保覆盖系统关键行为且指标间不重叠。以下为通用基线指标定义模板:

指标类别 指标名称 定义与计算方式 采集周期
性能 P99 响应时间 99% 百分位请求完成时间,单位 ms 1 分钟
吞吐量 (QPS) 每秒成功处理的请求数 1 分钟
可用性 请求成功率 HTTP 2xx/3xx 响应数 ÷ 总请求数 × 100% 1 分钟
健康检查通过率 连续 3 次健康检查成功的实例数 ÷ 总实例数 10 秒
容量 CPU 利用率 系统 CPU 使用率(用户态 + 内核态) 10 秒
内存利用率 已用内存 ÷ 总可用内存 × 100% 10 秒
依赖 下游调用 P99 延迟 依赖服务响应时间的 99% 百分位 1 分钟
缓存命中率 缓存读取命中次数 ÷ 总读取次数 × 100% 1 分钟
基线指标定义与核验流程 1. 指标选择 MECE 原则 2. 数据采集 ≥ 7 天稳态数据 3. 统计建模 均值 · P99 · 标准差 4. 基线核验 30min 验证窗口 核验判定:指标波动是否在基线 P99 范围内? ✅ 通过:基线有效 可进行故障注入 ❌ 未通过:基线漂移 排查原因后重新采集 基线核验是故障注入的“准入检查”,未通过核验不得执行注入 核验记录需纳入评审文档,作为实验可追溯性依据

2.4 基线核验的常见误区

⚠️ 常见误区清单:以下问题在基线核验评审中需重点审查,避免将错误基线带入故障注入阶段。
  • 误区一:基线采集时间不足 —— 仅采集数小时数据,未覆盖业务高低峰周期,导致基线无法反映真实波动范围。
  • 误区二:忽略资源竞争基线 —— 只关注应用层指标,未建立 CPU、内存、网络 I/O 等资源基线,故障注入后无法区分是注入影响还是资源争抢。
  • 误区三:基线指标粒度过粗 —— 使用分钟级聚合数据掩盖了秒级毛刺,导致故障注入后的细微异常被平滑掉。
  • 误区四:基线未随版本更新 —— 使用三个月前的基线数据,系统经过多次发布后行为已发生偏移,比较失去意义。
  • 误区五:核验过程无记录 —— 未保留核验原始数据和判定结论,评审时无法追溯基线是否真实有效。
评审检查点:在故障注入评审会议中,基线核验部分应至少包含以下三项交付物:
① 基线采集时间窗口及数据量说明;
② 各指标基线值(均值、P99、标准差)表格;
③ 核验判定结论及签字确认。