1. 课程导论:为什么需要异常检测校准?SLI口径与基线阈值的核心概念

1.1 从“告警疲劳”到“精准感知”:异常检测校准的驱动力

在SRE实践中,未校准的异常检测直接导致两大经典困境:告警风暴与漏报沉默。前者使值班团队麻木,后者让故障影响范围扩大。校准的本质是让检测系统对“真实异常”的敏感度与业务容忍度对齐。

核心矛盾: 静态阈值无法适应动态流量特征。例如,电商平台“双11”大促期间,QPS(每秒查询数)飙升300%是正常现象,而非异常。若阈值未校准,系统将产生大量无效告警。

异常检测校准需要解决三个关键问题:

  1. 信号与噪声的分离: 区分业务周期性波动(如每日高峰)与真实故障(如突发的错误率飙升)。
  2. 口径一致性: 确保SLI(服务等级指标)的采集、聚合、计算方式在检测前后保持一致。
  3. 基线动态性: 基线阈值必须随业务演进(如版本发布、用户增长)自动调整,而非人工定期修改。

1.2 SLI口径:定义“测量什么”与“如何测量”

SLI(Service Level Indicator)是服务质量的具体量化指标。口径(Caliber)决定了SLI的有效性与可比性。口径不一致的SLI,其异常检测结果毫无意义。

口径维度 错误示例 正确示例
时间窗口 混合1分钟与5分钟聚合数据 统一使用1分钟滑动窗口
成功定义 仅HTTP 200视为成功 HTTP 2xx/3xx + 业务逻辑成功码
采样范围 仅包含核心机房流量 全机房+边缘节点流量
聚合粒度 全局平均,忽略分片差异 按分片/地域分位值聚合(如P99)
实践建议: 在定义SLI口径时,必须同时记录其“元数据”(如采集频率、聚合函数、异常值处理规则)。元数据是后续校准基线阈值的前提。

1.3 基线阈值:从“静态规则”到“动态自适应”

基线阈值是判断SLI是否异常的边界。传统静态阈值(如“延迟 > 200ms 告警”)在复杂系统中已不可靠。现代基线阈值需具备自适应与多维度能力。

  • 静态阈值: 适用于稳定、无周期性变化的指标(如磁盘使用率)。
  • 动态基线: 基于历史数据(如过去7天同一时段)计算,适用于周期性指标(如CPU使用率)。
  • 预测基线: 使用时间序列模型(如Prophet、ARIMA)预测未来值,适用于有趋势或季节性变化的指标(如日活用户数)。

基线阈值的选择直接影响检测效果:

基线类型 适用场景 校准频率 典型算法
静态阈值 资源水位、硬件监控 人工设定,极少变更 固定上下界
动态基线(滑动窗口) Web应用延迟、错误率 每小时/每天自动更新 均值±3σ、MAD
预测基线 业务流量、用户增长 每天/每周模型重训 Prophet、STL分解

1.4 校准流程:SLI口径与基线阈值的对齐

异常检测校准不是一次性工作,而是一个持续迭代的闭环。下图展示了从SLI定义到阈值生效的核心流程:

异常检测校准闭环流程 SLI口径定义 采集/聚合/成功定义 历史数据采集 至少7天窗口 基线计算 均值/分位/预测 阈值生成 上下界/动态区间 在线检测 实时SLI vs 阈值 反馈校准 误报/漏报分析 校准关键点: 1. 口径变更后必须重新计算基线 2. 反馈校准结果用于调整基线算法参数

1.5 未校准的代价:一个量化案例

假设一个支付服务的SLI口径为“P99延迟 < 500ms”,但存在以下未校准问题:

  • 口径问题: 仅采集了核心支付链路的延迟,忽略了回调通知链路的延迟。
  • 基线问题: 阈值固定为500ms,未考虑晚间业务高峰期的正常波动。

结果:

  • 白天高峰期:P99延迟正常波动至480ms,但系统误报为异常,触发无效告警。
  • 晚间低峰期:回调链路延迟飙升至800ms,但核心链路延迟仅200ms,系统漏报。
教训: 未校准的异常检测不仅浪费运维精力,更会掩盖真实故障。校准是SRE可观测性建设的“第一公里”。

1.6 本章小结:校准是SRE可观测性的基石

异常检测校准不是可选的优化项,而是保障系统可靠性的必要环节。它要求SRE团队:

  1. 严格定义SLI口径,确保测量的一致性与完整性。
  2. 选择匹配业务特征的基线算法,并建立自动校准机制。
  3. 构建反馈闭环,持续优化检测效果。