编译自Generic and Scalable Framework for Automated Time-series Anomaly Detection
作者:Nikolay Laptev, Saeed Amizadeh, Ian Flint
背景
虽然计算软硬件的快速发展已经极大地提高了应用的性能,但大型集群中依然存在各类软硬件问题,影响了用户体验和收益。系统需要不间断运行,对系统的监控也必须持续进行。从数据分析角度来看,只有不间断监控大量时序数据才能监测到潜在的故障或异常。由于系统异常或软件bug很多,人工监控几乎是不可能的,因此非常有必要通过机器学习和数据挖掘技术进行自动化异常检测。
本文介绍了雅虎开发的大规模时序数据自动化异常检测的可扩展通用框架EGADS。异常检测对于维护数据一致性非常重要,能够有效拦截恶意攻击。现有的异常检测工具在扩展性、用例限制、使用难度等方面存在很大局限。EGADS通过多种异常检测和预测模型构建了异常过滤层,实现了准确的时序数据检测。相比其他异常检测工具,EGADS在准确度和召回率方面有了50-60%的提升。EGADS框架与异常检测基准数据均已开源,旨在建立异常检测标准。
1. EGADS架构
EGADS框架由三个主要部分组成:时间序列建模模块(TMM)、异常检测模块(ADM)和报警模块(AM)。给定一个时间序列,TMM组件针对时间序列建模,生成预期值;预期值由ADM和AM组件进行消费处理。其中,ADM负责计算误差,AM负责过滤无关异常。
EGADS是一个框架,便于与现有监控基础设施集成。雅虎内部监控工具雅虎监控服务(YMS)每秒处理数百万个数据点。因此,对YMS进行精准可扩展的自动化异常检测至关重要。下面将详细介绍与YMS的集成。
1.1系统集成
EGADS作为独立平台运行,可用作大型系统中的库。因此,EGADS与YMS之间的接口至关重要。YMS每秒处理数百万个数据点。因此,很多集成架构决策主要关注优化实时数据处理。EGADS与YMS的集成架构图如下所示。
此外,还需要几个支持组件。首先,所有异常检测模型都是离线批处理(batch)产生的,然后应用到实时环境(real time)。其中批处理由三个步骤组成:
1. 监控数据(即监控的时间序列数据)批量存储在Hadoop集群上。
2. 批量模型生成器基于监控数据运行,并为目标时间序列构建模型。
3. 模型存储在模型数据库中。
接下来,在线实时流便会使用这些存储下来的模型,具体步骤如下:
1. 数据流入Storm进行流式处理。
2. 集群中的一个模块调用EGADS ADM,根据存储在模型数据库中的模型来评估流入的数据点。
3. 如果存在异常,则将其发送到辅助规则流。辅助规则流由组合规则和基于特定用例的逻辑组成。
4. 根据规则,如果异常是报警事件,则生成事件,将事件存储在状态数据库中&