发明内容
发明目的:针对现有的关于服务器异常检测技术中缺乏灵活性、难以满足现实需求的不足和缺陷,提供一种智能化服务器异常检测报警系统的技术实现方案。
技术方案:一种一种混合策略的服务器异常智能检测方法,其特征在于:包括历史数据采集分析步骤和实时异常报警步骤;其中,
所述历史数据采集分析步骤包括:
S11,采集预设时间周期内的服务器历史数据,对历史数据进行预处理,筛选出需要进行分析的特征,将每一项特征对应的数据作为一个时间序列;
S12,结合时间序列分解算法和格拉布斯检验算法确定历史数据中每一段时间序列对应的正常值和异常值;
S13,根据步骤S12的结果,计算历史数据中每一项特征对应的正常阈值,即每一段时间序列中正常值的最大值和最小值范围;
S14,根据步骤S12的结果,以历史数据中的所有时间序列为训练样本,建立若干种异常数据检测模型对采集的服务器实时数据,即判断服务器是否异常时需要分析的数据进行预测判断,输出待测样本为异常的概率,用以实时报警步骤中对实时数据进行分析;
所述实时异常报警步骤包括:
S21,采集服务器实时数据,以实时数据为待测样本,实时数据的特征与历史数据分析模块采集的历史数据中的特征一致;
S22,利用步骤S14中所述的异常数据检测模型对待测样本进行分析,并将所述异常数据检测模型对待测样本的判断为异常的概率的平均值作为模型综合预测概率;
S23,利用步骤S13中所述的正常阈值对实时数据进行分析,分析每一项实时数据特征是否超出对应的正常阈值,并对应计算阈值超出百分比,将所得的各项特征阈值超出百分比的最大值记为最终的阈值超出百分比;
S24,结合步骤S22计算的模型综合预测概率和步骤23计算的最终的阈值超出百分比,根据报警等级判断规则综合判断实时数据是否异常,并确定最终的报警等级和出现异常的原因;
S25,将分析结果和报警通知反馈给服务器维护人员进行相应的异常排查处理。
作为优选,在步骤S11中,所述的特征是反映服务器当前运行状态和性能的属性,其包括CPU使用率、内存占用率、网络流量以及用户登录数,所述的时间序列是指设定时间周期内某一特征对应的数据。
作为优选,在步骤S12中,所述的时间序列分解算法是对时间序列进行平滑,计算出对应的残差分量,所述的残差分量表示时间序列中某点的异常程度,残差分量越大,则表示该点为异常的可能性越高;所述的格拉布斯检验算法是将各点的异常程度进行量化分析,将残差分量过大的点标记为异常点,其余点为正常点。
作为优选,在步骤S14中,是结合梯度提升树、孤立森林和基于直方图异常检测三种机器学习算法,以历史数据中的所有时间序列为训练样本,建立3种机器学习算法分别对应的异常数据检测模型,所建立的模型能够对于待测样本进行预测判断,输出待测样本为异常的概率,用以所述实时报警模块中对实时数据进行分析。
作为优选,在步骤S22中,所述梯度提升树算法、孤立森林算法和基于直方图的异常检测算法建立的3种异常数据检测模型对待测样本进行检测,每一个模型对于一个待测样本都会输出一个对应的预测概率,当待测样本的预测为异常的概率大于50%时,则表示该模型认为待测样本存在数据异常。
作为优选,所述步骤S23包括如下几个步骤:
A231,对每一项特征i,判断实时数据对应的特征值是否超出对应的正常阈值,若未超出正常阈值,转至A232;否则,转至A233;
A232,记阈值超出范围百分比ri=0%
A233,计算阈值超出范围百分比
其中,x
i为实时数据对应特征i的数值,m
i为特征i对应的正常阈值的最大值;
A234,阈值超出范围百分比r取所得ri的最大值,即r=max(r1,r2,…,rQ);其中,Q为特征的总数;阈值超出范围百分比r的数值越大,则实时数据中存在异常的可能性越高。
作为优选,在步骤S24中,将模型综合预测概率记为p,阈值超出百分比记为r,所述模型综合预测概率p反映的是实时数据中多个特征的异常程度,所述阈值超出百分比r反映的是实时数据中单个特征的异常程度;所述模型综合预测概率或阈值超出百分比越大,则表示实时数据中存在异常的可能性越高,即报警等级越高,异常情况越严重。
本发明还公开了一种混合策略的服务器异常智能检测系统,包括历史数据分析模块和实时报警模块;所述历史数据分析模块通过滑动窗口,周期性更新所要分析的服务器历史数据,实现对正常阈值和异常数据检测模型的动态更新,为所述实时报警模块提供分析报警的依据;所述实时报警模块周期性的对服务器实时数据进行检测,利用历史数据分析模块中所得正常阈值和异常数据检测模型对实时数据进行分析,对其中的异常数据进行报警通知。
作为优选,所述的历史数据分析模块包括:
历史数据预处理子模块,负责采集预设时间周期内的服务器历史数据并对历史数据进行预处理并将预处理后的服务器历史数据发送至正常阈值分析子模块;
正常阈值分析子模块,接收历史数据预处理子模块发送的历史数据信息并计算历史数据每一项特征对应的正常阈值,将正常阈值信息发送至机械学习模型子模块;
机器学习模型子模块,接收正常阈值分析子模块发送的正常阈值信息并利用预处理后的历史数据建立若干种异常数据检测模型;
所述实时报警模块包括:
实时数据预处理子模块,负责采集服务器实时数据并对实时数据进行预处理;
异常分析子模块,接收正常阈值分析子模块发送的正常阈值信息,利用所述异常数据检测模型对实时数据进行分析,判断报警等级,分析异常原因并报送至异常报警子模块;
异常报警子模块根据异常分析子模块的分析返回分析结果和报警等级。
有益效果:本发明所提供的智能化服务器异常检测报警系统,实现了对服务器数据的实时监控和智能报警,该系统通过对服务器数据进行实时监控,能够及时发现服务器运行过程中的异常情况,并且能够准确的分析、定位出现异常的原因,及时向运维人员反馈信息。与现有的技术相比,本发明对已有的服务器异常检测技术进行改进和优化,将传统的基于数据分布或者基于时间序列的异常检测算法与多种机器学习算法相结合,建立了一套新型的、更加灵活的智能化服务器异常检测报警系统。本发明通过将适用于大规模复杂数据处理的机器学习算法和适用于周期性分布数据的基于时间序列的异常检测算法进行有机结合,充分发挥了不同算法的在服务器异常检测中的优势,实现了一种更加适用于大规模服务器集群的异常检测报警系统,在真实网络环境中的测试中表现出了优良的性能。本发明能够为大规模的服务器运维平台提供强有力的大数据分析支持,极大的节省了服务器的维护成本,具有广泛的应用前景和价值。
具体实施方式
下面结合附图和具体实施例,进一步阐明本发明。
本实施例提供一种混合策略的服务器异常智能检测系统,包括历史数据分析模块和实时报警模块,这两个组件周期性的工作,以实现动态数据分析和实时监控,本实施例服务器异常检测系统的实施需要一被监控服务器数据接口提供服务器历史数据和实时数据,一服务器运维平台接口接收分析结果和报警通知。如图1所示,其中:
所述的历史数据分析模块包括:历史数据预处理子模块,负责采集预设时间周期内的服务器历史数据并对历史数据进行预处理并将预处理后的服务器历史数据发送至正常阈值分析子模块。正常阈值分析子模块,接收历史数据预处理子模块发送的历史数据信息并计算历史数据每一项特征对应的正常阈值,将正常阈值信息发送至机械学习模型子模块。机器学习模型子模块,接收正常阈值分析子模块发送的正常阈值信息并利用预处理后的历史数据建立若干种异常数据检测模型。
所述实时报警模块包括:实时数据预处理子模块,负责采集服务器实时数据并对实时数据进行预处理。异常分析子模块,接收正常阈值分析子模块发送的正常阈值信息,利用所述异常数据检测模型对实时数据进行分析,判断报警等级,分析异常原因并报送至异常报警子模块。异常报警子模块根据异常分析子模块的分析返回分析结果和报警等级。
本实施例所述的一种混合策略的服务器异常智能检测方法,包括历史数据采集分析步骤和实时异常报警步骤;其中,
所述历史数据采集分析步骤包括:
S11,采集预设时间周期内的服务器历史数据,对历史数据进行预处理,筛选出需要进行分析的特征,将每一项特征对应的数据作为一个时间序列;
S12,结合时间序列分解算法和格拉布斯检验算法确定历史数据中每一段时间序列对应的正常值和异常值;
S13,根据步骤S12的结果,计算历史数据中每一项特征对应的正常阈值,即每一段时间序列中正常值的最大值和最小值范围;
S14,根据步骤S12的结果,以历史数据中的所有时间序列为训练样本,建立若干种异常数据检测模型对待测样本进行预测判断,输出待测样本为异常的概率,用以实时报警步骤中对实时数据进行分析;
本实施例的历史数据分析模块结合5种算法对服务器历史数据进行综合分析,计算出每一项特征的正常阈值,建立3种异常数据检测模型,为实时报警模块提供分析和报警的依据。历史数据分析器所使用的5种算法包括2种传统的异常检测算法和3种机器学习算法,将传统的异常检测算法和机器学习算法相结合对服务器数据进行分析,目的在于充分不同算法各自的优势,对历史数据的各项特征的数据进行更加全面的分析。
所述实时异常报警步骤包括:
S21,采集服务器实时数据,以实时数据为待测样本,实时数据的特征与历史数据分析模块采集的历史数据中的特征一致;
S22,利用步骤S14中所述的异常数据检测模型对待测样本进行分析,并将所述异常数据检测模型对待测样本的判断为异常的概率的平均值作为模型综合预测概率;
S23,利用步骤S13中所述的正常阈值对实时数据进行分析,分析每一项实时数据特征是否超出对应的正常阈值,并对应计算阈值超出百分比,将所得的各项特征阈值超出百分比的最大值记为最终的阈值超出百分比;
S24,结合步骤S22计算的模型综合预测概率和步骤23计算的阈值超出百分比,根据报警等级判断规则综合判断实时数据是否异常,并确定最终的报警等级和出现异常的原因;
S25,将分析结果和报警通知反馈给服务器维护人员进行相应的异常排查处理。
上述方法及系统的具体工作周期应根据实际情况确定;下面将将结合附图对本发明的实施方式做进一步详细的说明。
如图2所示,所述历史数据分析模块在一个工作周期内的工作流程包括如下步骤:
A11,采集服务器历史数据,将每一项特征对应的数据作为一个时间序列。特征是反映服务器当前运行状态和性能的属性,包括CPU使用率、内存占用率、网络流量、用户登录数等。具体的特征需要根据服务器的实际情况进行选择。
时间序列是指一段时间内某一特征对应的数据,时间序列以时间顺序排列,每一个时间点对应一个样本点。本发明以时间序列为基本单位对服务器历史数据进行分析。
为了取得更好的效果,在本具体实施例中,可以对历史数据进行预处理,如对历史数据进行归一化,平滑等。
A12,对每一段的时间序列,利用时间序列分解算法计算残差分量。
时间序列分解算法(Seasonal-Trend Decomposition Procedure Based onLOESS,STL)是异常检测领域中一种通用的方法,具有高稳健性,在进行异常检测时充分考虑了历史数据的分布特性,尤其适用于服务器数据这种具有周期性分布特征的数据。本实施例采用时间序列分解算法对每一段时间序列进行平滑,计算对应的残差分量。
时间序列分解算法以局部加权回归(LOESS)作为平滑方法对时间序列进行分解,将时间序列(Y)分解为趋势分量(T)、周期分量(S)和残差分量(R):
Yv=Tv+Sv+Rv(v=1,2,…,N)
其中v代表时间序列Y中的某一个时间点,N代表时间序列Y的长度。
附图3为某一时间序列的分解结果,从上到下的4张子图Observed,Trend,Seasonal和Residual分别为时间序列、趋势分量、周期分量和残差分量。时间序列分解算法中的残差分量表示时间序列与趋势分量和周期分量的差异程度。对于某一时间点v,若其残差分量的数值Rv越大,则其为异常点的概率越大。
时间序列分解算法由两层循环构成,外层循环负责计算鲁棒性权重使得算法具有更强的稳定性,不易受到异常点的影响;内层循环负责计算趋势分量和周期分量,这也是时间序列分解算法的核心。
鲁棒性权重的计算公式如下:ρv=B(|Rv|/h)
时间序列分解算法的内层循环的在一次循环内的具体步骤如下:
A121,时间序列去趋势分量,初始时趋势分量为0,内层循环开始后,趋势分量使用上一次内层循环的A126的计算结果,即Yv←Yv-Tv;
A122,平滑周期子序列,周期子序列为时间序列的每个周期相同位置的样本点组成一个子序列,利用局部加权回归对周期子序列进行回归计算,并向前向后各延展一个周期,平滑后的序列记作Cv;
A123,计算平滑周期子序列的趋势,对Cv进行滑动平均并利用局部加权回归进行回归计算,计算得到的序列记为Lv;
A124,去平滑周期子序列趋势得到周期分量,即Sv=Cv-Lv
A125,时间序列去周期分量,即Yv←Yv-Sv;
A126,计算趋势分量,利用局部加权回归对时间序列Yv进行回归计算,得到趋势分量Tv;
内层循环不断重复步骤A121至A126直至趋势分量与周期分量收敛,得到最终的趋势分量与周期分量,然后计算出相应的残差分量,用于异常点检测。
A13,根据格拉布斯检验算法检测每一项特征的残差分量中的异常点。
格拉布斯检验,即最大归一化残差检验算法也是一种常用的异常检测算法,该算法常用于检测服从正态分布的单变量数据集的异常值。本发明不直接将格拉布斯检验算法应用于检测某一时间序列中的异常值,而是将其与时间序列分解算法结合,用于检测某一时间序列的残差分量的异常值。格拉布斯检验算法对于假设依赖较为严重,由于服务器数据的分布往往出现不平衡的现象,即时间序列不服从正态分布,则该算法的可靠性难以保证。而时间序列分解算法分解出的残差分量比原时间序列更符合正态分布,并且,利用格拉布斯检验算法度量残差分量的数值即异常点的异常概率的方法比传统的设定固定阈值的方法更加灵活,能够适用于实际情况中不同数据分布的情形。
本发明利用格拉布斯检验算法对A12中计算的残差分量进行度量,检测残差分量数值过大的时间点,将其标记为异常点。
格拉布斯检验算法的步骤如下:
其中
为残差分量R的平均值,s为残差分量R的标准差;
其中,tα/(2N),N-2表示显著度为α/(2N),自由度为N-2的t分布;若满足,则表示时间序列中出现异常点,转至A133,否则,结束算法;
A133剔除时间序列中的异常点即最大值点,继续执行A131直至时间序列中不存在异常点。
格拉布斯检验算法结束后,将时间序列中为非异常点的标记为正常点。
本实施例的创新点之一是结合多种算法对服务器数据进行分析。本发明的步骤A12和A13的目的是为步骤A14和步骤A15做铺垫,A12和A13确定出每一段时间序列的正常点和异常点,用以计算A14中每一项特征的正常阈值,即对应的时间序列中正常点的数据范围,并且这些正常点和异常点标记可以作为标签应用于A15中的机器学习算法以训练模型。由于服务器数据缺少标签即缺少正常点和异常点标记,而人工进行标签的成本过高,不适用于大规模的服务器数据,因此,本发明利用基于时间序列的异常检测算法对历史数据进行预处理,是一种具有高准确率和高效率的获得服务器数据标签的方案。
A14,计算每一段时间序列的正常阈值;一段时间序列的正常阈值为该时间序列中的正常值的波动范围即最小值和最大值。时间序列中的正常值为A13中标记的时间序列中的正常点的数值。
时间序列的正常阈值即为该时间序列对应的特征的正常阈值。该阈值在一个工作周期内更新一次,将作为实时报警器对实时数据进行分析的依据之一。
本发明将每一项特征的正常阈值作为异常分析的依据的原因是,服务器数据的分布规律多呈现出周期性的规律,正常情况下,实时数据与历史数据的在数值分布上相似,若某一时间点的服务器数据与历史数据的差异较大,则可认为该时间点发生服务器异常。
A15,利用梯度提升树算法建立异常数据检测模型。
梯度提升树(Gradient Boosting Decison Tree,GBDT)是一种非常重要的且应用广泛的监督学习算法,基于集成学习的boosting思想,以回归树为基学习器,将一组基学习器串行的集成组合成一个强学习器用以进行分类任务。
本发明使用A13中的正常点和异常点标记作为标签,将各项特征对应的时间序列作为训练样本,利用梯度提升树算法建立异常数据检测模型,该模型在一个工作周期内更新一次,将作为实时报警器对实时数据进行分析的依据之一。本实施例使用梯度提升树算法建立异常数据检测模型,主要原因是该算法在许多实际问题中有着良好的表现,相较于传统的机器学习算法,基于集成学习的梯度提升树算法往往能够得到较高的准确率,并且具有更强的健壮性。
梯度提升树算法的目标是训练出拟合函数f,使得该函数对于输入的训练样本x,输出结果尽可能拟合标签y,即尽可能的与标签y相同,该算法以损失函数L度量拟合函数的拟合效果,损失函数的数值越小,则拟合函数的拟合效果越好。梯度提升树算法训练出拟合函数f即为其建立的异常数据检测模型。该模型将用于下文中的实时报警模块对实时数据进行分析,具体的,对实时数据x,该模型将输出f(x)=[p0,p1],p0和p1分别为实时数据x为正常和异常概率,两个概率之和为1。若p1>p0,则实时数据出现异常;否则,实时数据正常。
梯度提升树算法的核心思想在于采用最速下降法的近似方法,利用损失函数的负梯度作为提升树算法中的残差即残差为训练样本的实际标签与梯度提升树的预测标签之差的近似值,以此来拟合一个回归树基学习器。梯度提升树算法的具体步骤如下:
其中,损失函数为L(y,f(x))=log(1+exp(-y·f(x))
A152,对于每一个训练样本(x
i,y
i),计算残差
其中m代表第m(m=1,2,…,N)个基学习器;
A153,训练基学习器Tm,其叶结点划分的区域表示为Rm,j(j=1,2,…,J)
A154,计算基学习器Tm的每一个叶结点的输出值
若m<M,则转至A152,否则,转至A156;
图4为梯度提升树算法的示意图,梯度提升树算法通过串行的迭代生成多个基学习器(Tree1,Tree2,…,Tree n),通过减小输出与目标之差即残差来优化拟合函数,最终将所有的基学习器累加,得到一个强学习器。
本实施例使用梯度提升树算法建立异常数据检测模型,进一步利用了A12和A13中计算的每一段时间序列的正常点和异常点。
与A14中计算每一段时间序列的正常阈值的分析思路不同,A15利用梯度提升树算法对全部的时间序列进行综合分析,将历史数据的多维特征进行关联,能够分析出多维特征之间复杂的数据关系。本发明使用梯度提升树算法充分利用了机器学习算法在处理高维数据上的优势,并且能够更加全面的评估各项特征对于服务器异常造成的影响和作用。
A16,利用孤立森林算法建立异常数据检测模型。
孤立森林算法(Isolation Forest)是一种基于集成学习思想的、高效的、适用于连续数据的无监督的异常检测算法,具有线性时间复杂度和高精准度,该算法占用内存小、速度快,在异常检测领域有着广泛的应用。
由于孤立森林算法是一种无监督的机器学习算法,因此训练模型时不需要标签。本发明将各项特征对应的时间序列作为训练样本,利用孤立森林算法建立异常数据检测模型,该模型在一个工作周期内更新一次,将作为实时报警器对实时数据进行分析的依据之一。本发明使用孤立森林算法建立异常数据检测模型,主要原因是孤立森林算法适用于分布式场景,对于训练大规模的服务器数据有着速度上的优势,并且该算法精准度较高,在网络安全中的攻击检测、金融交易欺诈检测等领域有着广泛的应用。
在孤立森林算法中,异常点被定义为容易被孤立的离群点,即分布稀疏且离密度高的群体较远的点。孤立森林算法基于划分的思想,递归地随机分割训练样本建立孤立树,直到所有的样本点都是孤立的。样本点距离孤立树的根结点越近,则表示该点越容易被孤立,也即该点为异常点的概率越大。具体的,判断是否为异常点的概率阈值需要根据实际情况确定。
孤立森林构造孤立树的过程完全随机并且是不放回抽样,即训练样本在训练过程中只是用一次。孤立树是一棵二叉搜索树,二叉搜索树是一种特殊的二叉树,其特点在于左子结点的数值小于父节点,右子结点的数值大于父节点,对二叉搜索树进行中序遍历,即可得到该二叉搜索树中对应数据的顺序排列。
建立孤立树的算法如下:
A161,随机选择训练样本中的某一特征q;
A162,随机选择数值p,使得p介于特征q的最大值和最小值之间;
A163,以p为分割点,将特征值小于p和大于p的训练样本分别分割成孤立树的左右两个分支;
A164,若分割后的训练样本中只包含一个样本点或者孤立树的高度达到限制条件,则算法结束;否则,对孤立树的两个分支继续执行A161。
构建的孤立树集合即为孤立森林,孤立树建立完成后,计算从根结点到每一个叶结点即训练样本到根结点的路径长度即高度,某点的路径长度越小,则异常概率越高。
其中,x为某个训练样本,h(x)为训练样本x在孤立树中的路径长度,E(h(x))为训练样本x在孤立树中的路径长度的平均值,n为孤立树中的叶结点数,平均路径长度c(n)计算公式如下:
图5为孤立森林算法的示意图,IForest表示孤立森林,ITree表示孤立树,颜色越深表示距离根结点越近,也即异常程度越高,黑色点表示异常值最高的样本点。
孤立森林算法建立的孤立树集合即为其建立的异常数据检测模型。该模型转化为数学函数可以表示为f,对于输入x,输出判断结果y。该模型将用于下文中的实时报警模块对实时数据进行分析,具体的,对实时数据x,该模型将输出f(x)=[p0,p1],p0和p1分别为实时数据x为正常和异常概率,两个概率之和为1。若p1>p0,则实时数据出现异常;否则,实时数据正常。
A17,根据基于直方图的异常检测算法建立异常数据检测模型。
基于直方图的异常检测算法(Histogram-based Outlier Score,HBOS)是一种高效的无监督的异常检测算法,该算法假设各特征相互独立,并在每个特征上划分n个区间,每个区间所对应的异常值取决于密度即直方图高度,对于某样本,若其某一特征的数值对应的密度越小,则表示与该特征数值临近的点越少,则该特征出现异常的可能性越大。
由于基于直方图的异常检测算法是一种无监督的机器学习算法,因此训练模型时不需要标签。本发明将各项特征对应的时间序列作为训练样本,利用基于直方图的异常检测算法建立异常数据检测模型,异常数据检测。基于直方图的异常检测算法原理简单,在处理大规模数据方面有着突出的优势,速度快且检测效果较好。
基于直方图的异常检测算法的具体步骤如下:
A171,对每一个特征的时间序列做离散化处理,生成动态宽度的直方图即柱状图;
具体的动态宽度直方图生成算法如下:
将时间序列中的所有值排序形成新的时间序列,然后将新的时间序列中连续的N/k个值装进一个桶或柱内,其中N是所有的样本数,k是桶的个数。对于特殊情况,即当时间序列中存在超过k个数值相等时,对应的一个桶柱内允许拥有超过N/k个值。
生成的直方图的面积对应桶柱中的样本数,即直方图中的每一个桶柱的面积大致上均为N/k。桶柱的宽度由桶柱中的最大值和最小值决定,因此,可以计算每一个桶柱的相应的高度。桶柱的高度越低,表示桶柱内数据的最大值和最小值之差越大,也即桶柱内数据的密度越小。
A172,对A171所得的直方图分别做归一化处理,使得直方图的最大高度为1;
A173,根据A172中所得的直方图计算样本点x的异常值H(x):
其中,Q为特征的总数,hist(x)为样本点x对应的直方图高度;异常值越大,则该样本点为异常的概率越大。具体的,判断是否为异常点的概率阈值需要根据实际情况确定。
图6为基于直方图的异常检测算法的示意图,虚线以下区域为正常点,虚线以上区域为异常点。图中将训练样本划分至4个桶柱内,可以看出,从左至右,第三个和第四个桶柱的高度较高,也即其中的样本点异常值较高。
基于直方图的异常检测算法建立的直方图即为其建立的异常数据检测模型。该模型转化为数学函数可以表示为f,对于输入x,输出判断结果y。该模型将用于下文中的实时报警模块对实时数据进行分析,具体的,对实时数据x,该模型将输出f(x)=[p0,p1],p0和p1分别为实时数据x为正常和异常概率,两个概率之和为1。若p1>p0,则实时数据出现异常;否则,实时数据正常。
本实施例的实时报警模块根据历史数据分析模块提供的正常阈值和异常数据检测模型对实时数据进行分析,判定服务器是否出现异常,并且确定相应的报警等级,如图2所示,具体步骤如下:
A21,采集服务器实时数据;采集服务器实时数据,将其作为待测样本,该样本中的特征与历史数据分析模块采集的历史数据中的特征一致。
A22,利用历史数据分析器建立的异常数据检测模型对实时数据进行分析。使用历史数据分析模块中以梯度提升树算法、孤立森林算法和基于直方图的异常检测算法建立的3种异常数据检测模型对待测样本进行检测,每一个模型对于一个待测样本都会输出一个对应的预测概率。对一异常数据检测模型,当待测样本的预测为异常的概率大于50%时,则表示该模型认为待测样本存在数据异常。
本实施例中是以3个模型的预测异常概率的平均值为模型综合预测概率p。模型综合预测概率p的数值越大,则待测样本中存在异常的可能性越高。
虽然本发明使用的3种机器学习算法在实际应用中都有着良好的表现,但是使用单一模型进行异常检测仍然可能会出现判断的偏差,为了降低误报率将正常数据判断为异常的比例,获得更为可靠的异常分析结果,本发明结合3个模型的预测结果综合的对实时数据进行判断,以模型综合预测概率作为判断待测样本是否异常的依据。
A23,利用历史数据分析器计算的正常阈值对实时数据进行分析。
本发明在利用异常数据分析模型之外还利用正常阈值对实时数据进行分析的原因之一是为了进行根因分析,确定服务器具体的出现异常的原因,也即确定待测样本的哪几个特征超出了正常阈值。
具体的,分析步骤如下:
A231,对每一项特征i,判断实时数据对应的特征值是否超出对应的正常阈值,若未超出正常阈值,转至A232;否则,转至A233;
A232,记阈值超出范围百分比ri=0%;
其中,xi为实时数据对应特征i的数值,mi为特征i对应的正常阈值的最大值;
A234,阈值超出范围百分比r取所得ri的最大值,即r=max(r1,r2,…,rQ);其中,Q为特征的总数。阈值超出范围百分比r的数值越大,则实时数据中存在异常的可能性越高。
A24,综合分析结果判断实时数据是否异常。本发明判断实时数据是否异常以及具体的报警等级是由A22计算的模型综合预测概率p和A23计算的阈值超出百分比r综合确定。模型综合预测概率p反映的是实时数据中多维特征的异常程度,阈值超出百分比r反映的是实时数据中单维特征的异常程度。
报警等级判断规则的具体内容如下表所示:
报警等级 |
判断规则 |
1紧急 |
p>=50%且500%<r |
2重要 |
p>75%且100%<r<=500% |
3错误 |
p>75%且10%<r<=100% |
4警告 |
50%<p<=75%且10%<r<=500% |
5提醒 |
p<=50%且10%<r<=100% |
6信息 |
r<=10% |
本发明中,报警等级分为6级,报警等级的数值越小表示服务器出现异常的概率越大,异常情况越严重。其中,第6级表示服务器运行正常。
本发明中,模型综合预测概率p和阈值超出百分比r的检测结果综合对应一个报警等级。特殊的,当阈值超出百分比r<=10%时,报警等级为第6级信息。
具体的报警等级判断规则可以根据实际需求进行调整。划分报警等级是为了更加适用于实际应用的场景,便于服务器维护人员进行管理,优先处理更为严重的服务器异常情况。
以模型综合预测概率和阈值超出百分比综合确定报警等级是为了充分考虑待测样本中多维特征和单维特征的数据分布情况,更加全面的分析实时数据。
A25,将分析结果和报警通知反馈给服务器维护人员。
图7显示了某一时刻某特征异常的情况,其中,横轴为时间,纵轴为异常指标,灰色曲线代表历史数据的时间序列,黑点标记为异常点,min和max两条虚线表示正常阈值的下界和上界。可以看出,实时数据在该特征的数值偏离正常阈值,出现异常情况。
实时报警器将A24确定的报警等级和出现异常的特征即超出正常阈值的特征反馈给服务器维护人员,通知其进行相应的处理。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进,这些改进也应视为本发明的保护范围。