1. 课程导论:为什么需要异常检测校准?SLI口径与基线阈值的核心概念
1.1 从“告警疲劳”到“精准感知”:异常检测校准的驱动力
在SRE实践中,未校准的异常检测直接导致两大经典困境:告警风暴与漏报沉默。前者使值班团队麻木,后者让故障影响范围扩大。校准的本质是让检测系统对“真实异常”的敏感度与业务容忍度对齐。
核心矛盾: 静态阈值无法适应动态流量特征。例如,电商平台“双11”大促期间,QPS(每秒查询数)飙升300%是正常现象,而非异常。若阈值未校准,系统将产生大量无效告警。
异常检测校准需要解决三个关键问题:
- 信号与噪声的分离: 区分业务周期性波动(如每日高峰)与真实故障(如突发的错误率飙升)。
- 口径一致性: 确保SLI(服务等级指标)的采集、聚合、计算方式在检测前后保持一致。
- 基线动态性: 基线阈值必须随业务演进(如版本发布、用户增长)自动调整,而非人工定期修改。
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定义到阈值生效的核心流程:
1.5 未校准的代价:一个量化案例
假设一个支付服务的SLI口径为“P99延迟 < 500ms”,但存在以下未校准问题:
- 口径问题: 仅采集了核心支付链路的延迟,忽略了回调通知链路的延迟。
- 基线问题: 阈值固定为500ms,未考虑晚间业务高峰期的正常波动。
结果:
- 白天高峰期:P99延迟正常波动至480ms,但系统误报为异常,触发无效告警。
- 晚间低峰期:回调链路延迟飙升至800ms,但核心链路延迟仅200ms,系统漏报。
教训: 未校准的异常检测不仅浪费运维精力,更会掩盖真实故障。校准是SRE可观测性建设的“第一公里”。
1.6 本章小结:校准是SRE可观测性的基石
异常检测校准不是可选的优化项,而是保障系统可靠性的必要环节。它要求SRE团队:
- 严格定义SLI口径,确保测量的一致性与完整性。
- 选择匹配业务特征的基线算法,并建立自动校准机制。
- 构建反馈闭环,持续优化检测效果。