一种分布式系统根源故障定位方法及装置与流程

文档序号:17125386发布日期:2019-03-16 00:20阅读:291来源:国知局
一种分布式系统根源故障定位方法及装置与流程

本发明涉及数据挖掘技术领域,具体涉及一种分布式系统根源故障定位方法及装置。



背景技术:

随着云计算和大数据等互联网技术的飞速发展,大型企业分布式信息系统的规模越来越庞大。例如,截止2014年,亚马逊已经建成了11个云端区域,28个数据中心组,200万台服务器。截止2014年,google已经在全球数据中心拥有了100万台服务器。一旦这些承载了大量与经济生产和社会生活息息相关的业务系统出现故障、遭受网络攻击,就会给社会的生产生活带来极大的不便和经济损失,甚至导致严重的社会安全事件。例如,2015年5月27日,拥有近3亿活跃用户的支付宝出现了大面积瘫痪;携程网于2015年5月28日长达12小时无法访问,经济损失约5000万元人民币。因此,在大规模信息系统中,快速有效地进行故障自动检测与诊断在研究和实践中都是非常重要的。

目前分析分布式系统根源故障的方法包括基于图的方法、基于专家系统的方法、分析模型、数据驱动方法。

基于图论的故障诊断方法主要包括符号有向图(signeddirectedgraph,sdg)方法和故障树方法。sdg是一种描述系统因果关系的图形化模型,节点表示事件或者变量,有向边表示变量之间的因果关系。发生故障时,根据节点变化间的因果关系,并结合一定的搜索策略判断故障发生的原因。故障树是一种由果到因的逻辑图,它从系统的故障状态出发,逐级进行推理确定故障发生的基本原因、影响程度和发生概率。

基于专家系统的故障诊断方法利用领域专家的实践经验建立知识库,并进行推理和决策过程进行故障诊断。专家知识常用确定性的if-then规则表示。由于专家知识具有不确定性,模糊专家系统引入了模糊隶属度的概念,并利用模糊逻辑进行推理,能够很好地处理专家知识中的不确定性。

基于解析模型的故障诊断方法利用系统精确的数学模型描述系统期望行为,通过对比实际的输入输出量是否一致进行故障诊断,主要包括状态估计方法、参数估计方法、基于等价空间的方法。基于状态估计的方法主要包括滤波器方法和观测器方法,利用假设检验等方法进行故障诊断。基于参数估计的方法认为故障会引起模型参数的变化,并通过检测模型中的参数变化来进行故障诊断。

数据驱动的故障诊断方法通过对系统运行数据进行分析处理进行故障诊断,不需知道系统精确解析模型,主要分为机器学习类方法、多元统计分析类方法等。机器学习类方法是利用系统在正常和各种故障情况下的历史数据训练神经网络或者支持向量机等机器学习算法用于故障诊断。基于多元统计分析的方法是利用多个变量之间的相关性进行故障诊断,主要有pca方法。pca方法将变量的样本矩阵投影到低维空间,反映了过程变量的主要变化,并通过给定的检测指标进行故障诊断。

现有的分布式信息系统故障诊断方法仍存在很大局限性,主要有以下两方面原因:一方面,针对可用性测试失效的分布式系统故障诊断方法不够直观,实际中,由于分布式信息系统越来越复杂,故障点难以全面被检测到,因此很难准确的诊断故障,需要有更加直观的分析和诊断工具;另一方面,现有的故障诊断方法难以解决实时、无监督的故障诊断问题。图论的方法、专家系统的方法和基于数据驱动的方法需要系统结构知识或训练数据,基于解析的方法难以对复杂系统建模,而实际中这些数据或知识难以获得,同时,这些方法也没有利用系统业务可用性测试的信息,而这些信息对于有效故障诊断有重要价值。



技术实现要素:

本发明提供一种分布式系统根源故障定位方法及装置,其目的是利用本发明提供的测试数据构建故障诊断图,根据故障诊断图快速准确地诊断分布式系统故障,有效防止系统失效产生的困扰和经济损失。

本发明的目的是采用下述技术方案实现的:

一种分布式系统根源故障定位方法,其改进之处在于,包括:

获取分布式系统测试数据,并选择所述测试数据中被测服务不可用的测试数据;

利用所述测试数据中被测服务不可用的测试数据构建故障诊断图,并获取所述故障诊断图中的完全子图;

根据所述完全子图进行故障定位。

优选的,所述分布式系统测试数据,包括:测试条件属性及其对应的测试结果属性,所述测试条件属性包括:外部属性及其对应的内部属性,所述外部属性包括:测试地址、运营商和被测服务,所述外部属性对应的内部属性包括:网络设备状态、操作系统状态和应用程序状态,其中,所述外部属性对应的内部属性根据所述外部属性,利用数据流跟踪法获取。

进一步的,所述选择所述测试数据中被测服务不可用的测试数据,包括:

若所述测试数据的测试条件属性对应的测试结果属性的属性值为不可用,则选择该测试数据。

优选的,所述利用所述测试数据中被测服务不可用的测试数据构建故障诊断图,并获取所述故障诊断图中的完全子图,包括:

以所述测试数据中被测服务不可用的测试数据作为节点,若节点间的所述测试数据中被测服务不可用的测试数据中的属性对应的属性值相同,则将节点间该属性对应的属性值连接,获取故障诊断图;

提取所述故障诊断图中节点的单个属性对应的单个属性值间的连接图作为完全子图。

优选的,所述根据所述完全子图进行故障定位,包括:

验证所述完全子图的可靠性,获取满足可靠性要求的完全子图;

根据所述完全子图的节点数进行故障定位。

进一步的,所述验证所述完全子图的可靠性,获取满足可靠性要求的完全子图,包括:

对第k个完全子图进行f检验,按下式确定第k个完全子图的检验值fk:

fk=(ssak/fssak)/(ssek/fssek)

上式中,ssak为第k个完全子图的组内平方和,fssak为ssak的自由度,ssek为第k个完全子图的组间平方和,fssek为ssek的自由度;

若所述第k个完全子图的检验值fk大于f检验值阈值,则所述第k个完全子图满足可靠性要求。

进一步的,按下式确定所述第k个完全子图的组内平方和ssak:

按下式确定所述第k个完全子图的组间平方和ssek:

nk为与第k个完全子图对应的属性的属性值相同的测试数据的个数,为与第k个完全子图对应的属性的属性值相同的测试数据的测试结果的属性值为不可用的占有率,为测试数据中测试结果的属性值为不可用的占有率,为与第k个完全子图对应的属性的属性值不同的测试数据的个数,为与第k个完全子图对应的属性的属性值不同的测试数据的测试结果的属性值为不可用的占有率,xkmi为与第k个完全子图对应的属性的属性值相同的测试数据的测试结果的属性值系数,为与第k个完全子图对应的属性的属性值不同的测试数据的测试结果的属性值系数,测试数据的测试结果的属性值为可用时,其对应的测试数据的测试结果的属性值系数为0,测试数据的测试结果的属性值为不可用时,其对应的测试数据的测试结果的属性值系数为1。

进一步的,所述根据所述完全子图的节点数进行故障定位,包括:

获取满足可靠性要求的完全子图中节点数最大的完全子图c1,并将c1对应的属性的属性值加入故障集合中;

比较满足可靠性要求的完全子图中的第x个完全子图cx的节点与所述c1的节点的重合率,若该重合率大于相关度阈值,则将cx对应的属性的属性值加入所述故障集合中,其中,x∈[1,x],x为满足可靠性要求的完全子图总数;

将所述故障集合中的属性值作为故障原因。

一种分布式系统根源故障定位装置,其改进之处在于,所述装置包括:

获取单元,用于获取分布式系统测试数据,并选择所述测试数据中被测服务不可用的测试数据;

构建单元,用于利用所述测试数据中被测服务不可用的测试数据构建故障诊断图,并获取所述故障诊断图中的完全子图;

故障定位单元,用于根据所述完全子图进行故障定位。

本发明的有益效果:

本发明提供的技术方案,利用本发明提供的测试数据中被测服务不可用的测试数据构建故障诊断图,并获取所述故障诊断图中的完全子图,最终根据所述完全子图进行故障定位,采用多关系图对测试样本进行描述与分析,能够较为直观的表现当前系统中失效记录之间的关联关系,相对于较为常见的加权图,多关系图在故障诊断中可以更好地反映失效节点直接确切的关联关系,通过对过关系聚类进行故障定位,实现了同时将于失效有关的属性和属性值聚类,以及失效记录的聚类,在很多情况下属性值已经能够明确的体现根源故障原因,在剩余的情况下聚类后的结果能够大致定位根源故障的位置;

进一步的,在故障定位过程中,采用f检验对完全子图的可靠性进行判定,过滤掉某些属性的属性值由于取值较少,容易形成较大的完全子图的情形,能够将真正与故障原因相关的完全子图筛选出来。

附图说明

图1是本发明一种分布式系统根源故障定位方法的流程图;

图2是发明一种分布式系统根源故障定位装置的结构示意图。

具体实施方式

下面结合附图对本发明的具体实施方式作详细说明。

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

本发明提供的一种分布式系统根源故障定位方法,如图1所示,包括:

101.获取分布式系统测试数据,并选择所述测试数据中被测服务不可用的测试数据;

102.利用所述测试数据中被测服务不可用的测试数据构建故障诊断图,并获取所述故障诊断图中的完全子图;

103.根据所述完全子图进行故障定位。

其中,所述分布式系统测试数据,包括:测试条件属性及其对应的测试结果属性,所述测试条件属性包括:外部属性及其对应的内部属性,所述外部属性包括:测试地址、运营商和被测服务,所述外部属性对应的内部属性包括:网络设备状态、操作系统状态和应用程序状态,其中,所述外部属性对应的内部属性根据所述外部属性,利用数据流跟踪法获取。

所述测试结果属性为模拟使用分布式系统的被测服务的使用结果,若该被测服务可用,则所述测试结果属性的属性值为可用,若该被测服务不可用,则所述测试结果属性的属性值为不可用。

进一步的,所述步骤101中,选择所述测试数据中被测服务不可用的测试数据的具体过程包括:

若所述测试数据的测试条件属性对应的测试结果属性的属性值为不可用,则选择该测试数据。

例如:获取分布式系统测试数据,包括测试条件属性及其对应的测试结果属性,其中,测试条件属性包括:外部测试数据和内部监测数据,并将数据进行关联。外部测试数据的属性包括测试地址、运营商和被测服务;内部监测数据包括网络设备状态、操作系统状态和应用程序状态;令xi=[xi1,xi2,…,xim]表示完整的可用性测试记录,其中xik表示第i个测试记录的第k个属性值,m表示属性个数;所有测试记录的数据集为x={xi},i=1,…,|x|,其中|x|表示x中的记录数,测试数据集示例如表1所示:

表1测试数据集示例

其中,表1中的数据代表了16条原始测试记录,即|x|=16,每条原始数据有7个测试条件属性,包括:测试地、运营商、被测服务、系统地域、网络设备、服务器和cpu占有率,1个测试结果属性,其属性值为1或0,当被测服务可用时,其属性值为0,当被测服务不可用时,其属性值为1;

获取所述测试数据中被测服务不可用的测试数据之后,需利用所述测试数据中被测服务不可用的测试数据构建故障诊断图,并获取所述故障诊断图中的完全子图,因此,所述步骤102,包括:

以所述测试数据中被测服务不可用的测试数据作为节点,若节点间的所述测试数据中被测服务不可用的测试数据中的属性对应的属性值相同,则将节点间该属性对应的属性值连接,获取故障诊断图;

提取所述故障诊断图中节点的单个属性对应的单个属性值间的连接图作为完全子图。

例如,如表1所示的测试数据中,将该测试数据中被测服务不可用的测试数据作为节点,包括第1、3、4和5条测试数据,其表示4个节点,节点中的第一个属性测试地属性有4个取值,每个取值都形成一个节点数为1的完全子图,对于第二个属性,节点有1个取值,形成一个节点数为4的完全子图,对于第三个属性,节点有2个取值,形成一个节点数为3的完全子图和一个节点数为1的完全子图,对于第四个属性,节点有1个取值,形成一个节点数为4的完全子图,对于第五个属性,节点有1个取值,形成一个节点数为4的完全子图,对于第六个属性,节点有2个取值,形成一个节点数为3的完全子图和一个节点数为1的完全子图,对于第七个属性,节点有3个取值,形成一个节点数为2的完全子图和两个节点数为1的完全子图。因此,该例子中对于持续失效的记录集合实际共有14个完全子图。

进一步的,需根据所述完全子图进行故障定位,因此所述步骤103,包括:

验证所述完全子图的可靠性,获取满足可靠性要求的完全子图;

根据所述完全子图的节点数进行故障定位。

具体的,所述验证所述完全子图的可靠性,获取满足可靠性要求的完全子图,包括:

对第k个完全子图进行f检验,按下式确定第k个完全子图的检验值fk:

fk=(ssak/fssak)/(ssek/fssek)

上式中,ssak为第k个完全子图的组内平方和,fssak为ssak的自由度,ssek为第k个完全子图的组间平方和,fssek为ssek的自由度;

其中,fssek=测试数据总数-fssak-1,fssak=1;

若所述第k个完全子图的检验值fk大于f检验值阈值,则所述第k个完全子图满足可靠性要求。

其中,按下式确定所述第k个完全子图的组内平方和ssak:

按下式确定所述第k个完全子图的组间平方和ssek:

nk为与第k个完全子图对应的属性的属性值相同的测试数据的个数,为与第k个完全子图对应的属性的属性值相同的测试数据的测试结果的属性值为不可用的占有率,为测试数据中测试结果的属性值为不可用的占有率,为与第k个完全子图对应的属性的属性值不同的测试数据的个数,为与第k个完全子图对应的属性的属性值不同的测试数据的测试结果的属性值为不可用的占有率,xkmi为与第k个完全子图对应的属性的属性值相同的测试数据的测试结果的属性值系数,为与第k个完全子图对应的属性的属性值不同的测试数据的测试结果的属性值系数,测试数据的测试结果的属性值为可用时,其对应的测试数据的测试结果的属性值系数为0,测试数据的测试结果的属性值为不可用时,其对应的测试数据的测试结果的属性值系数为1。

例如,如表1所示的测试数据中,原始数据集x中第二个属性值为联通的记录数为nk=100,ssa=2.4067,sse=25.4933,因此f=14.9,而f检验阈值为20,因此不具有显著差异。

判断完全子图可靠性之后,需找出与被测服务不可用最相关的属性和属性值,以及节点构成了若干完全子图;理想情况下,如果顶点失效是由相同的事件引起的,与事件相关的顶点的属性将具有相同的值,因此具有相同属性值的所有顶点将形成一个完全子图;不同的故障形成不同的完全子图,但某些不同属性的完全子图可能是由于相同故障引起的,需要根据子图的相关性进行合并,因此,所述根据所述完全子图的节点数进行故障定位,包括:

获取满足可靠性要求的完全子图中节点数最大的完全子图c1,并将c1对应的属性的属性值加入故障集合中;

例如:表1中的完全子图的节点数由大到小的排序是第二个属性值为联通(大小为4,f检验值为14.9)、第四个属性值为l1(大小为4,f检验值为28.2)、第五个属性值为n11(大小为4,f检验值为119.8)、第三个属性值为x(大小为3,f检验值为3.6),第六个属性值为s11(大小为3,f检验值为55.0),第七个属性值为低(大小为2,f检验值为1.9),其余八个属性值排在最后(大小为1),其中满足可靠性要求的属性和属性值为第四个属性值为l1、第五个属性值为n11、第六个属性值为s11。

比较满足可靠性要求的完全子图中的第x个完全子图cx的节点与所述c1的节点的重合率,若该重合率大于相关度阈值,则将cx对应的属性的属性值加入所述故障集合中,其中,x∈[1,x],x为满足可靠性要求的完全子图总数;

将所述故障集合中的属性值作为故障原因。

例如,表1的例子中检测第一个故障时,初始故障子图h1是第二个属性之为联通构成的完全子图,故障集合d1中只有一个属性d1=[系统地域=l1],比较完全子图的节点数排在第二位的属性和属性值,与h1的重合度,若大于70%,则d1中纳入该属性和属性值,即d1=[系统地域=l1,网络设备=n11],比较排在第三位的属性和属性值,与h1的重合度大于70%,所以d1中纳入该属性和属性值,即d1=[系统地域=l1,网络设备=n11,服务器=s11],没有其他满足可靠性的完全子图,最终d1=[系统地域=l1,网络设备=n11,服务器=s11]。

进一步的,本发明提供的实施例用中还可以包括,排除已定位的故障原因,继续进行故障定位,直到定位出所有故障,具体为:步骤103定位到故障原因后,移除该故障原因的测试记录,在剩余测试记录集合中重复步骤101至步骤103,例如,在表1中去掉满足d1条件的记录,后续检测故障子图,若存在失效记录,则重复步骤101至步骤103获取故障原因集合,直至没有失效记录,故障检测完毕。

本发明还提供一种分布式系统根源故障定位装置,如图2所示,所述装置包括:

获取单元,用于获取分布式系统测试数据,并选择所述测试数据中被测服务不可用的测试数据;

构建单元,用于利用所述测试数据中被测服务不可用的测试数据构建故障诊断图,并获取所述故障诊断图中的完全子图;

故障定位单元,用于根据所述完全子图进行故障定位。

其中,所述分布式系统测试数据,包括:测试条件属性及其对应的测试结果属性,所述测试条件属性包括:外部属性及其对应的内部属性,所述外部属性包括:测试地址、运营商和被测服务,所述外部属性对应的内部属性包括:网络设备状态、操作系统状态和应用程序状态,其中,所述外部属性对应的内部属性根据所述外部属性,利用数据流跟踪法获取。

所述获取单元,包括:

选择模块,用于若所述测试数据的测试条件属性对应的测试结果属性的属性值为不可用,则选择该测试数据。

所述构建单元,包括:

构建模块,用于以所述测试数据中被测服务不可用的测试数据作为节点,若节点间的所述测试数据中被测服务不可用的测试数据中的属性对应的属性值相同,则将节点间该属性对应的属性值连接,获取故障诊断图;

提取模块,用于提取所述故障诊断图中节点的单个属性对应的单个属性值间的连接图作为完全子图。

所述故障定位单元,包括:

获取模块,用于验证所述完全子图的可靠性,获取满足可靠性要求的完全子图;

故障定位模块,用于根据所述完全子图的节点数进行故障定位。

其中,对第k个完全子图进行f检验,按下式确定第k个完全子图的检验值fk:

fk=(ssak/fssak)/(ssek/fssek)

上式中,ssak为第k个完全子图的组内平方和,fssak为ssak的自由度,ssek为第k个完全子图的组间平方和,fssek为ssek的自由度;

若所述第k个完全子图的检验值fk大于f检验值阈值,则所述第k个完全子图满足可靠性要求。

按下式确定所述第k个完全子图的组内平方和ssak:

按下式确定所述第k个完全子图的组间平方和ssek:

nk为与第k个完全子图对应的属性的属性值相同的测试数据的个数,为与第k个完全子图对应的属性的属性值相同的测试数据的测试结果的属性值为不可用的占有率,为测试数据中测试结果的属性值为不可用的占有率,为与第k个完全子图对应的属性的属性值不同的测试数据的个数,为与第k个完全子图对应的属性的属性值不同的测试数据的测试结果的属性值为不可用的占有率,xkmi为与第k个完全子图对应的属性的属性值相同的测试数据的测试结果的属性值系数,为与第k个完全子图对应的属性的属性值不同的测试数据的测试结果的属性值系数,测试数据的测试结果的属性值为可用时,其对应的测试数据的测试结果的属性值系数为0,测试数据的测试结果的属性值为不可用时,其对应的测试数据的测试结果的属性值系数为1。

所述故障定位模块,还用于:

获取满足可靠性要求的完全子图中节点数最大的完全子图c1,并将c1对应的属性的属性值加入故障集合中;

比较满足可靠性要求的完全子图中的第x个完全子图cx的节点与所述c1的节点的重合率,若该重合率大于相关度阈值,则将cx对应的属性的属性值加入所述故障集合中,其中,x∈[1,x],x为满足可靠性要求的完全子图总数;

将所述故障集合中的属性值作为故障原因。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1