3. 异常检测基础:定义、常见类型与检测方法概述

异常检测是可观测性体系中“发现未知故障”的第一道防线。与基于静态阈值的告警不同,异常检测旨在从时序数据中自动识别偏离正常行为模式的观测点,从而在用户感知之前捕获系统隐患。本节将系统梳理异常检测的核心定义、四大常见异常类型以及主流检测方法的技术选型逻辑。

3.1 异常检测定义

在 Metric 可观测性语境下,异常检测是指:通过统计或机器学习方法,对时序指标(如 QPS、P99 延迟、错误率、CPU 使用率)建立正常行为基线,并实时判断当前观测值是否显著偏离该基线的过程。

关键公式(Z-Score 基础模型)

Z = (X - μ) / σ

其中:
  X  = 当前观测值
  μ  = 滑动窗口内的均值(基线)
  σ  = 滑动窗口内的标准差
  |Z| > 3  → 通常判定为异常(3σ 原则)

实际生产环境中,基线 μ 和 σ 需考虑周期性(日/周/月)与趋势成分,避免将正常业务高峰误报为异常。

3.2 常见异常类型

根据时序曲线的形态变化,异常可归纳为四种典型模式。理解这些模式是设计检测算法和 MTTR 复盘口径的前提。

异常类型 定义 典型场景 MTTR 复盘关注点
突增 (Spike) 指标在短时间内急剧上升,超出基线上限 流量突增、缓存穿透、DDoS 攻击 触发时间、扩容响应、限流生效时间
突降 (Drop) 指标在短时间内急剧下降,跌破基线下限 服务宕机、网络分区、上游依赖中断 故障发现延迟、恢复操作耗时
抖动 (Jitter) 指标在短时间内频繁、不规则地上下波动 GC 抖动、网络重传、资源争抢 抖动频率、根因定位难度、临时止血措施
漂移 (Drift) 指标长期缓慢偏离基线,呈单调上升或下降趋势 内存泄漏、数据量持续增长、慢查询累积 趋势拐点、容量规划、代码/配置变更关联

实战建议:在 MTTR 复盘时,应首先确认异常类型。突增/突降通常对应明确的故障事件,MTTR 以分钟计;抖动和漂移往往需要更长的根因分析链路,复盘口径应包含“首次抖动时间”和“漂移开始时间”两个关键时间戳。

3.3 异常检测方法概述

异常检测方法的选择直接影响检测延迟、误报率和运维成本。以下从工程落地角度,将主流方法分为三类进行对比。

3.3.1 方法分类与对比

方法类别 代表算法 适用异常类型 计算开销 可解释性 生产推荐度
统计方法 3σ、MAD、IQR、EWMA 突增、突降 低 高 ★★★★★
时间序列分解 STL、Prophet、移动平均分解 漂移、周期性异常 中 中 ★★★★☆
机器学习方法 Isolation Forest、LOF、Autoencoder 抖动、复杂多维异常 高 低 ★★★☆☆

3.3.2 检测流程与选型逻辑

一个生产级的异常检测系统通常遵循以下流水线:

  1. 数据预处理:填充缺失值、去除毛刺、重采样对齐。
  2. 基线建模:根据指标周期(如 7 天同时间窗口)计算 μ 和 σ,或训练分解模型。
  3. 异常评分:计算当前点与基线的偏离程度(Z-Score、残差、密度距离)。
  4. 阈值判定:静态阈值 + 动态阈值结合,减少误报。
  5. 告警抑制:连续 N 个点异常才触发告警,避免毛刺干扰。

避坑提示:不要对所有指标使用同一套检测参数。QPS 适合用统计方法 + 短窗口;内存使用率适合用漂移检测 + 长窗口;错误率适合用突增检测 + 低阈值。MTTR 复盘时,如果发现检测延迟过高,应优先检查基线窗口长度和告警抑制策略是否合理。

异常检测方法选型决策树 时序指标异常检测 突增 / 突降 漂移 / 趋势 抖动 / 复杂异常 统计方法 (3σ / MAD) 时间序列分解 (STL) 机器学习 (Isolation Forest) 优点:计算快、可解释性强 缺点:对周期性不敏感 优点:捕捉趋势和周期 缺点:计算开销中等 优点:适合高维/非线性 缺点:可解释性差、资源消耗高 生产选型建议 优先使用统计方法覆盖 80% 的突增/突降场景;对漂移类指标叠加 STL 分解; 仅在抖动类或多维异常场景引入机器学习,并做好模型监控与回退机制。

3.4 异常检测与 MTTR 复盘的关系

异常检测的质量直接决定了 MTTR 复盘中的两个核心指标:检测时间 (TTD) 和 诊断时间 (TTDx)。一个设计良好的检测系统应满足:

  • 低延迟:异常发生后 1-2 个数据点内触发告警。
  • 高精度:误报率 < 5%,避免运维团队“告警疲劳”。
  • 可解释:告警信息中附带基线值、偏离程度、异常类型,加速诊断。

MTTR 复盘口径设计示例(异常检测阶段)

| 复盘字段            | 数据来源                     | 说明                                   |
|---------------------|------------------------------|----------------------------------------|
| 异常首次发生时间     | 检测系统告警时间戳           | 精确到秒                               |
| 异常类型             | 检测算法分类结果             | 突增/突降/抖动/漂移                    |
| 检测延迟             | 告警时间 - 指标实际异常时间  | 目标 < 60s                            |
| 基线窗口             | 检测算法配置                 | 如:7天同时间窗口 + 30分钟滑动窗口     |
| 误报/漏报标记       | 事后人工确认                 | 用于持续优化检测阈值                   |
异常检测在 MTTR 流程中的位置 指标采集 异常检测 告警通知 诊断 & 恢复 T0 T1 (TTD) T2 T3 (TTDx + TTR) 异常检测对 MTTR 复盘的影响 • TTD(检测时间)= T1 - T0:异常检测延迟越短,MTTR 越低 • 异常类型分类准确度直接影响诊断路径选择 • 检测系统输出的基线信息可辅助根因定位

3.5 小结