一种基于统计监测的云应用故障诊断系统的制作方法
【专利摘要】一种基于统计监测的云应用故障诊断系统,包括:监测代理、运行状态跟踪器、故障检测与定位器,其中,监测代理:用于搜集云应用运行时的监测信息;运行状态跟踪器:用于将系统运行状态抽象为局部离群因子与关联系数;故障检测与定位器:用于根据运行状态跟踪器提供的监测数据分析系统运行状态以检测故障并定位问题原因。本发明根据监测数据利用局部离群因子与核典型关联分析的方法从系统资源利用和性能表现方面刻画系统运行状态,利用控制图检测系统故障,利用特征选择的方法定位异常度量。本发明具有无需软件体系结构和参数估算等应用相关知识,简单易于实施,适用范围广的优点。能够无需人工参与的自动检测云应用的多种故障,并量化度量的异常程度。
【专利说明】一种基于统计监测的云应用故障诊断系统
【技术领域】
[0001]本发明属于软件【技术领域】,具体涉及基于统计监测的云应用故障诊断系统。
【背景技术】
[0002]近年来,云计算技术飞速发展,已经广泛应用于诸多领域,成为当前信息技术产业发展和应用创新的热点。国内外大型IT企业纷纷推出云计算平台(如,Amazon EC2、GoogleApp Engine、Microsoft Azure>IBM SmartCloud、盛大云、阿里云、新浪云),同时,开源云计算平台(如,Eucalyptus、OpenStack)的出现也促进了云计算技术研究与应用的发展。目前,电子邮件、电子商务、网上银行、社交网络等在线服务已经成为人们日常工作和生活中不可或缺的一部分,这些互联网应用中相当大一部分已经部署在云计算平台。此外,众多的商业应用也依托于云服务(如,Saleforce CRM、Google Docs)。然而,云应用(部署于云计算平台的应用)的多样性以及部署环境的动态性使得云计算系统时常会出现故障,而云应用故障将会严重影响人们正常的工作生活,甚至在商业方面造成巨大的经济损失。及时检测云应用故障并准确诊断问题原因,是确保云应用性能与可靠性的关键之一。云应用故障通常是由运行时复杂原因所造成的(如,资源竞争、配置错误、软件缺陷、硬件失效),具有不确定性,难以重现,无法在软件开发和测试过程中完全消除,因而,系统管理员难以人工跟踪系统运行状态并及时检测故障。
[0003]云应用本质上是一种分布式系统,针对此类系统的故障检测与诊断已经成为了热点问题,存在较多的研究工作,大概可归为以下几类方法。基于信号的方法事先定义故障发生时出现的信号,在运行过程中将观测到的状态与故障信号进行匹配(Chen H, JiangGj Kenji Y,et al.1nvariants based failure diagnosis in distributed computingsystems[C].In:1EEE29th symposium on reliable distributed systems.2010.160-166;Ghanbari Sj Amza C.Semantic-driven model composition for accurate anomalydiagnosis[C].1n:1nternational conference on autonomic computing.2008.35-44.)。这种方法对于已知故障较为有效,但是描述系统故障及其表现通常较为困难,特别是无法识别此前未曾出现的故障。基于执行路径的方法通过监测框架跟踪请求的处理路径,当其偏离正常路径即检测为故障(Barham P, Donnelly A,Isaacs R,et al.Using Magpie forrequest extraction and workload modelling[C].In:the6th conference on symposiumon opearting systems design&implementation.2004.1—14 ;Kiciman Ej Fox A.Detectingapplication-level failures in component-based Internet services [J].1EEEtransactions on neural networks.2005,16 (5): 1027-1041)。这种方法能够发现应用层故障,但用户访问模式不断变化会导致组件交互行为的改变,从而造成在运行环境动态变化的应用场景中准确率较低。基于度量的方法首先建立度量值的分布,检测监测值是否符合该分布(Bodic P,Friedman Gj Biewald Lj et al.Combining visualizationand statistical analysis to improve operator confidence and efficiency forfailure detection and localization[C].1n:1EEE second international conferenceon automatic computing.2005.89-100.);或者建立度量之间存在的稳定关联性,检测关联是否打破(Jiang G, Chen H, Kenji Y.Modeling and tracking of transactionflow dynamics for fault detection in complex systems[J].1EEE transactionson dependable and secure computing.2006, 3 (4):312-326 ;Munawar M A,WardP A S.A comparative study of pairwise regression techniques for problemdetermination[C].In: ACM conference of the center for advanced studies oncollaborative research.2007.152-166.)。部分研究关注于系统性能表现,建立度量值与性能间的关联模型,检测系统性能表现是否符合预测的结果(Cherkasova L, Ozonat K, MiN, et al.Automated anomaly detection and performance modeling of enterpriseapplications[J].ACM transactions on computer systems.2009, 27 (3):1-32 ;CohenI, Goldszmidt M, Kelly T, et al.Correlating instrumentation data to systemstates: a building block for automated diagnosis and control[C].In:the6thconference on symposium on operating systems design&implementation.2004.1-16.)。这类方法通用性较好,然而随着运行时间的增长,应用场景的变化或系统的演化升级,这种度量值分布和度量关联性也会发生改变,因此该方法并不能适应负载动态变化的需要。
[0004]云应用巨大的部署规模、复杂的拓扑结构、动态的负载变化以及多样的应用类型给传统分布式系统故障诊断方法带来了巨大的挑战,主要体现在以下几个方面。首先,云应用通常部署在大规模数据中心,成千上万的节点以及众多层次(如,网络层、硬件层、虚拟机层、操作系统层、中间件层、应用层)的大量属性需要监测,系统管理员无法手动制定预警规则,因此,需要提供自动化的故障检测与诊断方法。其次,云应用通常对平台提供者和管理者是透明的,难以通过侵入的方法获得应用细粒度的监测数据,这就使得通过对应用的软件体系结构建模分析以进行故障检测与诊断的方法变得不可行,因此,需要在无需应用相关领域知识的情况下及时准确的发现并定位问题。
【发明内容】
[0005]本发明的技术解决问题:针对现有技术在云计算环境下所存在的难以获取应用相关知识,且难以人工设定检测规则的问题,提出一种基于统计监测的云应用故障诊断系统及方法,具有无需软件体系结构和参数估算等应用相关知识,简单易于实施,适应范围广的优点。能够无需人工参与的自动检测云应用的多种故障,并量化度量的异常程度。
[0006]本发明的技术方案:一种基于统计监测的云应用故障诊断系统,包括:监测代理、运行状态跟踪器、故障检测与定位器,其中:
[0007]监测代理:用于搜集云应用运行时的监测信息,每个服务器节点上均需要部署一个监测代理,从系统层和应用层分别对系统进行监测,并将监测信息发送至运行状态跟踪器;监测代理包括系统监测模块和应用监测模块;系统监测模块利用操作系统所提供的接口获取各种资源利用信息;应用监测模块利用中间件所提供的接口获得应用性能信息,应用性能信息包括负载变化和性能属性信息;
[0008]运行状态跟踪器:用于将系统运行状态抽象为局部离群因子(L0F,Local OutlierFactor)与关联系数;运行状态跟踪器包括系统资源跟踪模块和应用性能跟踪模块;在系统层,系统资源跟踪模块根据从监测代理的系统监测模块得到的资源利用信息,计算LOF值以量化运行时资源的异常程度;在应用层,应用性能跟踪模块根据从监测代理的应用监测模块得到的应用性能信息,利用核典型关联分析方法计算负载信息与性能信息之间的关联系数以量化运行时性能的异常程度;
[0009] 故障检测与定位器:用于根据运行状态跟踪器提供的监测数据分析系统运行状态以检测故障并定位问题原因;故障检测与定位器包括故障检测模块和问题定位模块;所述故障检测模块周期性监测LOF值与关联系数的变化,建立控制图,并动态更新,以检测系统故障的发生;所述问题定位模块量化度量异常程度以定位故障原因,利用特征选择的方法分析故障发生前后值发生较大变化的系统度量,这些度量则可以判定为产生故障的可疑度量。
[0010]所述系统资源跟踪模块根据监测代理的系统监测模块得到的资源利用信息,计算LOF值得到运行时状态的异常程度的过程实现如下:
[0011](I)所述系统资源跟踪模块从监测代理的系统监测模块得到监测度量向量MV =Im1, m2,…,mj,L为监测度量数量,Hii为第i种监测度量,建立L个长度为η的滑动窗口,η为大于100的正整数,每种监测度量对应一个滑动窗口,每进行一次监测,则将每个监测度量值放入对应的滑动窗口,直到窗口满;
[0012](2)窗口满后,新监测度量值Hii到来时,则删除最旧监测度量值并加入Hii ;根据窗口中记录的监测度量值集合计算均值A与标准差C,计算Iiii的Z值Z(Iiii) = (Hi1-A)/Co这样就得到由L个Z值构成的Z向量:Z (MV) = {Z (In1),Z (m2),…,Z (mL)};
[0013](3)根据L个滑动窗口记录的η个度量向量,计算得到η个Z向量构成Z向量集合,根据文献(Breunig MM, Kriegel HP, Ng RT, Sander J.LOF:1dentifying density-basedlocal outliers[C].1n:Proceedings of ACM SIGMOD international conference onmanagement of data.2000, 93-104.)的方法计算新到的Z向量的LOF值,并将这个Z向量加入到Z向量集合中。
[0014]所述应用性能跟踪模块根据监测代理中应用监测模块得到的应用性能信息,利用核典型关联分析方法计算负载与性能的关联系数的过程实现如下:
[0015](I)所述应用性能跟踪模块从监测代理的应用监测模块得到负载向量(或事务型负载向量)和性能向量,建立2个长度为η的滑动窗口,η为大于100的正整数,负载向量(或事务型负载向量)对应一个滑动窗口,性能向量对应一个滑动窗口,每进行一次监测,则将负载向量(或事务型负载向量)和性能向量分别放入对应的滑动窗口,直到窗口满;
[0016]所述负载向量为:wv = Ic1, c2,..., Ci,..., cn},其中,Ci为组件i的调用频率,η为应用组件数量;
[0017]所述事务型负载向量为:twv= {in,i12,...,iln,...,iml, im2,..., Inin,..., inl, in2,
?..,inJ,其中,iab为会话中用户调用组件a后调用组件b的频率,η为系统中组件总数;
[0018]所述性能向量为:pv = (P1, P2,..., Pi,..., P1J,其中,Pi为应用第i个性能属性,η为性能属性数量;
[0019](2)窗口满后,新负载向量(或事务型负载向量)和性能向量到来时,则删除最旧向量并加入新的向量。负载向量(或事务型负载向量)滑动窗口中的向量和性能向量滑动窗口中的向量分别构成负载向量集合(WS)和性能向量集合(PS);
[0020](3)根据文献(Lai PL, Fyfe C, Kernel and nonlinear canonical correlationanalysis [J], In:1nternational journal of neural systems, 2000, 365-377.)的方法计算这个此时WS和PS的关联系数集合,R = Ir1, r2,…,rj,对&从大到小进行排序,将最大值作为此时WS与PS的关联系数。
[0021] 所述故障检测模块周期性监测LOF值与关联系数的变化,建立X-mR控制图,并动态更新,X-mR控制图由X控制图和mR控制图两部分构成,其中,X控制图用以跟踪LOF值和关联系数值的变化,mR控制图用以跟踪LOF值和关联系数波动幅度的变化,在X-mR图的基础上检测系统故障,具体实现过程如下:
[0022](I)建立2个长度为η的滑动窗口,η为大于100的正整数,LOF值对应一个滑动窗口,关联系数对应一个滑动窗口。周期性监测,每进行一次监测,则将LOF值和关联系数分别放入对应的滑动窗口,直到窗口满;窗口满后,新LOF值和关联系数到来时,则删除最旧LOF值和关联系数并加入新的LOF值和关联系数;根据滑动窗口中LOF值集合和关联系数集合分别进行计算,构建各自的X-mR控制图;
[0023](2)计算LOF值和关联系数的总体均值:
[0024]
【权利要求】
1.一种基于统计监测的云应用故障诊断系统,其特征在于包括:监测代理、运行状态跟踪器、故障检测与定位器,其中: 监测代理:用于搜集云应用运行时的监测信息,每个服务器节点上均需要部署一个监测代理,从系统层和应用层分别对系统进行监测,并将监测信息发送至运行状态跟踪器;监测代理包括系统监测模块和应用监测模块;系统监测模块利用操作系统所提供的接口获取各种资源利用信息;应用监测模块利用中间件所提供的接口获得应用性能信息,应用性能信息包括负载变化和性能属性信息; 运行状态跟踪器:用于将系统运行状态抽象为局部离群因子(LOF,Local OutlierFactor)与关联系数,这样故障检测与定位器只需监测LOF值与关联系数,即可检测系统健康状况;运行状态跟踪器包括系统资源跟踪模块和应用性能跟踪模块;在系统层,系统资源跟踪模块根据从监测代理的系统监测模块得到的资源利用信息,计算LOF值以量化运行时资源的异常程度;在应用层,应用性能跟踪模块根据从监测代理的应用监测模块得到的应用性能信息,利用核典型关联分析方法计算负载信息与性能信息之间的关联系数以量化运行时性能的异常程度; 故障检测与定位器:用于根据运行状态跟踪器提供的监测数据分析系统运行状态以检测故障并定位问题原因;故障检测与定位器包括故障检测模块和问题定位模块;所述故障检测模块周期性监测LOF值与关联系数的变化,建立控制图,并动态更新,以检测系统故障的发生;所述问题 定位模块量化度量异常程度以定位故障原因,利用特征选择的方法分析故障发生前后值发生较大变化的系统度量,这些度量则判定为产生故障的可疑度量,从而辅助分析故障原因。
2.根据权利要求1所述基于统计监测的云应用故障诊断系统,其特征在于:所述系统资源跟踪模块根据监测代理的系统监测模块得到的资源利用信息,计算LOF值得到运行时状态的异常程度的过程实现如下: (1)所述系统资源跟踪模块从监测代理的系统监测模块得到监测度量向量MV=ImlllH2,…,mj,其中,L为监测度量数量,Hii为第i种监测度量;建立L个长度为η的滑动窗口,η为大于100的正整数;每种监测度量对应一个滑动窗口,每进行一次监测,则将每个监测度量值放入对应的滑动窗口,直到窗口满; (2)窗口满后,新监测度量值Hli到来时,则删除最旧监测度量值并加入Hli;根据窗口中记录的监测度量值集合计算均值A与标准差C,计算Hii的Z值:Z (HIi) = (Hi1-A) /C ;这样就得到由L个Z值构成的Z向量:Z (MV) = {Z (In1),Z (m2),…,Z (mL)}; (3)计算滑动窗口中已记录的所有监测数据的Z向量构成集合,根据Z向量集合计算新到Z向量的LOF值。
3.根据权利要求1所述基于统计监测的云应用故障诊断系统,其特征在于:所述应用性能跟踪模块根据监测代理中应用监测模块得到的应用性能信息,利用核典型关联分析方法计算负载与性能的关联系数的过程实现如下: (I)所述应用性能跟踪模块从监测代理的应用监测模块得到负载向量(或事务型负载向量)和性能向量,建立2个长度为η的滑动窗口,η为大于100的正整数,负载向量(或事务型负载向量)对应一个滑动窗口,性能向量对应一个滑动窗口,每进行一次监测,则将负载向量(或事务型负载向量)和性能向量分别放入对应的滑动窗口,直到窗口满;所 述负载向量为:WV = Ic1, C2,..., Ci,..., C1J ,其中,Ci为组件i的调用频率,η为应用组件数量; 所述事务型负载向量为:twv = {i11,il2,...,iln,...,iml,^m2J...,...,^nlJ ^n2J...,ij,其中,iab为会话中用户调用组件a后调用组件b的频率,η为系统中组件总数; 所述性能向量为:pv = (P1, p2,..., Pi,..., pj,其中,Pi为应用第i个性能属性,η为性能属性数量; (2)窗口满后,新负载向量(或事务型负载向量)和性能向量到来时,则删除最旧向量并加入新的向量;负载向量(或事务型负载向量)滑动窗口中的向量和性能向量滑动窗口中的向量分别构成负载向量集合(WS)和性能向量集合(PS); (3)利用核典型关联分析,计算这个此时WS和PS的关联系数集合,R={ri,r2,…,rm},对1^从大到小进行排序,将最大值作为此时WS与PS的关联系数。
4.根据权利要求1所述基于统计监测的云应用故障诊断系统,其特征在于:所述故障检测模块周期性监测LOF值与关联系数的变化,建立X-mR控制图,并动态更新,X-mR控制图由X控制图和mR控制图两部分构成,其中,X控制图用以跟踪LOF值和关联系数值的变化,mR控制图用以跟踪LOF值和关联系数波动幅度的变化,在X-mR图的基础上检测系统故障,具体实现过程如下: (1)建立2个长度为η的滑动窗口,η为大于100的正整数,LOF值对应一个滑动窗口,关联系数对应一个滑动窗口 ;周期性监测,每进行一次监测,则将LOF值和关联系数分别放入对应的滑动窗口,直到窗口满;窗口满后,新LOF值和关联系数到来时,则删除最旧LOF值和关联系数并加入新的LOF值和关联系数;根据滑动窗口中LOF值集合和关联系数集合分别进行计算,构建各自的XnR控制图; (2)计算LOF值和关联系数的总体均值:
5.根据权利要求1所述基于统计监测的云应用故障诊断系统,其特征在于:所述问题定位模块量化度量异常程度以定位故障原因,利用特征选择以获得检测故障发生前后值发生较大变化的系统度量,这些度量则判定为产生故障的可疑度量,具体实现过程如下: (1)将所有度量Hii的权值W(Hli)初始化为零,并随机选取L个监测数据实例进行遍历,L为大于3小于数据实例数量的正整数; (2)对于每个实例,找到k个与其属于同一个类的距离最近的实例…,hk,k为大于I小于L的正整数: (3)找到k个与其属于不同类的距离最近的实例:gl,g2,...,gk ; (4)遍历每个监测度量,计算各度量的Z值以规范化,计算当前选取实例与实例Iii和gi在度量Hii上的距离分别为Mistance(Ii^hi)与distance Oni, g); (5)对距离加权求和得到各度量的权重:
【文档编号】H04L12/26GK103986625SQ201410234588
【公开日】2014年8月13日 申请日期:2014年5月29日 优先权日:2014年5月29日
【发明者】王焘, 魏峻, 张文博, 钟华 申请人:中国科学院软件研究所