郁 枫,杨 帆,熊智华
(清华大学自动化系,北京信息科学与技术国家研究中心,北京100084)
在通讯网络的运行维护过程中,技术人员通常需要监控大量的系统性能数据。为了提高监控效率,基于关键性能指标(KPI)的监控方法通过反映系统运行的整体运行情况来辅助运行维护人员进行合理判断,以保证系统的可靠运行。由于KPI 指标的异常通常反映相关服务的异常(如服务器宕机、网络负载过大等)[1],因此对于KPI变量的监控显得尤为重要。同时,随着技术的不断发展,通讯网络将不可避免地进行升级。面对升级后可能出现的关键性能指标性能下降的异常问题,技术人员需要及时找到导致问题出现的根本原因。由于存在着大量的监测变量,要实现对所有变量的逐个排查是不现实的,因此,在对关键性能指标进行监控的同时,仍然需要实现对根本原因变量的自动检测,使得技术人员能够根据系统自动检测的结果进行进一步分析,从而得到真正的原因变量,保证通讯网络的平稳运行。
偏最小二乘(PLS)的思想是建立从自变量到因变量的回归方程[2],当研究需要关注于过程变量和质量变量之间的关系时,则应该建立质量变量与过程变量之间的PLS模型[3]。这与通讯网络的关注重点即KPI与其他变量之间的关系是类似的,因而对于此类通讯网络问题可以考虑使用PLS建模,得到KPI 的监测模型。
基于PLS模型的根因检测方法主要基于贡献图[4],贡献较大的变量可能是导致故障的根本原因。文献[5]给出了贡献度的不同定义,并将基于贡献图的方法大体上分为3 类:广义贡献分解[5](GDC)、重构贡献分解[6](RBC)、对角贡献分解[7-8](DC)。通过计算各个变量的贡献度,能够检测出导致异常情况的主要变量。
然而,PLS模型没有解决过程变量中含有与质量变量变化不相关成分的问题[9],显然与质量无关的过程变量会导致模型分析结果不准确[10]。由于通讯网络监控了大量的性能数据,与KPI变量无关特别是无因果关系的变量将会严重影响数学模型的可解释性,从而降低分析结果的准确性。一方面,以交叉验证准则为代表的PLS参数选择方法更注重拟合结果的精确度而忽略了变量间关系对数学模型合理性的探讨,有利于拟合的无关变量也可能在数学模型建立过程中有较大的作用;另一方面,发生在无关变量上且幅值较大的故障将会在贡献度分析过程带来较高的占比,从而导致根因变量的误判。
面对无关变量对分析结果带来的影响,在评估通讯网络的性能时,常常首先确立代表KPI 原因的变量集[11]。互相关函数(CCF)[12]通过计算不同延时下的互相关系数,得到与质量变量相关性较强的过程变量,可以被认为是因果分析的一种近似,因而可以用来筛选变量。文献[13]利用互相关函数给出了性能数据与事件数据的相关系数以及相应时延,得出了事件与变量之间的相互影响关系。类似的,文献[14]给出了性能数据波动序列的相关系数及相应时延,得到了变量间相互的影响关系。然而,上述文献仅能给出关系模型,虽然可以依据关系模型进行故障原因推断,但并没有对KPI的数学模型进行有效分析,无法从预测性能的角度对KPI变量进行实时监控。
本文从通讯网络的实际需求出发,将PLS引入KPI变量的监控过程,针对通讯网络性能数据体量大的特点,改进传统的PLS,利用互相关函数作为前端处理部分,在PLS的基础上,结合贡献图方法,得到异常情况的根因变量。
PLS模型应用于过程监控时通常是以T2统计量和Q统计量作为监测指标。假设观测到一个新的观测向量x,则新样本的得分向量和残差向量如式(2)所示:
可以认为,如果T2统计量超过了控制限,则发生了与质量相关的故障,如果Q统计量超过了控制限,则发生了与质量变量无关的故障[18]。
对T2统计量和Q统计量的监控虽然可以判别是否发生异常,但无法给出故障发生的根源。贡献图方法通过计算各变量的贡献率来找出引起异常的根源,在根因识别领域得到了广泛的应用。
对于具有二次型I ndex(x)=xTMx的监控统计量,文献[5]给出3种贡献度定义,如式(5)所示:
在以上3 类贡献图中,DC并没有考虑变量间的相关性,完全等价于单变量贡献图。GDC方法不能很好地解决故障在回路间传播的问题,这会导致大量变量都具有较高的贡献度,而RBC方法能很好地减轻这种现象,因此本文采用RBC方法。
在进行根因分析的过程中,可以给出一段时间内各变量的单独告警序列以及总贡献度百分比,这样可以根据对象特点,从总体贡献程度和超出控制限的先后顺序两个角度来辅助技术人员进行根因分析。
为尽可能地满足PLS模型的输入变量与输出变量相关的要求,可以通过互相关分析方法给出所有观测变量中相关性较强的变量作为PLS 模型的输入变量。
CCF很好地满足了PLS 模型的输入变量与输出变量相关性问题,因而可以作为PLS模型的前端处理过程。本文提出的CCF-PLS方法原理如图1所示。
在离线阶段,通过CCF方法筛选出与KPI 变量存在相关关系的变量以建立更加精确的PLS模型。需要注意的是,系统内可能存在多个超过相关性阈值的变量,此时可以选取前E%(E为根据经验选取的最大相关变量百分比)的监测变量以减少系统的存储量,一般可以取60%~80%。在线监控时,利用学习到的PLS模型对系统进行性能监控,绘制预测值曲线与实际值曲线,并且实时监控相应的性能指标。当性能下降时,采用贡献图分析,绘制一定时间内的告警序列,计算贡献度百分比。根据贡献度的大小以及报警时间的先后综合判断根因变量。
需要注意的是,CCF-PLS方法仅仅是在PLS方法的基础上采用CCF作为筛选变量的前端处理部分,而这样的处理在通讯网络的分析中是必须的。一方面,通讯系统中性能数据体量大,筛选后的变量能有效降低性能监控时的数据存储量;另一方面,由于CCF引入的时延特性可以被认为是因果分析的一种近似处理。将CCF应用于变量筛选过程,提高了建立PLS数学模型时的可解释性,同时,也减轻了无关变量对根因分析造成的不利影响。
图1 CCF-PLS原理图Fig.1 Schematic diagram of CCF-PLS
实验数据采用某通讯公司基站采集的真实数据,共有1个KPI变量、201个待观测变量,观测数据采样间隔为15 min,较大的采样间隔满足了PLS模型静态特性的要求。正常运行状态下共采集10 d 的数据,升级后共采集6 d 数据,数据长度为1 536。
实际采集中,某些观测数据存在大量缺失的情况,仿真中去除这些观测变量,共得到92个观测变量序列和1个KPI 序列。
由专家经验可知,系统存在两种模式:6:45之前为“闲时”,6:45之后为“忙时”,考虑到“闲时”系统可能未充分运行,并不能用PLS模型表示,故本文仅采用“忙时”数据。
实际仿真数据为92 个输入变量,1 个输出变量;升级前共680 个数据,升级后共408 个数据。
采用CCF对实验数据进行分析,得到各变量之间的互相关系数,相关系数热图如图2所示,其中时延为10个采样时刻。本文仅关注KPI和其他变量的相关关系,因此热图种的第1行或第1列是用户真正关心的。计算得出,89/92的变量超过了相关性阈值,由此也可以看出,系统具有较强的线性特性。本文选取相关系数前65%的变量作为PLS模型的输入,得到60个输入变量。为方便进行后续比较,60个输入变量的序号仍采用原92个变量中的索引号。
图2 相关系数热图Fig.2 Cross-correlation heat map
PLS建模最重要的是选取主元个数A,本文采取交叉验证的方式选取主元个数,如图3所示。选取均方误差(MSE)下降趋缓时刻的主元个数作为实际建模的主元个数,本文选取为14。
建模时采用升级前70%数据作为训练数据,对升级前后所有数据进行预测,结果如图4所示。可以看出,PLS模型对升级前数据有很好的拟合效果,用作预测的剩余30%升级前数据也能和实际曲线较好地拟合,而升级后预测数据则与实际数据存在明显偏差,说明系统升级伴随了性能的下降。
图3 MSE-A 交叉验证曲线Fig.3 MSE-A plot using crossvalidation
图4 训练数据和预测数据曲线Fig.4 Training data and predicting data plots
本文考虑与KPI 相关的异常情况,所以只给出了T2统计量的检测曲线,如图5所示。从图5可以看出,升级后T2统计量明显超过控制限,这也提示着系统出现了异常情况。
性能下降后1 d 内各变量累加贡献度所占百分比见图6。可以看出,18号变量占据了最大部分,为8.45%,排名前3的变量分别为18、44、47号变量。
图5 T2 统计量监测曲线Fig.5 T2 statistic plot
图6 T2贡献度百分比Fig.6 Contribution percentage using the T2 statistic
考虑到系统最先发出告警的变量也很有可能是根本原因变量,故应该综合考虑贡献度告警序列,如图7所示。从图7可以看出,最先发出告警的变量序号分别为6、18、29、39、44、47号变量,综合考虑累计贡献率和贡献度报警序列,CCF-PLS系统将给出的根本原因为18、44、47号变量。
由专家经验判断可知,实际的根本原因为18号变量,CCF-PLS方法很好地找到了系统性能下降的根本原因。需要注意的是,其他变量所占贡献比较高的原因可能是18号变量发生故障后导致了故障的传播,而采样时间为15 min 的情况下,某些变量已经在一个采样间隔内受到了影响,故也较早地发出了告警。
图7 T2贡献度告警序列Fig.7 Alarm sequencesusing the T2 contribution plot
将CCF-PLS方法与传统PLS方法进行对比。传统PLS方法采用了文献[16]提供的PLS代码,根因分析时采用了文献[6]所述的RBC方法。为便于比较,传统PLS的主元个数选择与CCF-PLS方法一致。
图8示出了不采用CCF时各变量累计贡献度百分比,可以看出,累计贡献度最大的为23号变量,占3.56%,前3名分别为23、17、55号变量,并没有显示到根因变量18号变量。图9示出了不采用CCF时各变量贡献度的告警序列,可以看出最先报警的为28号告警序列,也没有显示根因变量18号变量,且累计贡献度最大的变量和最先告警的变量并未存在交集,这样的不一致将会导致技术人员的困惑。
表1给出了采用CCF前后PLS根因结果的对比情况,可以看出,采用CCF后PLS根因分析方法能够得到正确的根因变量,而传统的PLS方法得到的根因变量经专家经验证实完全与KPI变量无关,这验证了CCF-PLS方法的合理性。
表2给出CCF-PLS和PLS方法在正常数据集上进行测试的预测结果对比,评价指标为均方误差(RMSE)和相关系数(r),可以看出,CCF-PLS方法由于进行过变量筛选而在拟合精度上稍劣于PLS方法,但是预测性能降低情况并不明显。结合表1情况可知,CCF-PLS方法在保持一定拟合精度的情况下提高了数学模型的可解释性,使得根因分析的方法更具备可靠性,因而更适合于通讯网络的KPI数据监控以及异常根因分析。
图8 不采用CCF时T2 贡献度百分比Fig.8 Contribution percentageusing the T2 statistic without CCF
图9 不采用CCF时T2 贡献度告警序列Fig.9 Alarm sequences using the T2 contribution plot without CCF
表1 采用CCF前后根因分析结果对比Table 1 Comparison between root cause analysis of CCF-PLS and PLS
表2 采用CCF前后KPI 正常数据预测结果对比Table 2 Comparison between KPI prediction results using normal data of CCF-PLSand PLS
本文改进了传统的PLS根因分析方法,将CCF作为PLS分析的前端处理步骤,通过仿真分析,验证了其在通讯网络应用的合理性。本文仿真对象具有较强的线性特性和静态特性,对非线性以及动态特性明显的通讯系统的根因分析将是下一步重点研究的内容。