云系统中的异常检测方法

Posted 嘉为科技

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了云系统中的异常检测方法相关的知识,希望对你有一定的参考价值。

云系统中的异常检测方法_异常检测

随着云技术的飞速发展,云系统的复杂性和规模不断增加,云系统的稳定性受到了极大挑战。为了解决运维问题,运营商会通过指标(Metrics)、日志(Logs)等多个维度信息来了解云系统的运行状态。

本文介绍的方法是通过分析系统指标(如CPU 使用率、I/O 请求数、网络吞吐量等)对云系统进行异常检测。

对于这些指标数据,研究人员提出了单变量的时间序列异常检测方法。但随着云系统复杂性的增加,运维人员可以收集的指标越来越多,该方法往往无法反映云系统整体的异常情况。

基于此种情况,研究人员又提出了多元时间序列异常检测,这种方法虽然考虑了云系统中多个指标,但没有将云系统中的组织结构考虑进来,适用性也不太好。

在复杂的云系统中我们以系统拓扑结构为基础,获得系统状态的基于图的表示,进而进行异常检测。随着深度神经网络的迅速发展,研究人员提出了基于深度学习的异常检测方法,将图神经网络与RNN和CNN一起应用来同时考虑空间和时间关系,对云系统中数据以及拓扑结构进行建模。

一、常用的异常检测方法

1. 传统异常检测方法

静态阈值:原指标超过阈值即异常。

3sigma:计算当前值是否偏离历史均值且偏离程度达3个标准差。

基于分类的方法,例如支持向量机。

基于最邻近方法,例如局部异常因子。

2. 深度学习方法

充分利用指标中的时序信息进行异常检测。

基于预测的方法:

基于重构的方法:

基于深度学习的方法是根据历史数据利用深度学习模型进行建模,对需要检测的数据进行预测或重构,误差大则判定为异常。

二、TopoMAD 方法特点

1. TopoMAD引入了图神经网络(GNN),与传统DNN相比有如下优势:

云系统中的异常检测方法_神经网络_02

▲    GNN相比DNN的优势

2. TopoMAD引入了拓扑信息:

● 图神经网络的特征提取器共享于来自不同组件的同类指标之间,有助于在统一的特征学习下捕获相同指标类型之间的相似模式。

● 通过图神经网络,组件可以由与其他组件之间的连接来定义,这为对系统中所有组件的模式和行为进行端到端学习提供了便利。

● 拓扑信息可以引导模型将注意力集中在现实中具有直接连接的组件的交互上,这有助于防止我们的模型过度拟合。

3. 相比于其他方法的阈值选择,引入无监督的方式来生成阈值,不需要对阈值进行调参,可以减少模型的调参难度。

三、TopoMAD 方法介绍

本文介绍一种基于变分自动编码器(VAE)设计的异常检测器。

这是一种拓扑感知多元时间序列的异常检测器(TopoMAD),它结合了图神经网络(GNN)、长短期记忆 (LSTM) 和变分自动编码器VAE为云系统执行无监督异常检测。

TopoMAD方法主要有以下几个方面的特点:

● TopoMAD是一种无监督异常检测方法,该方法考虑了云系统的拓扑信息。我们将此拓扑信息与云系统中收集的指标相结合,构建了基于图的异常检测表示。

● TopoMAD将图神经网络和 LSTM 作为 VAE 的基本结构粘合在一起,在拓扑时间序列中进行异常检测。图神经网络提取云系统的空间拓扑信息,LSTM随着时间窗口从滑动窗口提取信息。

● TopoMAD利用随机模型VAE以完全无监督的方式对云系统进行异常检测,在包括正常和异常的数据上训练模型,同时还提出了一种无监督的阈值选择方法。

TopoMAD的整体流程如下:

云系统中的异常检测方法_数据_03

▲    TopoMAD总体结构

数据集成和处理

通过数据标准化转换从不同节点收集的不同数据,获得从每个节点收集的指标X和描述系统拓扑的数组E。

模型训练

以离线批处理的方式使用历史数据训练模型。模型训练好后,我们根据训练数据的异常分数分布选择一个阈值。

阈值选择

该方法以无监督方法选择了一个阈值,该阈值使正常数据和异常数据集合之间的距离最大化。

在线异常检测

使用这个经过适当训练的模型计算新观察的异常分数。如果观察的异常分数高于我们选择的阈值,则会触发警报。

1. 数据集成和预处理

在数据预处理期间,我们通过数据标准化过程转换从不同节点收集的不同指标,然后在这些集合和处理后的数据中取出一定长度的滑动窗口作为输入。

输入数据有两类:

● X为指标矩阵,横坐标是节点(Node),纵坐标是指标(Metric),矩阵每行表示节点各个指标的数值。

● E为系统的拓扑结构,系统拓扑中两个具有相关关系的节点为一条边,每条边构成E的一个列向量。

云系统中的异常检测方法_异常检测_04

▲   输入数据样例

2. 模型设计

TopoMAD方法中模型的架构流程如下:

云系统中的异常检测方法_数据_05

● 整个网络是一个随机seq2seq自动编码器,输入系统拓扑结构E和系统各个节点的指标信息X,通过GraphLSTM来获取系统的拓扑信息,进一步经过编码-解码的方式输出重构序列。

● 通过进一步计算X_t的异常分数可以判断异常,当异常分数高于阈值时,就会检测到异常。

● 提出了一种阈值选择方法,通过此阈值切割训练数据集,使正常和异常两个区域距离最大。

3. 基本单元GraphLSTM

GraphLSTM是编码器和解码器中的一部分,是图神经网络和LSTM的组合。将LSTM中的全连接层替换为图神经层即可得到GraphLSTM,它的结构如下:

云系统中的异常检测方法_数据_06

▲   GraphLSTM的总体结构

4. 在线异常检测过程

TopoMAD在线异常检测流程如此下:

云系统中的异常检测方法_数据_07

▲   TopoMAD在线异常检测流程

四、总结

本文介绍的方法较已有的方法主要更多关注系统的拓扑信息,将系统拓扑信息融入到系统检测的过程中,主要有以下几个方面优点

● 在传统的LSTM中使用图神经网络(GNN)的方法引入了拓扑的信息,综合考虑多维时间序列的时空信息,将云系统组件间的联系考虑进来,有助于在统一的特征学习下捕获相同指标类型之间的相似模式。

● 通过VAE+Seq2Seq的形式,增加模型的学习能力,相比于传统方法模型效果更好。

● 该方法是一种无监督异常检测方法,不需要带标注的数据就能进行异常检测,同时以无监督的方式计算阈值,相比于有监督方法对样本要求更低,计算更简单。

以上是关于云系统中的异常检测方法的主要内容,如果未能解决你的问题,请参考以下文章

如何检测业务数据中的异常

R异常数据检测及处理方法

时间序列异常检测结合数据异常检测

大数据科学家需要掌握的几种异常值检测方法

异常点检测方法

异常检测(二)——传统统计学方法