在 Seeker 项目中,异常(Anomaly)指的是时间序列中明显偏离预期行为的数据点或模式。根据历史数据学习得到的正常行为作为基准,可以识别以下类型的异常:
点异常: 单个数据点明显高于或低于序列中的其他值。
上下文异常: 数据点在特定上下文中才被视为异常(例如:某个值在周末是正常的,但在工作日则属于异常)。
集体异常: 一组数据点作为整体呈现异常,即使单个点可能都在正常范围内。
Seeker 目前主要聚焦于单变量时间序列的点异常检测。以下类型的异常暂不在支持范围内:
- 上下文异常
- 渐变趋势或微小的趋势变化
- 多变量或高度不规则时间序列中的异常
- 需要领域专业知识或外部上下文的异常
点异常是最简单也是最常见的异常类型,非常适合首次实验和演示。例如,CPU 使用率和内存占用的瞬时突增或突降都属于点异常。
检测方法
统计方法
- Z-score(标准分数)法
- IQR(四分位距)法
- EWMA(指数加权移动平均)法
机器学习方法
- Isolation Forest(孤立森林)
- LOF(局部离群因子)
构建一个智能、可靠的CPU异常检测系统,减少误报,提高运维效率。
🔧 技术架构:多算法融合 + 智能评分
- 第一步:多算法并行检测
- 同时运行5种检测算法:Z-score、IQR、EWMA、Isolation Forest、LOF
- 优势: 避免单一算法的偏差,提高检测的鲁棒性
- 第二步:三维评分体系
综合评分 = 40% × 方法一致性 + 40% × 偏离程度 + 20% × 持续性- 方法一致性评分 (40%)
- 统计有多少种算法认为是异常
- 体现"民主投票"原则,减少误报
- 偏离程度评分 (40%)
- 计算数据点偏离正常值的程度
- 客观反映异常的严重性
- 持续性评分 (20%)
- 评估异常在时间上的连续性
- 过滤瞬时噪声,关注真正的问题
- 第三步:双重验证机制
最终异常 = Isolation Forest初筛 AND (多算法一致 OR 高评分)- 基础筛选: 必须被Isolation Forest检测到
- 验证条件: 至少2种方法一致 OR 评分超过99%分位数
- 第四步:智能分级
- P0 (紧急): 评分最高1/3,立即处理
- P1 (重要): 评分中等1/3,重点关注
- P2 (一般): 评分较低1/3,可延后处理
选择 3 作为阈值基于统计学中的"三西格玛法则"(68-95-99.7规则):
- ±1σ 区间:包含约 68% 的数据
- ±2σ 区间:包含约 95% 的数据
- ±3σ 区间:包含约 99.7% 的数据
- 较低阈值(如 2σ):检测更敏感但假阳性率更高
- 较高阈值(如 4σ):假阳性率低但可能漏检
- 3σ:在大多数场景下能较好平衡准确率和召回率
- Q1(第一四分位数):25% 的数据小于此值
- Q3(第三四分位数):75% 的数据小于此值
- IQR = Q3 - Q1:包含中间 50% 数据的范围
- 用于控制检测的敏感度
- k=1.5:标准设置,检测强度适中
- k=3.0:宽松设置,降低误报
- k 值越小,检出的异常越多
- 下界 = Q1 - k×IQR
- 上界 = Q3 + k×IQR
- 超出这些边界的点被判定为异常
- EWMA(指数加权移动平均)对最近的数据赋予更高权重
- 通过移动窗口计算局部统计特征
- 特别适合检测突发性异常
- 控制移动窗口大小和权重衰减速度
- span越小,对近期数据越敏感
- span=5:快速响应,适合检测突变
- span=20:平滑处理,降低误报
- 用于控制检测的敏感度
- threshold=1.5:敏感度高,可能有更多误报
- threshold=3.0:更保守,减少误报
- threshold越小,检出的异常越多
- 计算数据点与EWMA均值的偏差
- 将偏差与局部标准差的threshold倍比较
- 超出阈值的点被判定为异常
- 基于树结构的无监督学习方法
- 通过随机分割空间来隔离异常点
- 异常点通常更容易被隔离
- 用于指定预期的异常比例
- contamination=0.01:预期1%的数据是异常
- contamination=0.1:预期10%的数据是异常
- 值越大检出的异常越多
- 计算每个数据点的隔离度
- 隔离度越高越可能是异常
- 根据contamination设定的比例确定阈值
- 基于密度的局部离群点检测
- 计算每个点相对于其邻域的局部密度
- 密度显著低于邻居的点被判定为异常
- n_neighbors(通常取20-50):用于计算局部密度的邻居数
- contamination(通常取0.01-0.1):预期的异常比例
- 计算每个点的局部离群因子
- 因子值越大表示越可能是异常
- 根据contamination参数确定阈值
| 检测方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| Z-score | CPU突发峰值监控 | • 计算简单 • 容易理解 • 适合正态分布数据 |
• 受极端值影响大 • 假设数据正态分布 |
| IQR | 长期趋势异常 | • 对异常值不敏感 • 不依赖数据分布 • 稳定性好 |
• 不适合实时检测 • 可能过于保守 |
| EWMA | 实时监控场景 | • 对突变敏感 • 考虑时序特性 • 适合实时数据 |
• 参数调优较复杂 • 初始阶段不稳定 |
| Isolation Forest | 高维数据分析 | • 计算效率高 • 适用于高维数据 • 不需要假设数据分布 |
• 参数敏感 • 随机性导致结果不稳定 |
| LOF | 密度分布不均匀数据 | • 适应局部密度变化 • 处理复杂分布 • 对尺度不敏感 |
• 计算开销大 • 对参数选择敏感 |
- CPU利用率 ✅ - 实现已经在用这个指标
- 内存利用率 ✅ - 特性相似,可直接应用
- 磁盘I/O ✅ - 通常表现为百分比或速率,适用
- 吞吐量 ❌ - 业务相关,需要上下文感知
- 响应时间 ❌ - 分布特性复杂,需要百分位数分析
- 延迟 ❌ - 类似响应时间,分布长尾特性
- 并发数 ❌ - 具有明显的时间模式和上下文依赖
短期(1-2个月)
- 增强现有系统
- 优化无监督方法的参数
- 实现更好的ensemble策略
- 添加置信度评分
- 开始标签收集
- 基于现有检测结果生成伪标签
- 实现简单的人工反馈机制
- 建立标签质量控制流程
中期(3-6个月)
- 构建有监督模型
- 实现特征工程pipeline
- 训练XGBoost分类器
- 建立模型评估体系
- 实现混合架构
- 无监督+有监督双轨检测
- 实现决策融合逻辑
- 性能和准确率对比评估
长期(6-12个月)
- 系统优化
- 根据生产反馈持续调优
- 实现自动化标签生成
- 模型自适应更新
- 扩展能力
- 支持多指标类型
- 实现上下文感知检测
- 添加异常解释功能