2. 基线核验概念:系统基线、核验目的与指标定义
在混沌工程实践中,系统基线(System Baseline)是故障注入前必须建立的可量化参考坐标系。没有基线,故障注入后的观测数据将失去比较基准,无法判断系统行为是否“正常”。本节从基线定义、核验目的和指标定义三个层面展开,为后续故障注入评审奠定度量基础。
2.1 什么是系统基线
系统基线是指在无故障、稳态运行条件下,对系统关键行为指标进行持续采集后形成的可重复参考值集合。它并非单次快照,而是通过统计方法(均值、P99、标准差)对一段时间内系统表现的量化描述。
基线 ≠ 监控阈值:基线描述“正常是什么样”,阈值定义“什么算异常”。基线是动态的,随版本、流量、配置变化而更新;阈值通常是静态告警线。
系统基线通常包含以下维度:
- 性能基线:响应时间、吞吐量、并发连接数、CPU/内存利用率。
- 可用性基线:请求成功率、错误率、健康检查通过率。
- 容量基线:最大支撑 QPS、资源饱和度拐点。
- 依赖基线:下游服务调用延迟、缓存命中率、数据库连接池水位。
2.2 基线核验的目的
基线核验(Baseline Verification)是在故障注入之前,对已建立的系统基线进行有效性、完整性和可重复性的确认过程。其核心目的包括:
- 确认系统处于已知正常状态:排除已存在隐性故障或配置漂移,确保注入前系统“干净”。
- 验证观测工具链的准确性:确认监控、日志、链路追踪等数据采集通道工作正常,数据无丢失、无延迟。
- 建立可量化的比较基准:为故障注入后的指标偏差提供统计意义上的参考区间(如均值 ± 3σ)。
- 识别基线漂移:对比历史基线,发现因版本变更、流量模式变化导致的系统行为偏移。
- 降低误判风险:避免将基线本身的波动误判为故障注入的影响。
实践建议:在每次故障注入实验前,至少执行 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 分钟 |
2.4 基线核验的常见误区
⚠️ 常见误区清单:以下问题在基线核验评审中需重点审查,避免将错误基线带入故障注入阶段。
- 误区一:基线采集时间不足 —— 仅采集数小时数据,未覆盖业务高低峰周期,导致基线无法反映真实波动范围。
- 误区二:忽略资源竞争基线 —— 只关注应用层指标,未建立 CPU、内存、网络 I/O 等资源基线,故障注入后无法区分是注入影响还是资源争抢。
- 误区三:基线指标粒度过粗 —— 使用分钟级聚合数据掩盖了秒级毛刺,导致故障注入后的细微异常被平滑掉。
- 误区四:基线未随版本更新 —— 使用三个月前的基线数据,系统经过多次发布后行为已发生偏移,比较失去意义。
- 误区五:核验过程无记录 —— 未保留核验原始数据和判定结论,评审时无法追溯基线是否真实有效。
评审检查点:在故障注入评审会议中,基线核验部分应至少包含以下三项交付物:
① 基线采集时间窗口及数据量说明;
② 各指标基线值(均值、P99、标准差)表格;
③ 核验判定结论及签字确认。
① 基线采集时间窗口及数据量说明;
② 各指标基线值(均值、P99、标准差)表格;
③ 核验判定结论及签字确认。