技术领域
[0001] 本
发明涉及业务系统预测技术领域,具体涉及一种基于混合模型的动态感知性能预告警方法。
背景技术
[0002] 随着网络技术迅速发展,网络数据量与日俱增,人们越来越依赖于处理复杂业务数据的各种业务系统。由于业务数据量和数据复杂度不断增加,业务系统的性能告警率也在不断上升,甚至出现系统故障或
雪崩现象。传统的解决方法是当发生业务系统性能告警时,运维人员依据告警所提供的异常指标信息人工
定位故障根因
位置,解决根源问题从而解除告警。相对自动化的方法则是依据某种
算法或预定规则进行自动化故障根因定位,如由专家
知识库和故障
决策树算法组成的自动化故障定位模型。当业务系统发生性能告警时,无论是人工定位故障根因位置还是采用自动化方法,都属于事后方案,会耗费大量时间在查找问题和解决问题上。然而现在大多业务系统都要求系统具有较高的
稳定性,即不间断高效运行,如电商业和
银行业。为实现这一目标,如何提前预测业务系统的性能状态实现提前感知性能
瓶颈已成为热点研究问题。
[0003] 对业务系统的性能状态进行预测,一般采用对业务系统的历史指标数据进行分析,拟合其变化规律并表示成函数,再通过该函数来预测指标数据的未来值,从而达到提前预知的目的。经典的时间序列预测算法包括
自回归模型(AR)、移动平均模型(MA)以及由两者组合的差分自回归移动平均模型(ARIMA)。ARIMA模型简单高效,但其只能捕捉时间序列数据中的线性关系。为进一步提高
精度,可捕捉非线性关系的神经网络模型被广泛应用于预测领域,如反向传播神经网络模型(BP)、循环神经网络模型(RNN)等。
发明内容
[0004] 本发明的目的在于提供一种基于混合模型的动态感知性能预告警方法,提高业务系统预测精度,实现对业务系统性能状态的动态感知,从而提前发现并解决业务系统潜在的性能问题。
[0005] 为实现上述目的,本发明采用了以下技术方案:
[0006] 一种基于混合模型的动态感知性能预告警方法,包括如下步骤:
[0007] (1)采集业务系统的性能指标数据,所述采集业务系统的性能指标数据包括
基础资源数据、网络性能数据及应用性能数据;
[0008] (2)将采集到的性能指标数据进行数据清洗并存储;
[0009] (3)将处理过的性能指标数据传入混合模型,获得未来时刻的预测值;
[0010] (4)若预测值在告警
门限内则表示该预测值在正常范围内,否则发出性能预告警信息。
[0011] 上述方案中,步骤(1)中,通过客户端采集业务系统采集性能指标数据,即通过在各服务组件中部署Agent和探针的方式来实时采集和传输性能指标数据。
[0012] 步骤(2)中,所述将采集到的性能指标数据进行数据清洗包括对采集到的性能指标数据进行补缺处理、数据脱敏处理及统一格式化处理;所述数据脱敏方法包括替代、混洗、数值变换和加密方法。
[0013] 步骤(3)中,所述混合模型采用ARIMA-LSTM混合模型,具体建模方法如下:
[0014] (31)将历史序列数据通过ARIMA模型对数据进行建模;
[0015] (32)利用ARIMA模型获取序列数据中线性成分的预测值;
[0016] (33)利用LSTM模型对ARIMA模型中的残差进行建模,获取序列数据中非线性成分的预测值;
[0017] (34)将线性成分的预测值与非线性成分的预测值相加,得到预测结果。
[0018] 进一步的,所述ARIMA模型的建模方法,具体如下:
[0019] (A1)序列平稳化处理:通过观察法观测或单位根法来检测时间序列样本的平稳性,若为非平稳序列,则需经过差分处理以使序列平稳化;
[0020] (B1)模型定阶:通过观察样本的ACF图和PACF图来选取参数,得到多种参数组合,再利用BIC信息量准则从中选择一组最优的模型参数;
[0021] (C1)模型检验:通过检验模型残差是否为白噪声序列来验证该模型是否充分有效;
[0022] (D1)预测:根据历史时间序列数据对序列未来时刻值进行预测。
[0023] 所述LSTM模型的建模步骤如下:
[0024] (A2)输入数据预处理:将输入数据按
时间窗的大小转换成二维矩阵形式,然后对输入数据做归一化处理;本发明采用z-score标准化指标对输入数据归一化处理。
[0025] (B2)初始化LSTM模型:选用ReLU函数作为LSTM网络的激活函数,选择均方误差MSE函数作为模型训练的损失函数,并对损失函数进行L2正则化处理,通过L2正则化限
制模型权重的大小来有效防止过拟合现象的发生;
[0026] (C2)梯度训练确定权值:采用Adam算法对学习率进行优化;
[0027] (D2)训练输出并反归一化:采取
迭代预测方法,对每下一时刻序列值的预测在经上一时刻预测值变更后的新模型上进行预测。
[0028] 由上述技术方案可知,本发明所述的基于混合模型的动态感知性能预告警方法,既能提取序列数据的线性趋势,又能捕捉序列数据的非线性规律,相比于单一模型,所提混合模型的拟合性更优,精度更高,进一步提高业务系统预测精度,实现了对业务系统性能状态的动态感知,从而提前发现并解决业务系统潜在的性能问题。
附图说明
[0030] 图2是本发明的本发明的ARIMA-LSTM混合模型图。
具体实施方式
[0031] 下面结合附图对本发明做进一步说明:
[0032] 本
实施例的基于混合模型的动态感知性能预告警方法,包括如下步骤:
[0033] 步骤一:通过采集客户端实时采集业务系统的性能指标数据;
[0034] 采集的性能数据类型可按不同需求进行预先设定,一般包括基础资源数据,如cpu利用率、内存占比、磁盘可用率等;网络性能数据,如网络延时、网络带宽、网络吞吐量、连接建立时间等;应用性能数据,如某
请求的响应时间、交易量、交易成功率、并发数等。
[0035] 对业务系统进行性能
数据采集的方式有两种,即业务系统自身负责数据采集和由独立的采集客户端进行数据采集。前者会消耗自身的资源,如内存、cpu、带宽等。考虑到当前业务系统的数据量越来越庞大,且可能是分布式部署,本发明采用独立的采集客户端来采集业务系统的性能指标数据。通过在各服务组件中部署Agent和探针的方式来实时采集和传输性能指标数据。
[0036] 步骤二:将采集到的性能指标数据进行数据清洗并存储;
[0037] 实时采集的指标数据往往不能直接存储和使用,需要经过一些处理过程。如现实世界中,由于某些采集点损坏或断电等原因,采集数据会有缺失数据情况,需进行数据补缺处理,可将缺少数据值位置的前后两个时刻数据的平均值作为该时刻位置的数据值。考虑到数据安全原因,采集到的性能指标数据还需要进行数据脱敏处理才能存储和传输,常用的数据脱敏方法包括替代、混洗、数值变换和加密等。由于采集的性能指标数据类型不同,数据格式也不相同,需要对数据进行统一格式化,便于后期的处理和应用。
[0038] 步骤三:将处理过的性能指标数据传入混合模型,获得未来时刻的预测值;
[0039] 性能指标数据的变换规律往往是复杂多变的,以响应时间为例,其中既有线性规律,又有非线性关系,单一模型难以对其完全拟合。本发明提供一种ARIMA-LSTM混合模型,首先将性能指标历史数据传入ARIMA模型,过滤其线性规律,则非线性关系包含在ARIMA模型的残差中;再将残差传入LSTM模型以提取其非线性关系;最后将ARIMA模型预测结果和LSTM模型预测结果
叠加则为最终预测结果。图2为ARIMA-LSTM混合模型图。
[0040] 如图2所示,假设响应时间历史序列数据yt可由公式1表示:
[0041] yt=Lt+Nt (1)
[0042] 其中,Lt表示历史序列数据中的线性成分,Nt代表历史序列数据中的非线性成分。则混合模型建模的方法为:
[0043] 先将历史序列数据通过ARIMA模型对数据进行建模,然后利用新构建的ARIMA模型获取序列数据中线性成分的预测值。
[0044] 非线性成分则包含在ARIMA模型的残差中,该残差的数学表达如下:
[0045]
[0046] 其中,et表示包含非线性成分的残差, 为新构建ARIMA模型的预测值。
[0047] 得到残差et后,再利用LSTM模型对残差et进行建模,通过新构建的LSTM模型获取序列数据中非线性成分的预测值,其数学表达如下:
[0048]
[0049] 其中,f(·)表示LSTM模型建立的关系函数,εt表示随机误差。
[0050] 最后,将 和 相加得到最终预测结果,即:
[0051]
[0052] 其中, 表示非线性成分的预测值。
[0053] ARIMA模型的建模过程一般分4个步骤:
[0054] (11)序列平稳化处理:ARIMA模型需要序列数据满足平稳条件,一般可通过观察法观测或单位根法来检测时间序列样本的平稳性,若为非平稳序列,则需经过差分处理以使序列平稳化,该差分处理时参数为d。
[0055] (12)模型定阶:ARIMA(p,d,q)模型有三个参数需要确定,步骤(11)中已确定参数d可通过观察样本的ACF图和PACF图来选取参数p和q。一般以ACF图和PACF图中各自截尾的位置作为p和q的最大值,得到多种参数组合,再利用BIC信息量准则从中选择一组最优的模型参数。
[0056] (13)模型检验:可通过检验模型残差是否为白噪声序列来验证该模型是否充分有效。
[0057] (14)预测:根据历史时间序列数据对序列未来时刻值进行预测。
[0058] LSTM模型的建模步骤如下:
[0059] (21)输入数据预处理
[0060] 首先,将输入数据按时间窗的大小转换成二维矩阵形式;其次,对输入数据做归一化处理,本发明采用z-score标准化指标对输入数据归一化。
[0061] (22)初始化LSTM模型
[0062] LSTM模型的初始化包含很多事项,其中激活函数的选取和采用何种措施来避免过拟合现象直接影响了模型的最终结果。本文选取具有梯度稳定性的ReLU函数作为LSTM网络的激活函数;选择均方误差MSE函数作为模型训练的损失函数,并对损失函数进行L2正则化处理,通过L2正则化限制模型权重的大小来有效防止过拟合现象的发生。
[0063] (23)梯度训练确定权值
[0064] 梯度训练的
优化算法有很多,如随机梯度下降、AdaGrad算法、RMSProp算法等。本发明采用对学习率具有动态约束功能的Adam(Adaptive Moment Estimation)算法对学习率进行优化。Adam算法融合了AdaGrad和RMSProp算法的优势,能够动态的计算并调整不同参数的学习率。
[0065] (24)训练输出并反归一化
[0066] 训练模型得到的输出值并不是最终结果,需将其反归一化处理以得到模型的实际预测结果值。
[0067] 值得注意的是,为了保证LSTM模型对ARIMA模型残差的预测精度,本发明采取迭代预测方法,即对每下一时刻序列值的预测都在经上一时刻预测值变更后的新模型上进行预测,而不是使用测试数据预测未来每个时刻的序列值。
[0068] 步骤四:将预测值传入告警模
块,由告警模块判断是否告警,并通知给相关运维人员。
[0069] 告警模块由告警判断和告警推送两个子模块构成。告警判断子模块主要由告警门限功能模块组成,若预测值在告警门限内则表示该预测值在正常范围内,否则发出性能预告警信息。为进一步提高精度,本发明采用动态告警门限,将性能指标历史数据中每天同一时刻的数据分为一组,则每组数据基本满足正态分布规则,而正态分布满足3σ原则(σ是标准差),即所有数据基本都分布在均值[-3σ,+3σ],偏离这个区间的概率只有0.003,一般可以将这个区间确定为正常数据的范围。由于σ会随序列数据不断变化,故告警门限[-3σ,+3σ]也会合理的动态变化。
[0070] 告警推送模块的主要功能是将告警信息推送给相应运维人员。当发生性能告警或预告警时,告警推送模块会首先依据引起告警的异常指标数据查询预定的告警推送规则,如指标A异常对应运维人员a,指标B异常对应运维人员b等。再将告警信息推送给相应人员,如果预定时间内没有问题解决的反馈,则将告警信息推送给上一级相关人员,以此类推,直到收到问题解决的反馈,告警解除。
[0071] 以上所述的实施例仅仅是对本发明的优选实施方式进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案作出的各种
变形和改进,均应落入本发明
权利要求书确定的保护范围内。