一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种对重复出现类型故障的可操作可解释的根因定位方法

2022-06-25 05:45:31 来源:中国专利 TAG:


1.本技术涉及据故障诊断和根因定位技术领域,尤其涉及一种对重复出现类型故障的可操作可解释的根因定位方法和装置。


背景技术:

2.在线服务系统,例如网上银行和搜索引擎等等,在我们的生活中已成为不可或缺的一部分。在线服务由许许多多的组件组成,例如负载均衡器、web服务器、容器、数据库等等。这些组件共同工作、互相调用提供服务,组件之间存在复杂的依赖关系。由于在线服务系统的巨大规模和高复杂度。在线服务系统的故障时不可避免的,这样的故障会导致巨大的经济损失和用户满意度的降低。因此,为了减少故障导致的负面影响,根因定位是很关键的。
3.在实际的在线服务系统中,大多数的故障都是重复类型的。例如超过94%的故障都是有一小部分重复类型的根因的导致的。这样的重复类型故障的例子包括,因为缺少数据库中对应字段的索引导致的高服务响应时间,由于第三方服务不可用导致的服务成功率降低等等。因此,对于重复类型的故障进行定位非常重要。
4.为了对在线服务系统进行故障诊断和根因定位,有多种类型的监控数据持续被采集。其中,指标数据是在每个组件上对其关键性能指标的持续监控,存储为时间序列的形式。相比日志数据,指标数据的类型单一,分析简单,数据量少,而且足以反映组件的异常状态。和调用链数据相比,指标数据能够反映底层性能指标(例如cpu,内存等)。
5.在现有的实践中,对重复类型的故障的根因定位以来有经验的运维人员从经年累月的排障经历中积累的知觉。有经验的运维人员能够从在线服务系统的症状,例如指标的形态,猜测出可能是什么样的故障,并基于此进行进一步的确认。由于组件间复杂的依赖关系,根因可能导致一系列组件都出现问题。运维人员基于他们的经验可以分析这样的关联异常之间的关系,从而找到真正的根因。另一方面,在找到故障的根因之后,运维人员可以从历史上其他相似故障的修复经验中找到参考,更快找到更准确的修复方案并执行修复操作。
6.目前的通过机器学习方法,将故障根因服务定位的问题建模为多分类(每一类是一个可能的根因服务)的问题。采用的数据基于调用链,系统的全局配置,服务的指标等。基于历史故障数据训练一个多分类模型,其中具体的机器学习算法采用随机森林、多层感知机或者k-近邻等。然后当故障发生时,通过训练好的模型给出哪个服务更可能是根因服务。mepfl定位的根因的粒度是根因服务,而且没有对分类结果进行任何解释。
7.目前的通过搜索历史上的相似故障进行间接的根因定位的方法,它只推荐相似历史故障,得到的相似历史故障的根因可能就是当前故障的根因。它将每一个故障建模为一个故障图,故障图的节点是系统中的组件,节点特征是该组件的各种关键指标,边是组件之间的部署关系。
8.针对现有的方法,没有可操作性,现有的根因定位方法定位到的粒度要么太粗(例
如,服务)或者太细(例如,单个指标),都不足以让运维人员从这样的定位结果直接确定如何采取修复操作。没有可解释性,现有的根因定位方法缺乏可解释性,无法让运维人员理解算法是如何给出根因的。这里指的可解释性包含两方面:局部解释,即解释单个故障的定位结果是如何给出的;全局解释,即解释整个定位方法或者模型的逻辑。
9.申请内容
10.本技术旨在至少在一定程度上解决相关技术中的技术问题之一。
11.为此,本技术的目的在于提出一种对重复出现类型故障的可操作可解释的根因定位方法,可以实现可操作和可解释的根因定位,可操作性使得运维人员可以直接从本技术的定位结果得到如何进行修复操作,可解释性使得运维人员可以理解和信任本技术的自动化方法给出的定位结果。
12.本技术的另一个目的在于提出一种对重复出现类型故障的可操作可解释的根因定位装置。
13.为达上述目的,本技术一方面提出了一种对重复出现类型故障的可操作可解释的根因定位方法,包括以下步骤:
14.利用监控系统进行故障监控,基于监控系统监控到的故障触发训练好的根因定位模型;其中,训练好的根因定位模型通过训练好的决策树进行全局解释;根据故障发生时的故障实例对应的指标数据和故障依赖图得到根因故障实例,并对根因故障实例的定位结果进行局部解释;其中,故障依赖图根据故障实例构建。
15.本技术实施例的方法,可以实现可操作和可解释的根因定位,可操作性使得运维人员可以直接从本技术的定位结果得到如何进行修复操作,可解释性使得运维人员可以理解和信任本技术的自动化方法给出的定位结果。
16.另外,根据本技术上述实施例的对重复出现类型故障的可操作可解释的根因定位方法还可以具有以下附加的技术特征:
17.进一步地,在本技术的一个实施例中,利用随机梯度下降法预设的损失函数,并基于历史故障数据对根因定位模型进行训练,得到所述练好的根因定位模型。
18.进一步地,在本技术的一个实施例中,所述根因定位模型包括特征提取器、特征聚合器和分类器三个组件,则,利用所述特征提取器将每个故障实例表示为固定长度的向量;其中,所述向量为实例级特征;利用所述特征聚合器基于所述故障依赖图的结构,把所述每个故障实例的相关故障实例的实例级特征进行聚合以得到聚合特征;利用所述分类器基于所述聚合特征进行打分,以根据所述三个组件对所述根因定位模型进行设计。
19.进一步地,在本技术的一个实施例中,所述利用随机梯度下降法预设的损失函数,包括:
20.采用二值交叉熵bce度量故障t的故障实例v的输出分数s
t
(v)和真实标签r
t
(v)的差距之间的差距:
21.bce(r
t
(v),s
t
(v))=r
t
(v)
·
log(s
t
(v)) (1-r
t
(v))
·
log(1-s
t
(v))
22.使用额外的权重对不同故障实例的bce进行加权平均得到所述预设的损失函数,所述预设的损失函数为ls,则:
[0023][0024]
其中,是训练集,ti表示一个训练集中的故障,nh是训练集的大小,v表示所有的故障实例,
[0025]
进一步地,在本技术的一个实施例中,所述利用局部解释方式解释所述根因故障实例的定位结果,包括:预设第一故障和第二故障两个故障;其中,所述第一故障是待解释的当前故障,所述第二故障是历史故障;对于所述第一故障中的每一个故障实例,比较其聚合特征和所述第二故障中每一个属于相同故障类别的故障实例的聚合特征的距离,并将最小的一个作为该故障实例和所述第二故障的距离;对所述第一故障中所有故障实例到所述第二故障的距离进行加权平均,通过比较所述两个故障之间的距离公式,以解释所述根因故障实例的定位结果。
[0026]
进一步地,在本技术的一个实施例中,预设第一故障t1和第二故障t2,所述两个故障之间的距离公式为:
[0027][0028]
其中,nc(v)表示所有和故障实例v属于同一故障类别的故障实例集合,表示故障t1中故障实例v的聚合特征,表示故障t2中故障实例v

的聚合特征,||
·
||1表示l1范数。
[0029]
进一步地,在本技术的一个实施例中,所述训练好的根因定位模型通过训练好的决策树进行全局解释,包括:利用多种时序曲线特征提取从所述指标数据中提取第一时序特征;利用基于指标重构的特征提取对所述第一时序特征进行选择得到第二时序特征;基于所述第二时序特征训练决策树得到所述训练好的决策树,根据所述训练好的决策树利用所述训练好的根因定位模型对所述故障实例进行根因判断;其中,所述训练好的决策树中的规则作为对所述训练好的根因定位模型的全局解释。
[0030]
进一步地,在本技术的一个实施例中,所述指标重构的特征提取,包括:将所述训练好的根因定位模型的特征提取器和特征聚合器作为自动编码器的编码器部分,并冻结所述编码器部分的参数;以及,构造由反卷积层和全连接层组成的解码器部分;训练所述自动编码器使其重构误差最小;比较所述第一时序特征在原始指标数据和经过自动编码器重构之后的指标数据中的取值,如果差值大于预设数值,则筛去该特征。
[0031]
进一步地,在本技术的一个实施例中,所述多种时序曲线特征提取,包括:均值、标准差、范围计数、最大值、最小值、自相关系数和峰值计数中的多种。
[0032]
为达到上述目的,本技术另一方面提出了一种对重复出现类型故障的可操作可解释的根因定位装置,包括:
[0033]
故障触发模块,用于利用监控系统进行故障监控,基于所述监控系统监控到的故障触发训练好的根因定位模型;其中,所述训练好的根因定位模型通过训练好的决策树进行全局解释;根因定位模块,用于根据所述故障发生时的故障实例对应的指标数据和故障
依赖图得到根因故障实例,并对所述根因故障实例的定位结果进行局部解释;其中,所述故障依赖图根据所述故障实例构建。
[0034]
本技术实施例的对重复出现类型故障的可操作可解释的根因定位装置,可以实现可操作和可解释的根因定位,可操作性使得运维人员可以直接从本技术的定位结果得到如何进行修复操作,可解释性使得运维人员可以理解和信任本技术的自动化方法给出的定位结果。
[0035]
本技术的有益效果为:
[0036]
1)基于本技术的根因定位框架,可以实现可操作和可解释的根因定位,可操作性使得运维人员可以直接从定位结果得到如何进行修复操作,可解释性使得运维人员可以理解和信任自动化方法给出的定位结果。
[0037]
2)本技术的模型对任意的故障类别的故障实例可以提供统一的编码,从而使得这些故障实例可以被统一地进一步分析;可以考虑故障实例之间的依赖关系,从而在故障传播的场景下依然准确定位到根因;可以泛化到没有见过的故障实例上
[0038]
3)可解释性方法对故障定位模型提供了局部解释和全局解释。一方面解释了每个故障的定位结果是怎么给出的,另一方面解释的整个模型从历史数据中学到了什么,从而让运维人员能够理解和相信本技术的定位结果。
[0039]
本技术附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本技术的实践了解到。
附图说明
[0040]
本技术上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
[0041]
图1为根据本技术实施例的对重复出现类型故障的可操作可解释的根因定位方法流程图;
[0042]
图2为根据本技术实施例的的根因定位整体架构图;
[0043]
图3为根据本技术实施例的根因定位模型的结构示意图;
[0044]
图4为根据本技术实施例的对重复出现类型故障的可操作可解释的根因定位装置的结构示意图。
具体实施方式
[0045]
需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本技术。
[0046]
为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本技术保护的范围。
[0047]
下面参照附图描述根据本技术实施例提出的对重复出现类型故障的可操作可解释的根因定位方法及装置,首先将参照附图描述根据本技术实施例提出的对重复出现类型
故障的可操作可解释的根因定位方法。
[0048]
图1是本技术一个实施例的对重复出现类型故障的可操作可解释的根因定位方法的流程图。
[0049]
如图1所示,该方法包括但不限于如下步骤:
[0050]
步骤s1,利用监控系统进行故障监控,基于监控系统监控到的故障触发训练好的根因定位模型;其中,训练好的根因定位模型通过训练好的决策树进行全局解释;
[0051]
步骤s2,根据故障发生时的故障实例对应的指标数据和故障依赖图得到根因故障实例,并对根因故障实例的定位结果进行局部解释;其中,故障依赖图根据故障实例构建。
[0052]
下面结合附图对本技术实施例做进一步阐述。
[0053]
图2为本技术的根因定位整体架构图,根据本技术的架构可以实现可操作和可解释的根因定位。可操作性使得运维人员可以直接从本技术的定位结果得到如何进行修复操作,可解释性使得运维人员可以理解和信任本技术的自动化方法给出的定位结果。
[0054]
首先,对本技术的定位的粒度进行阐述,可以理解的是,为了实现可操作性,本技术定位的粒度是故障实例。故障实例是一个组件上的一组指标。例如,服务service1上的黄金指标(交易量,成功率,响应率,响应时间)是一个故障实例;容器container1上的cpu相关指标(例如,cpu使用率,wio等)是一个故障实例。对于同类组件上的同类指标组成的一组故障实例,称其为一个故障类别。例如容器上的cpu相关指标构成一个故障类别,任何一个具体容器上的这些指标是这种故障类别中的一个故障实例。
[0055]
当运维人员确定一个组件上的一组指标是根因的时候,运维人员足以确定该组件发生了什么问题,以及该进一步采取什么修复操作。因此,就将这样的组件和指标的组合定义为故障实例和故障类别。当运维人员定位到这样定义的一个故障实例是一个故障的根因时,他们就能确定该采取什么修复操作。因此,通过把定位粒度设置为故障实例,本技术的定位框架就具有了可操作性。
[0056]
和现有的方法不同,故障实例比组件和单个指标的粒度更细,因为本技术不是仅定位该故障实例对应的组件和这些指标,而是确定了他们的组合构成根因。不同的故障类别中对应的指标种类的数目和指标的模式都是不同的。
[0057]
为了建模在线服务系统中的复杂依赖关系,将一个系统中所有的故障实例组织成一个故障依赖图。故障依赖图上的节点是故障实例,边代表故障实例之间的相关关系,故障依赖图是一个无向图。
[0058]
当两个故障实例对应的组件之间有调用关系,或者存在部署关系,或者指标之间存在因果关系,那么在故障依赖图上这两个故障实例之间就有边。例如服务a调用服务b,那么服务a的黄金指标组成的实例和服务b的黄金指标组成的实例就有边。如果服务a部署在容器c上,那么服务a的黄金指标组成的实例和容器c的各种指标组成的故障实例都有边。
[0059]
再对本技术的定位模型结构设计进行阐述,本技术的定位模型是一个深度学习模型,它的输入是一个故障发生时的所有故障实例对应的指标,和故障依赖图。它的输出是对每一个故障实例的打分。打分的取值范围是[0,1],越大代表一个故障实例越可能是根因。如图3所示,图3为本技术的根因定位模型的结构。
[0060]
可以理解的是,对于任何一个故障实例v,它的输入a
()
是该故障实例上的mv个指标在故障发生时的最近w个时间点的取值。即a
(v)
是一个形状为w
×mv
的矩阵。在实践中一般取
w=20。整个模型的输入就是所有故障实例对应的矩阵a,以及故障依赖图。
[0061]
本技术的定位模型包含三个组件,特征提取器,特征聚合器和分类器。特征提取器负责将每个故障实例表示为一个固定长度的向量,称其为实例级特征。特征聚合器负责基于故障依赖图的结构,把每个故障实例的相关故障实例的实例级特征聚合到一起,形成聚合特征。最后分类器基于每个故障实例的聚合特征进行打分。因为聚合特征已经包含了故障依赖图和相关实例的特征,所以分类器只基于单个实例的聚合特征也可以考虑故障在实例之间的传播关系。
[0062]
作为一种示例,特征提取器是一个由三层组件组成的神经网络gru(gated recurrent unit)层,卷积层和全连接层。gru是一种循环神经网络,通过它从a
(v)
中提取指标的时序信息。然后通过卷积层和全连接层,能够建模不同时间点和不同指标之间的关联。
[0063]
可以理解的是,因为每个故障类别中的故障实例包含的指标数量是不同的,所以对于每一个故障类别,分别使用一个故障提取器模块。这些故障提取器的输入维度(对应指标个数)是不同的,但是其他所有配置,包括输出维度,都是相同的。因此保证对于任意的故障实例,通过故障提取器都得到相同维度的实例级特征。记故障实例v对应的实例级特征为f
(v)

[0064]
作为一种示例,特征聚合器采用一个多头多层的图注意力网络(graph attention network,gat)。对于每一个gat,它首先将每一个故障实例的实例级特征通过神经网络映射到一个新的空间上,然后计算每一对在故障依赖图上相连的故障实例之前的权重,最后将每一个故障实例在故障依赖图上的邻居的映射后的特征进行加权平均,得到该故障实例的聚合特征。记故障实例v对应的聚合特征为为了提高特征聚合器的模型能力,并行堆叠多个gat(多头gat),然后将其输出进行拼接作为每个故障实例的聚合特征。另一方面,串行堆叠多层多头gat,即将上一层多头gat的输出当作下一层的输入,以建模超过一跳的依赖关系.
[0065]
作为一种示例,分类器采用一个两层的全连接网络。最后的输出层使用sigmod函数以保证输出的分数属于[0,1]。对于一个故障实例v,记其分类器输出为s(v)∈[0,1]。
[0066]
对本技术模型的训练和定位进行详细阐述,本技术可以分为离线训练和在线定位部分两部分。
[0067]
在离线训练部分,周期性地(例如,每周,每月)基于历史故障数据训练提出的根因定位模型,被训练好的定位模型将通过全局解释方法进行解释,展示给运维人员训练好的定位模型学到了什么。
[0068]
在在线定位部分,当有故障发生时,训练好的定位模型被触发。触发之后,训练好的根因定位模型基于当前的指标数据和故障依赖图,给出根因故障实例,并且同时由局部解释方法给出定位结果的解释。
[0069]
作为一种示例,本技术模型通过训练神经网络常用的随机梯度下降法最小化损失函数的方法进行训练。但是为了应用随机梯度下降法,一个关键点是如何设计相应的损失函数。
[0070]
本技术的损失函数核心思想是度量每一个故障(记为t)的每一个故障实例v的输出分数s
t
(v)和真实标签r
t
(v)的差距。如果v是t的根因故障实例,那么r
t
(v)=1,否则r
t
(v)=0。
[0071]
首先采用二值交叉熵(binary cross-entropy,bce)度量每一对之间的差距:
[0072]
bce(r
t
(v),s
t
(v))=r
t
(v)
·
log(s
t
(v)) (1-r
t
(v))
·
log(1-s
t
(v))
[0073]
然后,因为对于每一个故障,根因故障实例和非根因故障实例的个数差别很大,为了平衡,使用额外的权重对不同故障实例的bce进行加权平均以得到最后的损失函数。
[0074]
记损失函数为ls,则
[0075][0076]
其中,是训练集,ti表示一个训练集中的故障,nh是训练集的大小,v表示所有的故障实例,
[0077]
作为一种示例,本技术通过寻找相似的历史故障来解释当前故障模型是如何定位的。为此提出一个比较两个故障之间的距离的方法。
[0078]
给定两个故障t1和t2,其中t1是待解释的当前故障,t2是一个历史故障。对于t1中的每一个故障实例,比较它的聚合特征和t2中每一个属于相同故障类别的故障实例的聚合特征的距离,并将最小的一个作为该故障实例和t2的距离。然后对t1中所有故障实例到t2的距离进行加权平均,权重是该故障实例对应的模型分数。以上距离计算方法可以形式化为:
[0079][0080]
其中,nc(v)表示所有和v属于同一故障类别的故障实例集合,表示故障t1中故障实例v的聚合特征,表示故障t2中故障实例v

的聚合特征,||
·
||1表示l1范数。
[0081]
因此,对于一个待解释的当前故障t1,通过函数d计算t1和每一个历史故障的距离,并找到距离最小的历史故障,作为相似历史故障。
[0082]
进一步地,通过训练一些能够模仿神经网络输出的决策树来对训练好的模型进行全局解释。决策树是一种基于规则的可解释的机器学习模型,通过决策树可以看到训练好的模型可能学到了什么根因定位规则。
[0083]
为了训练决策树,首先需要从指标中提取时序特征。选择了以下若干种经典的时序曲线特征提取方法,包括均值,标准差,范围计数,最大值,最小值,自相关系,峰值计数等。
[0084]
由于指标中提取的时序特征数目非常得多,严重影响了决策树训练的效率和准确率。所以希望能够从中选择出训练好的定位模型可能会关注的特征。为此,设计了一个基于指标重构的特征提取方法。首先,将训练好的模型的特征提取器和特征聚合器拿出来,作为一个自动编码器(autoencoder)的编码器部分,并将其参数冻结。然后,构造一个由deconvolution层和全连接层组成的解码器部分。训练这个自动编码器使得其重构误差最小,然后比较每个特征在原始指标和经过自动编码器重构之后的指标中的取值,如果差别比较大,就筛去该特征。
[0085]
之后基于选择过的特征训练决策树。决策树的输入是一个故障实例的选择过的指标的时序特征。训练目标输出是训练好的定位模型对该故障实例是否是根因的判断。本申
请将训练好的决策树中的规则作为对训练好的定位模型的全局解释。
[0086]
通过本技术实施例的本技术实施例的对重复出现类型故障的可操作可解释的根因定位方法,能够实现可操作和可解释性的根因定,可直接根据定位结果得到如何进行修复操作,可精确定位结果。
[0087]
为了实现上述实施例,如图4所示,本实施例中还提供了一种对重复出现类型故障的可操作可解释的根因定位装置10,该装置10包括:规则学习模块100和根因解释模块200。
[0088]
故障触发模块100,用于利用监控系统进行故障监控,基于监控系统监控到的故障触发训练好的根因定位模型;其中,训练好的根因定位模型通过训练好的决策树进行全局解释;
[0089]
根因定位模块200,用于根据故障发生时的故障实例对应的指标数据和故障依赖图得到根因故障实例,并对根因故障实例的定位结果进行局部解释;其中,故障依赖图根据故障实例构建。
[0090]
通过本技术实施例的本技术实施例的对重复出现类型故障的可操作可解释的根因定位装置,能够实现可操作和可解释性的根因定,可直接根据定位结果得到如何进行修复操作,可精确定位结果。
[0091]
需要说明的是,前述对重复出现类型故障的可操作可解释的根因定位方法实施例的解释说明也适用于该实施例的对重复出现类型故障的可操作可解释的根因定位装置,此处不再赘述。
[0092]
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本技术的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
[0093]
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本技术的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
[0094]
尽管上面已经示出和描述了本技术的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本技术的限制,本领域的普通技术人员在本技术的范围内可以对上述实施例进行变化、修改、替换和变型。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献