摘要
云数据中心系统架构庞大,用户群体复杂多样,运维人员需要对KPI(Key Performance Indicator)数据进行异常检测来保证云环境下各系统与业务的可靠与稳定。但由于云数据中心监控的KPI数据众多,在异常检测时对KPI进行标记、异常检测模型选择、模型训练和参数调优等过程会消耗大量的人力成本。针对这一问题,本文基于聚类算法和无监督异常检测算法构建了智能化的KPI异常检测策略。 (1)由于同一监控指标的KPI具有很强的相关性,将相同指标的KPI进行聚类后,集群的质心KPI近似于该集群中其他KPI的正常模式,此时只需对质心KPI进行模型训练和参数调优,同一集群中的KPI可以共享异常检测模型,从而减少异常检测工作量。因此,本文提出了基于AKRNN-DBSCAN的KPI聚类算法,该算法通过KPI数据的反向kNN来判断邻域密度,不需手动输入参数,自动寻找集群个数稳定的k值区间,并将集群个数首次达到稳定时的最小k值设定为最优解,此时未被识别的KPI比例最小。实验结果表明,AKRNN-DBSCAN算法能够对CPU利用率等五种监控指标均进行有效聚类,F-score在0.78~0.90之间,且识别大部分的KPI,未识别比例仅在5%~17%之间;同时,聚类效果优于传统的K-means和DBSCAN算法。 (2)针对有监督学习的异常检测算法需要耗费人力及时间对KPI数据进行标记的问题,本文提出了基于时间序列特征提取的LSTM自编码器的无监督异常检测算法,从统计特性、形态特性和熵特性三个方面丰富KPI时间序列特征,捕捉KPI时间序列中不同维度的变化,丰富了原始KPI时间序列的特征空间;LSTM用来捕获KPI时间序列之间的依赖关系;自编码器将输入数据进行降维,利用小特征空间获得输入数据最具代表性的特征,并根据该代表性特征重构输入数据,通过原始输入数据与重构数据之间的误差来判断异常。实验结果表明,使用基于时间序列特征提取的LSTM自编码器对CPU利用率等五种监控指标进行异常检测均取得了较好效果,F-score在0.93~0.97之间,且该算法优于使用原始时间序列的异常检测算法。 (3)针对大规模KPI数据的异常检测,为了提高运维效率,减少异常检测的成本消耗,本文结合以上两种算法,首先经过AKRNN-DBSCAN聚类之后找到每个集群的质心KPI,然后使用基于时间序列特征提取的LSTM自编码器异常检测算法对质心KPI进行异常检测模型训练,集群其他KPI共用此模型。实验结果表明,对于CPU利用率等五种监控指标,本方法相较于以往对全部KPI进行异常检测的方法,时间上缩短了84%~93%,F-score仅降低了13%~16%。