张开芳 张 东 高晓锋 郭 锋 段谊海
1(郑州大学信息工程学院 河南 郑州 450001)2(浪潮电子信息产业股份有限公司 山东 济南 250101)3(郑州云海信息技术有限公司 河南 郑州 450019)
数据中心是收集、存储、共享和处理数据的平台。IDC调查显示[1],2010年我国数据中心和机房的总数量已经达到504 155个。预计到2020年,我国数据中心保有量将超过8万个,总面积将超过3 000万平方米[2]。数据中心在日常生产生活中发挥重要作用,若是宕机,会带来巨大的财产损失。Ponemon研究所调查表明单次数据中心宕机的平均成本约73万美元[3]。在2016年8月,Delta航空公司数据中心宕机,导致公司损失了1.5亿美元[4]。因此保障数据中心安全平稳运行有着重要意义。数据中心运维方式由数据中心监控平台向运维人员发送告警通知,运维人员通过告警通知提前发现问题,检查相关部件,及时做出反应,维护设备安全。
工程应用上,目前数据中心监控平台有两种,一种是商用类型,如IBM的Tivoli[5]和HP公司的OpenView[6]监控产品;另一种是开源类型,如Zabbix[7]、Nagios[8]等。由于商用类型的监控平台价格昂贵,目前企业级监控一般采用开源监控平台。其对监控项的告警方式一般由运维人员依据经验设定固定阈值,通过脚本编程实现。但该方法无法体现监控项数据的波动变化,因此可能引起较大误差,造成缺失告警或错误告警,无法满足实时复杂情况下的告警需求。
在理论和方法研究上,文献[9]实现了对数据中心各机房电源、空调和烟感等环境监控量监控,主要解决机房不同品牌设备之间因接口不兼容导致通信失败的问题,但对环境监控量的告警通知由人为制造(如人为释放烟雾看是否产生告警),并且未提及相关监控量的阈值问题。文献[10]侧重于设计实现数据中心实际工作需求的监控软件,在软件的告警子系统中对基本事件流的告警方式基于阈值。文献[11]重点在降低监控任务负载与监控可扩展的研究上,其告警模块基于Nagios[8]监控软件采集监控项数据,人工编写脚本实现告警功能。文献[12]实现了基于动态阈值的网络性能管理系统,实现动态阈值的方法是采用前四周同一时刻的数据,通过线性回归分析预测当前时刻的阈值,但该方法基于性能监控的周期性前提实现,无法较好地反映数据波动且研究对象为网络性能管理。文献[3]通过自定义CPU、内存和磁盘的过载阈值,经由模型训练预测未来三天内上述监控指标的负载,文献数据来自百度股份有限公司。文献[13]设计了Hdoctor通用框架实现磁盘的故障预测。文献[14]提出了基于神经网络的框架,侧重CPU、内存、磁盘与网络的资源利用率等监控指标的负载预测。文献[15]提出两个基于约束编程和神经网络的负载预测模型,完成对云数据中心物理服务器CPU利用率的预测。
上述研究大都集中于数据中心监控系统的设计与实现,在监控指标研究上更关注的是如CPU、内存和磁盘等的利用率或故障预测方面,很少有文献涉及到监控项阈值问题告警层面的研究分析。对此,本文提出了一种基于EFT特征提取的无阈值告警模型,通过分析监控项数据特点,提出从监控项的能量、波动与时间三个方面提取特征,最终输入到随机森林模型训练,经投票得出实时监控数据告警结果,完成监控项无阈值告警研究。
首先对监控项数据预处理,经由人工经验知识判断实时监控数据是否告警,接着基于EFT方法提取特征,输入到训练好的随机森林模型中得到最终判决结果。基于EFT的无阈值告警模型流程示意图如图1所示。
图1 基于EFT的无阈值告警模型流程示意图
为保证获得高质量的数据,对于数据采集中由设备故障等原因造成的数据缺失,本文采用数据填充法处理,即用前后数据点的平均值来填充中间的缺失数据。
经数据预处理后,通过滑窗构造数据集中的样本。窗口大小代表每个窗口中包含监控值的个数。窗口数即为样本数。在监控平台中,业务需求等因素会影响各监控项数据变化,若窗口取值过大,太靠前的数据与当前时刻数据关联不大;若窗口取值过小,则提取的特征无法完整地体现局部数据变化。本文取窗口大小为5,监控项每5分钟获取一次监控值,即每个窗口的时间段为20分钟。滑窗法构造数据集示例如图2所示。设监控项经由数据填充之后得到N个监控值,则得到样本N-5+1个。
图2 滑窗构造数据集示例
本文通过分析数据中心监控项数据特点,提出一种基于EFT特征提取方法,即从监控项数据的能量、波动和时间特性三个方面提取特征值。其中,能量反映监控值的大小,波动反映监控项数据的变化,时间联合当前监控值分析。在能量方面,提取当前窗口的监控值、平均值和能量值。在波动方面,提取当前窗口的斜率、标准差和相邻波动及高于均值的个数(当前窗口中所提取的标准差与高于均值个数中的平均值为监控项所有数据的平均值)。在时间方面,以一周为周期,将时间细化到分钟,进一步挖掘监控数据与时间的关联。为了更进一步体现以往窗口对当前窗口监控结果的影响,本文采取组合特征的方式,即将当前窗口t与前两个的窗口t-1、t-2所提取出来的特征组合在一起,作为最终特征集。每个窗口提取特征Pt的表达式如式(1)所示;最终组合特征集Fi如式(2)所示。表1为基于EFT方法提取的特征及计算方法,其中t代表窗口大小。
Pt=[f1,f2,…,f9]
(1)
Fi=[Pt-2,Pt-1,Pt]t=1,2,…,t-3+1
(2)
表1 基于EFT提取特征及计算方法
随机森林[16]是包含一系列树结构分类器的集合{h(x,Θk,k=1,2,…)}。Θk是具有独立均匀分布的随机向量,在输入x时,每棵树具有相同权重,投票最多的类别即输入x的所属分类。建立多颗决策树的概念第一次由Williams[17]提出。Ho[18]提出了集成过程中对每棵树构造使用特征子空间的方法。Dietterich[19]对构造树提出随机分裂策略。随后,Breiman[16]在2001年提出了随机森林算法。
基于随机森林的分类过程可分为三步:① 子训练集生成。从原始的数据集(大小为N)中采用Bootstrap方法有放回地采样N次,构成各子训练集,重复上述过程,共构造M个子训练集,对应随机森林中树的颗数M。② 特征选择。对于森林中树的各节点,从所有特征中随机选择一定数目的特征,采用基尼指数选取最优的特征划分节点,构造决策树。③ 所有决策树最大深度生长不剪枝,最终形成由M颗树组成的森林。森林中每棵树具有相同的权重,对于测试样本,通过森林投票选出的最多的类别即是该测试样本的最终分类结果。算法流程如图3所示。
图3 随机森林算法流程
基尼指数是随机森林特征选择准则,代表数据不纯度,其值越低,纯度越高,即数据的一致性越好,其计算方法如下。
对于给定的样本D,假设它有K个类别,第k个类别的数量为Ck,则样本D的基尼指数计算式为:
特别地,对于样本D,如果根据特征A的某个值a,把D分为D1和D2两个部分,则在特征A条件下,D的基尼指数计算式为:
随机森林训练速度快、抗噪声能力强、准确率高,不容易出现过拟合,能够对多种数据有效分类,可处理高维数据等优点,本文将随机森林引入无阈值告警模型。
本文的实验设备为PC,配置处理器为Intel(R) Core(TM)i5-3210M CPU @ 2.50 GHz,RAM 4 GB,Windows 7操作系统,开发环境是Python 3.7.3。本文实验监控项数据来源于企业级监控平台采集。采集2019年4月19日到5月19日共1个月内500台服务器的监控项数据,表2为部分监控指标及采集频率。经由数据预处理与滑窗构造数据集。
表2 部分监控指标及采集频率
分类算法的评价指标较多。其中准确率代表分类的样本个数与总体样本的比值,数值越高,代表测试样本中分类正确的数目越多。但它无法对类别不均衡的样本做出准确评价,只采用这一指标太单一,且无法准确多角度评价本文提出的无阈值告警模型。精确率代表分类结果是告警的样本数中真实样本为告警的样本比例,其值越高,误报数越少。召回率代表正确预测为告警的样本数与属于告警样本总数之间的比值,其值越高,漏报数越少。所以加入精确率和召回率用以模型评价。上述评价指标可由混淆矩阵计算得到,本文中混淆矩阵由表3所示。
表3 混淆矩阵
准确率acc、精确率pre和召回率re计算式分别为:
图4、图5为本文提出特征提取方法的示例图,其中画有圆圈的部分即为告警数据。示例图中的入风口温度与服务器功耗的数据分别为某台服务器含告警数据一周内的数据(60×24×715=2 016),通过滑窗得到样本(2 016-5+1=2 012),从样本中提取特征,鉴于篇幅有限,画出的特征示例分别为能量中的当前窗口能量值、波动中当前窗口的斜率与标准差、时间时分。由图4、图5可见,本文提出的基于EFT的特征提取方法能够较好地体现实时告警数据的变化,证实提取特征的有效性。
图4 入风口温度提取特征
图5 服务器功耗提取特征
图6-图8分别所示为十次实验中入风口温度和服务器功耗准确率和精确率与召回率的数值,可以看出,两种监控项的准确率均高达95%以上,且十次实验结果比较稳定。精确率与召回率相较于准确率波动大,并且精确率波动相较于召回率更大,说明模型相较于误报下更不易于漏报,并且误报差错率值也在10%以下。这证实了模型的有效性,可满足实时条件下监控项的告警需求。
图6 准确率
图7 精确率
图8 召回率
本文主要研究了数据中心监控平台监控项的阈值告警问题,通过结合监控项的数据特点,提出了一种基于EFT特征提取方法,最终建立了随机森林数据中心监控项无阈值告警模型。实验表明本文模型表现良好,准确率、精确率与召回率均达到90%以上,证实了其有效性,可反映实时条件下监控项的波动,满足实时告警需求,并具有一定实用性,有助于运维人员分析处理数据中心告警情况。未来工作将研究内容转向多指标融合告警的根因分析,因为单个监控项的告警不利于运维人员排查根本原因,多指标融合告警的根因分析可帮助运维人员分析告警源头,提高工作效率。