2. 基线核验概念:系统基线、核验必要性与混沌工程定位

基线核验是混沌工程实验的“校准锚点”。在注入任何故障之前,必须明确回答三个问题:系统正常时是什么状态?、如何证明当前状态是正常的?、故障注入后的偏差是否在可接受范围内?。本章从概念、必要性、定位三个层次展开。

2.1 什么是系统基线

系统基线(System Baseline)是指在无故障、正常负载、标准配置下,系统各项可观测指标与行为特征的集合。它既是混沌实验的参照系,也是故障排查的“健康标准”。

维度 基线内容示例 采集方式
性能指标 P99 延迟 ≤ 200ms,吞吐量 ≥ 5000 req/s APM 工具(如 Prometheus + Grafana)
资源利用率 CPU ≤ 70%,内存 ≤ 80%,磁盘 IO ≤ 60% 系统监控(如 node_exporter)
错误率 HTTP 5xx 错误率 ≤ 0.1% 日志聚合(如 ELK)
依赖健康 下游服务超时率 ≤ 0.5%,数据库连接池空闲连接 ≥ 10 分布式追踪(如 Jaeger)
业务指标 订单创建成功率 ≥ 99.9%,支付回调延迟 ≤ 1s 业务埋点 + 实时数仓
实践要点:基线不是静态的。每次发布新版本、变更配置、扩缩容后,都应重新采集基线数据。建议将基线采集自动化,作为 CI/CD 流水线中的一个环节。

2.2 为什么需要基线核验

基线核验(Baseline Verification)是对系统基线进行确认、校准与持续验证的过程。其必要性体现在以下四个层面:

  1. 消除“假阳性”与“假阴性”:没有基线,无法区分故障注入导致的异常与系统本身存在的波动。例如,某服务 P99 延迟在无故障时已达 500ms,注入故障后变为 600ms,若基线未核验,可能误判为故障影响严重。
  2. 提供故障排查的“健康锚点”:当故障注入后出现异常,排查人员需要快速对比“当前状态”与“基线状态”,定位偏差来源。基线核验确保了锚点的准确性。
  3. 量化故障影响范围:通过基线核验,可以定义“故障影响度”指标,如延迟偏移率、错误率增量、吞吐量下降百分比等,使混沌实验结果可度量、可比较。
  4. 满足合规与审计要求:在金融、医疗等强监管行业,混沌实验需要提供“实验前系统正常”的客观证据。基线核验报告是合规审计的关键输入。
关键公式:故障影响度 = (实验期指标值 - 基线指标值) / 基线指标值 × 100%。基线核验的准确性直接决定了该公式的可信度。

2.3 基线核验在混沌工程中的定位与价值

在混沌工程实验流程中,基线核验处于“实验设计”与“故障注入”之间的关键衔接环节。其定位可用下图表示:

基线核验在混沌工程流程中的定位 1. 实验设计 定义假设与指标 2. 基线核验 确认系统健康状态 校准观测指标 3. 故障注入 执行混沌实验 4. 分析 反馈闭环:基线校准与实验优化 基线核验的核心价值 • 提供故障注入前的“健康快照”,作为实验结果的对比基准。 • 识别系统已有的隐性缺陷,避免在“带病”系统上执行混沌实验。 • 量化故障影响,使实验结论从“感觉异常”升级为“指标偏差 X%”。 • 驱动实验设计优化:基线数据可揭示哪些指标对故障更敏感,指导后续实验指标选择。 • 为自动化混沌工程提供“门禁”机制:基线核验不通过,禁止执行故障注入。
常见误区:不要将“基线采集”等同于“基线核验”。采集只是获取数据,核验还包括数据校验、异常值剔除、与历史基线对比、确认系统处于稳态等步骤。缺少核验环节的基线,可能包含噪声甚至错误数据,导致整个混沌实验结论不可信。

2.4 基线核验的典型输出

一次完整的基线核验应产出以下内容,作为混沌实验报告的组成部分:

  • 基线指标快照:包含所有关键指标在核验时间窗口内的均值、P50、P95、P99、最大值、最小值。
  • 基线健康声明:明确声明“系统在核验期间处于健康状态”,并列出健康判断依据(如所有指标在阈值范围内)。
  • 基线偏差记录:若发现指标偏离历史基线,需记录偏差值及初步原因分析(如发布变更、流量波动等)。
  • 核验时间戳与操作人:确保基线核验过程可追溯。
自动化建议:使用工具(如 Chaos Mesh、LitmusChaos)的“基线检查”插件,或自建脚本定期执行基线核验,并将结果写入时序数据库。混沌实验触发时,自动拉取最近一次核验结果作为实验基线。