基于历史数据的系统隐患预测研究

2015-02-24 12:51张华陈会飞中国移动深圳有限公司深圳518048
电信工程技术与标准化 2015年11期

张华,陈会飞(中国移动(深圳)有限公司,深圳 518048)

基于历史数据的系统隐患预测研究

张华,陈会飞
(中国移动(深圳)有限公司,深圳 518048)

摘 要基于平台自身历史表现,结合LOESS拟合、TBRM拟合以及DTW 3种算法,提出一种平台性能隐患预测方法,达到准确预测平台层面资源波动异常的目的。实践表明,该方法准确有效,在实际使用中取得了良好效果。

关键词性能隐患;性能阀值监测;LOESS拟合;TBRM拟合;DTW算法

运营系统作为一个公司正常运转的命脉,保障其稳定运行是重中之重。各公司通过建立平台资源监控系统,按照固定的频率(例如:5分钟/轮次)对选取的平台关键性能指标进行采集,依据指标的变化情况来判定运营系统平台层面的运行情况。

从影响系统稳定运行的原因看,主要分为3类:一是配置故障,指的是系统因网络配置等非系统本身原因导致无法访问,此情况主要是人为原因导致且具有偶然性。二是硬件故障,指系统硬件层面突然损坏导致系统无法访问,例如主机板卡损坏、内存损坏等,此类情况通常在故障前仅有少量告警信息,且出现较为突然,一般无法进行预测。三是性能异常,指短时间内并发访问用户量过高或者应用存在缺陷,造成业务访问响应缓慢,在平台层面表现为某些性能指标走势突然变坏。

前两种情况,会造成系统使用中断,监控系统会第一时间发现并介入处理。但对第三种情况,在业务性能出现拐点前,通常平台资源层面最先有性能指标异常出现。那么怎样才能在平台层面性能变坏时进行准确预警呢?业内常用的是性能阀值检测法,但此方法缺点明显,告警量大,难于筛选有效信息,告警有效率不高。本文基于平台自身历史表现,结合LOESS拟合、TBRM拟合以及DTW 3种算法,提出一种系统性能隐患预测方法,结合平台资源使用现状以及平台自身特性,形成对系统内平台资源的评价标准,分析找到出现性能隐患的平台对象和隐患时间点,达到预测性能隐患的目的。

1 性能阀值检测法介绍

性能阀值检测法主要是针对平台资源性能指标定义统一的告警阀值区间,当达到某个阀值区间时,触发相应等级的告警规则,认定系统存在性能问题。如表1所示为针对某系统的告警阀值样表,这种方法阀值区间的设置依赖于经验值或历史数据均值。其中,指标类型为正向表示该性能指标值越高平台对象性能越好,指标类型为反向表示该性能指标值越低平台对象性能越好。例如在满足用户访问的情况下,性能指标“数据缓存读命中率”越高表示性能越好,故此为正向性能指标;性能指标“主机CPU利用率”越低表示性能越好,故此为

反向性能指标。

表1 告警阀值样表

该方法问题在于无法正确反映系统性能层面的问题,主要有3点:一是不适合现状。为最大化利用系统平台资源,多数系统内资源占用率均比较高,但业务层面运行较为稳定,直接从资源占用率高就认定系统性能存在问题较为武断。二是告警触发情况较多,发现性能问题却较少。当资源多次在阀值上下进行波动时,会多次触发告警。三是告警阀值较为固定,不利于发现性能问题。例如定义CPU利用率阀值为80%,某台主机平时资源占用为30%,某天突然上升至75%,此时应该是一个性能隐患,需要重点关注,但性能阀值检测法却无法发现。

更进一步的方法,是在告警阀值的基础上定义一段时间内达到告警阀值的次数或者一段时间内告警量达到一定比例,如果达到即认为性能存在隐患,需要介入处理。此改进方式解决了资源占用率反复波动导致大量告警的情况,但对告警次数或者告警比例的定义仍然依赖于经验值,另外对资源持续上升等异常情况仍然无法监测。

2 基于历史数据的预测方法

2.1预测原理介绍

在系统稳定运行情况下,平台层面多数性能指标均是在一定范围内进行周期性线性波动。使用一段时间内某个指标的采集数据绘制日折线图,可以观测到以下规律,性能指标多数数据均在一个波动上下线内,且每天性能指标形成的折线走势基本相同,即性能和时间存在对应关系:

y=f(x)+ε,ε~N(0,σ2)

这里y为性能,x为每日的时间点,ε为每天的波动且服从均值为0,方差为σ2的正态分布。

当异常发生时,会出现以下两种情况:一是性能指标数据波动超出历史波动范围;二是性能指标当前线性走势和以往同时段走势表现不一致。故当两种情况均发生时,即可认定当前存在性能隐患。

本方法选取以下两类共4种异常波动情况作为模型建立依据。如图1的图形中,①代表历史波动下限,②代表历史波动上限, ③代表历史拟合日曲线,④、⑤代表两种异常波动走势。

类型1当前采集性能指标数据超出历史拟合范围并稳定在一定范围内。图中线⑤为反向指标示例,线④为正向指标示例。

图1 异常类型1正反向指标示例

类型2 当前采集性能指标数据超出历史拟合范围且呈偏离走势。图2中线⑤为反向指标示例,线④为正向指标示例。

图2 异常类型2正反向指标示例

2.2相关算法介绍

2.2.1 拟合算法

(1)LOESS拟合(非线性局部多项式拟合)

该算法为统计分析中对趋势拟合的一种常用非线性回归算法[1~5]。主要思想是选取二维变量数据(例如:采集时间点和平台性能指标值两个变量)中一定比例的数据,进行集中拟合得到多项式回归曲线,从而得到数据在局部展现出来的规律和趋势。本方法在拟合过程中采用稳健的距离加权方法,消除异常值对整体回归的过大影响,然后根据整体的波动情况,计算出波动方差,依据一定概率计算得到历史波动上下限。

(2)TBRM拟合(Tukey's 2次权重稳健均值)

该算法是对一组数据求稳健均值的方法。当每日采集性能指标数据的时间点相对固定的情况下,可将一段时间范围的采集数据归为同一时刻来处理,可更加敏感地计算平台性能数据的趋势变化情况,可以作为对LOESS拟合算法的一个补充,以便更加敏感地发现问题。计算方法如下:

m=y中值的绝对值;

cutoff=6×m异常范围参数是9;

T(X)=(1-(X/cutoff)2)2 if abs(X)<cutoff(默认T(X)为权重)T(X)=0,如果abs(X)≥ cutoff。

拟合算法使用说明:

为检测性能数据的异常变化,在满足稳定情况下,利用LOESS和TBRM两个算法对性能数据做日周期性拟合以得到历史拟合日曲线,然后利用正态分布得到合理的历史波动上下线阀值。LOESS和TBRM两个算法在使用时均采用了稳健的计算方法,可较好的消除异常值对拟合效果的影响。但对某一个采集时间点来讲,如果数据的采集时间比较固定且不同时刻相对波动范围较大采用TBRM拟合算法,反之采用LOESS拟合算法。

(3)异常数据阀值确定

在实际系统运行过程中,由于各种因素的影响,采集的性能数据往往包含一定量的突变数据,导致数据走势出现尖角,此类数据一般较少,但由于突变数据的幅值偏离真实值较大,如果直接参与模型计算,将降低模型的准确度,以此,突变数据的过滤是数据处理的重点。通常采用分位数的方法来判定多少比例的采集数据为异常。如图3为主机CPU利用率直方图使用示例,①表示有98.2%(占比0.982)的CPU利用率采集数据位于80%之下;②表示有99.2%(占比0.992)的CPU利用率采集数据位于90%之下; ③表示有99.5%(占比0.995)的CPU利用率采集数据位于95%之下。如果我们选择异常概率为5/1 000,即表示认定5/1 000的数据为异常数据,结合图例,表示CPU利用率低于99.5%的数据为正常,超出95%的5/1 000数据为异常需要舍弃。

图3 主机CPU利用率直方图使用示例

图4 某主机CPU利用率日趋势图

图4为使用一台主机两个月内CPU利用率数据绘制的日趋势图,其中,③为使用LOESS算法和TBRM算法得到的历史拟合日曲线,假设历史数据在拟合线

上线波动为正态分布的情况下,①和②是以正态分布1/1 000概率(六司格马原理,以及实际情况调整)得到的波动上、下线阀值曲线,超出即为异常情况。

2.2.2 DTW算法(动态时间序列扭曲算法)

DTW算法(动态时间序列扭曲算法)是计算序列间相似度的著名算法[6~9],可以很好的计算两个序列之间的大小、趋势和性能波动之间的差异以及距离。

平台性能指标日采集数据之间存在稳定的日周期性现象(或其他固定长度的性能比较),采用DTW算法做日周期的比对,可实时监控到性能异常变化。

2.3预测方法

2.3.1 预测流程说明

本模型为基于平台性能指标的通用预测模型,没有针对固定的某些指标。具体操作步骤如下:

(1)选取性能指标:选取以日为周期进行波动的平台资源性能指标。

(2)采集历史数据:选取该性能指标近两个月的全量采集数据作为计算基础。

(3)算法拟合:采用LOESS拟合和TBRM拟合两种算法,并按照1/1 000的异常数据比率分析步骤2的性能指标数据。

(4)得到历史范围:依据步骤3计算结果得到该指标历史波动上线和波动下线(对于大于合理范围的数值,通常采用经验值,不小于0.001,不大于0.995)。

(5) 采集当前一轮性能指标数据。

(6)判断该数据是否超出历史波动上下线,如果没有超过,直接跳转到步骤11。

(7)采用当前数据值以及之前多次采集数据值构建当前走势折线。

(8)采用DTW算法,判断当前走势折线是否和上月同天采集数据形成的折线走势一致(这里的对比周期长度可认为是每日或是一定长度的性能序列),如果一致,直接跳转到步骤11。

(9)采用DTW算法,判断当前走势折线是否和上周同期采集数据形成的折线走势一致,如果一致,直接跳转到步骤11(上周同期指当前天减去7天所在日期)。

(10)流程走到本步骤标识该指标当前存在性能隐患,需要关注。

(11)是否继续采集性能数据进行判定,如果继续,返回步骤5继续,否则流程结束。

2.3.2 历史范围计算

(1)计算CPU利用率日数据间的的相似度距离。

根据日周期现象,使用DTW算法(动态时间序列扭曲算法)对CPU利用率按照日为单位计算日与日之间的相似度距离(或者计算每日与拟合线的相似度差距,这里的对比周期长度可以说每日或是一定长度的性能序列)。

(2)对相似度距离做正态标准化,找出相似度不一致的标准。

利用步骤1得到的相似度距离,对指标数据进行正态标准化,利用小概率事情不会发生的假设找出异常数据的判断标准。

(3)根据不一致的日期数量判断数据稳定性情况。

根据步骤2得到的相似度标准,判断一个周期(通常选择近两个月)内相似度距离的波动情况,计算得到集中程度,根据横向比较确定阀值,以确定性能的变化趋势是否是按日基本稳定的。

(4)计算拟合上下限。

在上述稳定条件下满足时,做性能数据与时间的拟合,估计与时间相应的性能数值,并根据历史表现情况,计算出数据的波动大小(拟合方差),将波动正态标准化,计算一定概率下的性能数据的波动范围,计算出拟合的上限和下限,比如小于0.1%情况下,正常值的范围应该是多大(在不稳定的情况依然可以做拟合,但是上下限可能会过大,可根据数据特征选取合理的数据做参考来左拟合和拟合的上下限)。

(5)根据拟合上下限和当前数据相似度比较,判断性能是否发生了不正常的波动现象。

(6)根据拟合的范围来判断性能当前值是否发生了较大范围的波动。

3 实际应用效果举例

某公司在建立平台资源监控系统基础上,使用该模型实时分析关键性能指标数据,发现某主机内存利用率在8月内某天显著走势异常。经分析,发现新上线的业务模块存在Java代码编写缺陷,占用内存资源无法释放,导致该主机处理性能下降明显;在进行代码修改后,性能回复稳定。代码修改前后的内存利用率折线如图5所示。

图5 模型应用效果示意图

4 结束语

本文基于平台性能历史数据,提出一种性能隐患预测方法,弥补了性能拐点检测法的不足。与性能拐点检测法相比,本方法预测性能隐患更加准确有效。通过收集的系统运行历史数据,在业务层面受到影响前主动预警,主动发现主动解决,使得平台监控从资源的被动监控向主动的性能隐患监控转变。

参考文献

[1] 宁逸. 非参数局部多项式回归估计模型的研究[D]. 秦皇岛:燕山大学, 2010.

[2] 胡舒合. 非参数回归函数估计的渐近正态性[J]. 数学学报,2002,45(3):433-442.

[3] 李丹宁, 穆铮, 石军, 等. 基于非参数估计方法的沪铜期货价格研究[J]. 经济数学,2012,29(3):36-39.

[4] 谭建国. 基于深度函数的曲线拟合方法研究[D]. 天津:天津大学,2007.

[5] 左义君, 崔恒建. 统计深度函数及其应用(英文)[J]. 数学进展, 2004,33(1):3-27.

[6] 卢荣. 基于动态扭曲算法的时间序列部分周期模式挖掘研究[D]. 天津:天津大学, 2009.

[7] 董晓莉, 时间序列数据挖掘相似性度量和周期模式挖掘研究[D]. 天津:天津大学,2007.

[8] 罗风曼. 时间序列预测模型及其算法研究[D]. 成都:四川大学,2006.

[9] Jonathan D.Cryer, Kung-Sik Chan. 时间序列分析及应用:R语言(原书第2版)[D]. 潘红宇(译者), 等(译者). 北京:机械工业出版社,2011.

Research on prediction of system hidden trouble based on historical data

ZHANG Hua, CHEN Hui-fei
(China Mobile (Shenzhen) Co., Ltd., Shenzhen 518048, China)

AbstractIn this paper, a platform performance hidden troubles prediction scheme was presented based on the historical performance of the platform itself combined with LOESS fitting, TBRM fitting and DTW algorithm to predict the abnormal fl uctuation of the platform resources correctly. Practice has proved that this scheme runs correctly and effectively and achieves good performance in use.

Keywordsperformance hidden trouble; performance threshold detecting; LOESS fi tting; TBRM fi tting; DTW algorithm

收稿日期:2015-09-16

中图分类号TP391

文献标识码A

文章编号1008-5599(2015)11-0068-05