基于小波分析的云计算在线业务异常负载检测方法
刘金钊 , 周悦芝 , 张尧学     
清华大学 计算机科学与技术系, 北京 100084
摘要:随着越来越多的在线业务被迁移到基于云的平台上,如何检测云平台上在线业务的异常运行状态成为了一个重要的问题。现有方法通过分析在线业务的实时负载数据来判断业务是否存在异常,在应对由程序异常或突发用户访问引起的异常负载时存在准确率低、误报率高的问题。该文提出并实现了一种面向云计算在线业务的异常负载检测方法。该方法利用小波分析技术,将原始负载数据分解成频率不同的多条曲线,并利用统计分析技术,通过检测各个频率上的异常增长或降低来判断负载是否存在异常。实验结果表明:同现有方法相比,该方法更准确,同时可以大大降低误报率。
关键词云计算    异常负载检测    离散小波变换    
Wavelet-based approach for anomaly detection of online services in cloud computing systems
LIU Jinzhao, ZHOU Yuezhi, ZHANG Yaoxue     
Department of Computer Science and Technology, Tsinghua University, Beijing 100084, China
Abstract: As an increasing number of online services have migrated into the cloud, anomaly detection has now become an important problem. Existing efforts detect anomalies by mining real-time workloads; however, the accuracy of such approaches cannot be assured in case of user spikes and application errors. This paper presents a wavelet-based online anomaly detection approach that uses discrete wavelet transforms to decompose real-time workload traces into multiple curves with different frequencies and then applies statistical analysis to the decomposed traces to detect the workload anomalies. Tests show that this approach is more accurate with a lower false-alarm rate than existing approaches.
Key words: cloud computing     workload anomaly detection     discrete wavelet transform    

随着云计算技术的发展,越来越多的用户选择将业务部署或迁移到基于云的计算平台上。利用云计算技术,分配给特定业务的计算、存储、网络等资源可以按需进行调整,从而最大化资源利用率,降低业务的运营成本[1]

云计算在线业务在整个运行周期内都会遇到由于突发用户请求、程序错误等原因引发的异常运行状况[2]。因此,对业务负载进行监控并根据负载状态识别异常运行状态是保证业务能够正常运行的基本条件[3]。当业务负载发生变动时,能够自动、有效、迅速地判断负载是否处于异常状态,可以给运维人员带来很大帮助。如果能够在异常发生时通过业务的负载监控数据迅速发现异常的存在,便可以及时对出现异常的业务进行干预,排除异常或者修复出错的程序,从而减少业务在异常状态下运行的时间,最大程度地保证业务的服务质量和用户体验。

现有的异常负载检测方法主要包括3类:基于阈值的异常负载检测、基于统计/回归模型的异常负载检测以及基于性能特征的异常负载检测。基于阈值的异常负载检测方法,通常设定一定数量的性能阈值作为判断异常存在的条件,并利用业务的实时负载数据来匹配这些条件[4-5]。若有条件被满足,即业务的性能指标超过某一设定的阈值,则认为当前的负载存在异常。这种方法依靠运维人员的经验来设定异常负载的阈值条件,当业务的负载特性发生变化时(例如业务程序升级),这些条件也需要进行相应修正以保证后续检测的准确性。并且,这种方法对于突发访问的容忍能力低,当业务负载出现震荡时会导致较高的误报率。

一种改进的方法是利用自适应的阈值来取代固定阈值。自适应的基于阈值的异常检测方法周期性地(例如每24 h)对负载数据的特性进行分析并相应地调整阈值设定。这种方法与固定阈值方法一样存在高误报率的问题。并且,当业务负载在短时间内震荡时,自适应调整算法无法发挥作用,对于业务突发性请求的容忍能力没有相应提升。

基于回归/统计模型的异常负载检测方法对负载数据进行回归分析(例如线性回归、局部线性回归等)并建立回归模型,从而得到负载的变化趋势,然后通过该趋势来预测未来一段时间内的负载情况作为异常检测的依据[6-8]。对于具有周期性负载特征的在线业务,可以对不同周期内的负载数据进行独立建模,并将这些模型进行交叉对比,从而识别出异常的特征周期。这类方法的问题在于模型需要不断地进行校准和修正,同时预测的准确性会直接影响异常检测的准确性,并且同样存在误报率较高的问题。

基于性能特征的异常负载检测方法使用统计方法来对业务的性能特性进行建模,并选择一定的业务性能特征参数与元数据作为异常负载的“指纹”,从而根据这些指纹来识别异常负载[9-10]。对于一定时间内的业务负载数据,首先对其进行分析,计算出指纹,之后将该指纹与该业务在其他不同时段的负载特性以及性能指标进行匹配,通过该指纹判断是否存在异常负载。识别过程通常利用到基于统计学的方法或数据挖掘方法。检测的准确性依赖于这些指纹特征的准确性[11]。由于业务的特征在业务的整个生命周期内是不断变化的,因此这些指纹也需要不断地进行调整和修正,从而很难做到完全的自动化[12]

针对上述问题,本文提出了一种面向云计算在线业务的异常负载检测方法ClouDetect。ClouDetect利用在线业务的实时负载数据,通过离散小波变换(discrete wavelet transform, DWT)将数据分解成不同频率的数据,进而利用统计分析的方法计算存在异常的概率,从而判断业务是否存在异常。利用小波分析能够将数据在常规时间尺度上无法被观测到的特征体现出来,从而可以提高检测的准确性[13]。该方法和已有方法相比,在准确性提高的同时可以大大降低误报率。此外,ClouDetect采用了滑动窗口技术,具有更好的自适应能力。

1 ClouDetect设计

ClouDetect主要由3个步骤组成:1) ClouDetect利用离散小波变换将预处理之后的负载数据分解成多个不同频率下的细节系数(detail coefficients)和一个近似系数(approximation coefficient),如图 1所示;2) 针对每一个细节系数,应用基于概率分析的异常检测算法,计算出每一个细节系数上存在异常的概率;3) 利用加权函数,将所有细节系数上存在异常的概率综合起来,并与由置信函数得到的置信区间进行对比,得到最终的检测结果。

图 1 3级离散小波变换示例

1.1 数据预处理

不同的负载数据(例如CPU、内存以及I/O等)通常有着不同的量纲,而且在数值上有着不同的取值范围。为使ClouDetect能够适应不同的负载数据,首先需要对负载数据进行归一化处理,使得归一化处理之后的取值落入区间[0, 1]内。

对于一个业务的某一个负载项而言,理论上可以选择其全部的历史负载数据作为负载检测的依据,但这样会使算法缺少适应性[14]。这是因为一个在线业务的负载变化模式会随着时间变化,而近期的数据能够更好地反映当前的变化模式。若无差异地采用全部历史数据,则会使得数据无法体现出业务当前的负载变化模式。为了提高算法的适应性,ClouDetect采用一个滑动窗口来收集负载数据。设窗口的长度为D,负载的采样周期为I,则ClouDetect收集最近的D·I时间内的负载数据。这样既可以提高算法的适应性,又能够降低算法的计算复杂度。

1.2 数据分解

数据分解的意义在于将负载数据分解成频率不同的多个负载曲线(对应多个细节系数),不同的曲线则反映了该负载在不同时间分辨率上的变化趋势[15]。ClouDetect使用离散小波变换进行负载数据的分解。离散小波变换利用母小波(在本例中使用Haar小波)将一个信号分解成不同频率下的多个信号曲线。令x[n]表示离散的输入信号,其长度为N;令g[n]表示低通滤波器,可以滤掉输入信号的高频部分而保留低频部分;令h[n]表示高通滤波器,可以滤掉输入信号的低频部分而保留高频部分;令↓Q表示降采样滤波器,如果以x[n]作为输入,则输出为y[n]=x[Qn],在本例中Q=2。一级离散小波变换如图 2所示。其中:x1, Lx1, H分别代表低频和高频信号。

图 2 1级离散小波变换

进一步,可以将多级离散小波变换表示为图 3所示的递归形式。

图 3 多级离散小波变换

对于第1级,$ {x_{{\text{1, L}}}}\left[n \right] = \sum\limits_k {x\left[{2n-k} \right]} g\left[k \right]$${x_{{\text{1, H}}}}\left[n \right] = \sum\limits_k {x\left[{2n-k} \right]} h\left[k \right] $。根据递归算法,第t级为${x_{t, L}}\left[n \right] = \sum\limits_k {{x_{t - 1, L}}\left[{2n-k} \right]} g\left[k \right] $${x_{t, H}}\left[n \right] = \sum\limits_k {{x_{t - 1, H}}\left[{2n-k} \right]} h\left[k \right] $。其中第i级的系数E[i]=Xi, H即为分解之后每一级的细节系数。例如,图 1表示了一个3级的离散小波变换。其中:s表示输入信号,d1d2d3分别表示每一级的细节系数,a3表示近似系数。

对于细节系数来说,分解级别越高,其周期越长,从而其数据点数越少。为了能够更好地观测到在长周期上负载变化的特征,ClouDetect尽可能把原始数据分解到更高的级别。对于长度为D的窗口来说,分解级别L

$ L = \left\lfloor {{{\log }_2}D} \right\rfloor-1. $

对负载数据进行L级离散小波变换之后,最高级别的细节系数中所包含的元素个数不少于2个。

1.3 基于概率分析的异常检测

在得到不同时间分辨率下的信息之后,ClouDe-tect对每一个时间分辨率下的负载曲线进行异常检测。ClouDetect采用基于概率的异常检测方法。对于每一个时间分辨率下的负载曲线E[i],其所表示的是负载在频率$\frac{1}{{I \cdot {2^i}}} $下的变化模式。通常情况下,正常负载的波动幅度小于异常负载的波动幅度。因此,负载曲线中离均值越远的点为异常波动的可能性要高于离均值更近的点。假设E服从均值为0,标准差为σ的正态分布,可以使用正态分布的相关误差函数(related error function, REF)得到任意一个数据点E[i, j]为异常波动点的概率

$ p\left[{i, j} \right] = {\text{erf}}\left( {\frac{{E\left[{i, j} \right]}}{{\sqrt 2 \sigma }}} \right). $

其中σ取值为该时间分辨率下负载曲线的离均差(均值为0)。相关误差函数的定义为

$ {\text{erf}}\left( x \right) = \frac{1}{{\sqrt {\pi } }}\int_{-x}^x {{{\text{e}}^{-{t^2}}}} {\text{d}}t. $

该时间分辨率下的负载曲线存在异常的概率定义为

$ p\left[i \right] = \max \left( {p\left[{i, j} \right]} \right). $
1.4 综合概率

对于每一个时间分辨率下的负载曲线存在异常的概率p[i],ClouDetect利用一个加权函数将其综合起来得到总体数据存在异常的概率,

$ {p_{\text{r}}} = \frac{{p\left[i \right]w\left[i \right]}}{{\sum {w\left[i \right]} }}. $

其中加权函数w[i]的定义为w[i]=ie

pr的直观含义如下:相对于高频部分存在异常的概率,低频部分存在异常的概率更能反映出当前负载存在异常的可能性。这是因为高频部分的异常变化只是表示在一个较短的时间内存在负载的变化,有更大的概率是由于短期的震荡等原因所引起的;而低频部分的异常变化则表示在一个较长的时间内存在较大的负载变化,由震荡引起的概率较小。因此,ClouDetect给低频数据存在异常的概率赋以更高的权值,给高频数据存在异常的概率赋以较低的权值,从而使得由于各种原因导致的短期震荡能够更少地对结果产生影响。

1.5 判断异常

ClouDetect利用自适应的置信区间来判断当前的负载数据是否存在异常。直觉上,若当前的负载数据在一段时间内存在较大变化,那么其存在异常的概率通常要高于变化较小的负载曲线。因此, ClouDetect需要给那些变化较大的负载数据一个更低的置信限,而对于平稳变化的负载数据则给予更高的置信限。

ClouDetect使用一个置信函数来确定判断异常是否存在的置信区间。该置信函数是一个随负载数据标准差递减的函数,表示当负载数据的标准差增大时,其置信限会随之降低。置信函数的定义为

$ G\left( \sigma \right) = c + \frac{{2\left( {1-c} \right)}}{{1 + {{\text{e}}^{\sigma /d}}}}. $

其中:σ为原始负载数据的标准差;c为置信系数,0 < c < 1;d为松弛系数,d>0。置信区间为(G(σ), 1)。当pr落入该区间内时,ClouDetect即认为存在异常。G(σ)的实例如图 4所示。

图 4 不同松驰系数设置下的置信函数(c=0.5)

2 实验测试

实验使用2个负载数据集对ClouDetect进行测试,以验证其识别异常负载的准确度和误报率。负载数据集来自于腾讯互动娱乐部(Tencent IEG),第1个数据集为承载某个在线业务的虚拟服务器集群的内存负载数据,其中存在多次内存使用异常;第2个是承载某个在线业务的虚拟服务器集群正常运行时的内存负载数据。对于每一个采样点,采用全部虚拟服务器的负载平均值作为该业务在该时间点的负载。对于缺失的采样点,采用移动平均法进行插补处理。负载数据的详细信息见表 1

表 1 负载数据集的基本信息
负载数据集 时间长度/d 采样周期/min 最大服务器数量 异常数量
IEG1 48 5 288 5
IEG2 41 5 288 0

作为对比,本文使用2个被广泛应用的基于可变阈值的自适应异常负载检测算法与ClouDetect进行比较。算法1为基于阈值的异常检测(threshold-based anomaly detection, TAD),通过分析全局数据计算出触发警报的阈值,阈值取当前数据集中的最大值与最小值;算法2为基于滑动窗口的异常检测(window-based anomaly detection, WAD),基于滑动窗口进行阈值调整,该算法通过分析最近一段时间内的负载数据计算出触发警报的阈值。当检测到某一时刻的负载值高于阈值时,这两个算法便发出报警信息。公平起见,将WAD和ClouDetect的窗口长度都设置为现实中1个星期的时间长度。在测试过程中,数据集前5 d的数据仅作为学习阶段,不进行异常检测。

首先进行准确率测试。定义准确率为正确检测出的异常数量与实际异常数量的比值,则准确率直接反映了算法探测异常的能力。数据集IEG1中总共存在5次异常。另外,IEG1中存在由于业务停机/重启导致的内存使用波动,因此将这部分数据排除在检测数据之外。对于IEG1,由TAD、WAD和ClouDetect正确检测出的异常次数分别为2次、3次和5次,检测准确率分别为40%、60%和100%。可以看出, ClouDetect对异常的检测准确率要高于其他两个异常检测算法。详细的异常检测情况如图 5所示,图中圆点、三角形、五边形表示检测算法在此处产生了报警,一个点可能表示多次报警。

图 5 IEG1的异常检测结果

通过分析对两个数据集进行异常检测的误报情况来对ClouDetect控制误报率的情况进行测试。利用3个算法对数据集IEG2进行异常检测,算法的参数设置与上述实验保持一致。误报率定义为误报次数与检测次数的比值。误报次数与误报率的情况如表 2所示。

表 2 3个算法的误报数与误报率
检测算法 IEG1 IEG2
误报数 误报率/% 误报数 误报率/%
TAD 18 0.126 222 2.49
WAD 47 0.328 250 2.80
ClouDetect 1 0.007 9 0.10

表 2中可以看到,ClouDetect的误报率远低于另外两个异常检测算法。在两个数据集上,ClouDetect都将误报率限制在0.1%以下,最低只有0.007%。而另外两个检测算法的误报率最高达到2.8%,最低也达到了0.126%。

3 结论

本文提出并实现了一种针对云计算在线业务的异常负载检测方法ClouDetect。ClouDetect利用小波分析技术和基于概率的统计分析技术来识别实时负载数据中的异常负载。ClouDetect首先通过离散小波变换将原始负载数据分解成频率不同的多条曲线,之后在每条曲线上应用基于统计分析的异常负载检测算法,最后将所有频率上的检测结果综合起来得到最终结果并作出判断。该方法能够在保证异常检测正确率的同时大大地降低误报率。用两个实际系统的负载数据集对ClouDetect进行实验测试,实验结果表明:ClouDetect的准确率要高于现有的异常负载检测算法;同时,ClouDetect能够将误报率控制在0.1%以下,最低只有0.007%,而现有的异常负载检测算法的误报率最高达到2.8%,最低也达到了0.126%。

参考文献
[1] Armbrust M, Fox A, Griffith R, et al. A view of cloud computing[J]. Communications of the ACM, 2010, 53(4): 50–58. DOI:10.1145/1721654
[2] Jadeja Y, Modi K. Cloud computing-concepts, architecture and challenges [C]//Proc International Conference on Computing, Electronics and Electrical Technologies (ICCEET). Piscataway, NJ, USA: IEEE Press, 2012: 877-880.
[3] Kandias M, Virvilis N, Gritzalis D. The insider threat in cloud computing [C]//Proc 6th International Workshop on Critical Information Infrastructure Security. Berlin, Germany: Springer-Verlag, 2013: 93-103.
[4] IBM. Tivoli[EB/OL].[2015-12-24]. https://www.ibm.com/software/tivoli.
[5] HP.Operations Manager[EB/OL].[2015-12-24]. http://www8.hp.com/us/en/software-solutions/operations-manager-infrastructure-monitoring/
[6] Tan Y, Nguyen H, Shen Z, et al. PREPARE: Predictive performance anomaly prevention for virtualized cloud systems [C]//Proc 32nd International Conference on Distributed Computing Systems (ICDCS). Piscataway, NJ, USA: IEEE Press, 2012: 285-294.
[7] WANG Chengwei, Viswanathan K, Choudur L, et al. Statistical techniques for online anomaly detection in data centers [C]//Proc 2011 IFIP/IEEE International Symposium on Integrated Network Management (IM). Piscataway, NJ, USA: IEEE Press, 2011: 385-392.
[8] XIE Yi, YU Shunzheng. A large-scale hidden semi-Markov model for anomaly detection on user browsing behaviors[J]. IEEE/ACM Transactions on Networking, 2009, 17(1): 54–65. DOI:10.1109/TNET.2008.923716
[9] WANG Tao, ZHANG Wenbo, WEI Jun. Workload-aware online anomaly detection in enterprise applications with local outlier factor [C]//Proc 36th Annual Conference on Computer Software and Applications (COMPSAC). Piscataway, NJ, USA: IEEE Press, 2012: 25-34.
[10] GUAN Qiang, FU Song. Adaptive anomaly identification by exploring metric subspace in cloud computing infrastructures [C]//Proc 32nd International Symposium on Reliable Distributed Systems (SRDS). Piscataway, NJ, USA: IEEE Press, 2013: 205-214.
[11] WANG Chengwei, Talwar V, Schwan K, et al. Online detection of utility cloud anomalies using metric distributions [C]//Proc Network Operations and Management Symposium (NOMS). Piscataway, NJ, USA: IEEE Press, 2010: 96-103.
[12] Vasic N, Novakovicet D, Miucin S, et al. DejaVu: Accelerating resource allocation in virtualized environments[J]. ACM SIGARCH Computer Architecture News, 2012, 40(1): 423–436. DOI:10.1145/2189750
[13] Reis A, Rocha J, Alexandre P. Feature extraction via multiresolution analysis for short-term load forecasting[J]. IEEE Transactions on Power Systems, 2005, 20(1): 189–198. DOI:10.1109/TPWRS.2004.840380
[14] Pannu H, LIU Jianguo, FU Song. AAD: Adaptive anomaly detection system for cloud computing infrastructures [C]//Proc 31st Symposium on Reliable Distributed Systems (SRDS). Piscataway, NJ, USA: IEEE Press, 2012: 396-397.
[15] Mallat S. A theory for multiresolution signal decomposition: The wavelet representation[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 1989, 11(7): 674–693. DOI:10.1109/34.192463