一种基于知识图谱技术的分布式系统故障根因溯源方法

文档序号:26590169发布日期:2021-09-10 20:39阅读:381来源:国知局
一种基于知识图谱技术的分布式系统故障根因溯源方法

1.本发明属于知识图谱领域,具体涉及一种基于知识图谱技术的分布式系统故障根因溯源方法。


背景技术:

2.随着虚拟化技术的快速发展,分布式系统越来越庞大且复杂。由于分布式系统的网络拓扑结构复杂、故障修复时间紧迫、高水平分布式系统运维人员稀缺等问题,当系统出现故障时,运维人员很难在短时间内找到根本原因,系统将处于不稳定状态。及时找出大型分布式系统故障的根因,保证系统的安全稳定运行是一个亟待解决的问题。近年来,越来越多的研究者开始关注这些问题,基于依赖图的方法和基于因果图的方法在应对复杂系统故障根因分析问题上取得了一些不错的成果。但是这些方法均存在两点局限性:1、它们尚未研究如何利用历史数据中隐藏的显式知识来指导当前的根因分析;2、它们无法完整地解释出事件层次的故障触发路径。
3.故障的传播路径蕴含着很多故障信息,传播路径上不同的设备和不同的传播顺序会导致不同的故障。而知识图谱是结构化的语义知识库,可以用来保存故障传播路径这种结构有限制的有向无环图。将故障传播路径这种显示知识沉淀为故障知识图谱,然后引入故障根因分析不仅可以提高根因分析精确率,还可以帮助运维人员了解故障传播过程,从而针对性地修复故障。
4.基于现有方法的局限性,本发明针对分布式系统中的故障为每类故障构建了故障知识图谱,提出了一种基于知识图谱技术的故障根因溯源方法。


技术实现要素:

5.为解决上述问题,本发明公开了一种基于知识图谱技术的分布式系统故障根因溯源方法,该方法避免了大量重复的人工异常排查和故障诊断的工作,大大减少故障根因溯源时间,能够自动、频繁、高效地对分布式系统中的故障进行故障溯源,在保证了较小的故障溯源耗时的同时,也保证了故障溯源的质量。
6.本发明以分布式系统历史故障数据为起点,从历史metric数据和日志数据中生成事件。然后使用事件的特征训练关系分类器,利用关系分类器挖掘历史事件之间的关系,构建历史故障传播图。接着对相同故障的历史故障传播图抽取相似结构,构建故障知识图谱。当分布式系统发生故障时,收集实时故障数据,构建实时故障传播图,通过计算实时故障传播图与故障知识图谱之间的相似度,得到与实时故障传播图最相似的故障知识图谱,从而根据故障知识图谱标志的故障根因判断实时故障的根因。
7.为达到上述目的,本发明的技术方案如下:
8.一种基于知识图谱技术的分布式系统故障根因溯源方法,包括如下步骤:
9.1)收集分布式系统历史故障数据,使用异常检测算法和模板方法生成事件;
10.2)抽取事件的特征来训练关系分类器,然后利用关系分类器挖掘历史事件之间的
关系,构建历史故障传播图;
11.3)对相同故障的故障传播图抽取相似结构,构建故障知识图谱,一个故障知识图谱标志着一种故障及其传播路径和根因;
12.4)收集分布式系统实时故障数据,通过步骤2)的方法构建实时故障传播图;
13.5)计算实时故障传播图与故障知识图谱之间的相似度,得到与实时故障传播图最相似的故障知识图谱,从而根据故障知识图谱标志的故障根因判断实时故障的根因。
14.本发明的基于知识图谱技术的分布式系统故障根因溯源方法中,上述步骤中运维事件、抽象运维事件、故障传播图、故障知识图谱按照如下方式定义:
15.定义1:运维事件。运维事件e=(e,t,l),其中e∈ε是事件类型,ε={e1,e2,

,e
m
}是 m个事件类型的有限集合,t表示该运维事件的时间戳,l表示此事件发生的位置]。
16.定义2:抽象运维事件。抽象运维事件e

=(e,l),其中e∈ε是事件类型,ε={e1,e2,

,e
m
}是m个事件类型的有限集合,而l∈γ是地点类型,γ={l1,l2,

,l
n
}是n 个地点类型的有限集合。
17.定义3:故障传播图(fault propagation graph,fpg)。故障传播图fpg是三元组 (e1,r,e2)的集合,其中e1和e2是事件,r是事件e1和e2之间的关系。r是顺序关系或者因果关系。
18.定义4:故障知识图谱(fault knowledge graph,fkg)。故障知识图谱fkg是三元组 (e1′
,r,e2′
)的集合,其中e1′
和e2′
是抽象事件,r是抽象事件e1′
和e2′
之间的关系。r是顺序关系或者因果关系。
19.本发明的基于知识图谱技术的分布式系统故障根因溯源方法中,所述步骤1)中,按照如下方式生成事件(生成方式如下图):
[0020]1‑
a)对系统中的metric数据(时序数据,如cpu使用率曲线),使用异常检测算法检测出metric曲线中的异常点,然后通过模板生成事件;
[0021]1‑
b)对系统中的日志数据,使用聚类算法得到主要日志类型,然后通过模板生成事件。
[0022]
本发明的基于知识图谱技术的分布式系统故障根因溯源方法中,所述步骤2)中根据以下特征训练关系分类器:
[0023]2‑
1)皮尔逊相关系数:两个事件之间的皮尔逊相关系数越高,那么这两个事件越相关,越有可能是因果关系;
[0024]2‑
2)事件共现频率:两个事件在一起出现的频率越高,越有可能有因果关系;
[0025]2‑
3)事件发生位置间的距离:事件发生的位置越近,越可能是因果关系;
[0026]2‑
4)事件发生时间差:事件发生时间越近,越可能是因果关系;
[0027]2‑
5)事件关键性:事件的关键性是指事件对某一故障的重要程度。两个事件的关键性越高,关键性相差越小,越有可能是因果关系;
[0028]2‑
6)事件周期性:周期性出现的事件很大可能是白噪声。这种周期性出现的事件不论故障发生与否都会周期性出现。所以事件周期性越高,它与其他节点的因果关系越弱。
[0029]
本发明的基于知识图谱技术的分布式系统故障根因溯源方法中,所述步骤2)中,按照如下方式生成故障传播图:
[0030]2‑
a)使用事件特征训练关系分类器;
[0031]2‑
b)使用关系分类器判断事件之间的关系;
[0032]2‑
c)将事件作为节点,事件与事件间的关系作为边,构建故障传播图。
[0033]
本发明的基于知识图谱技术的分布式系统故障根因溯源方法中,所述步骤3)中,按照如下方式生成故障知识图谱:
[0034]3‑
a)收集相同故障的故障传播图;
[0035]3‑
b)使用取交集的方法获取相同故障的故障传播图的相似结构,得到故障知识图谱;
[0036]3‑
c)通过辅助标注算法,对标注故障知识图谱进行标注,标注故障根因及其故障传播路径。
[0037]
本发明的基于知识图谱技术的分布式系统故障根因溯源方法中,所述步骤5)中,按照如下方式进行故障根因溯源:
[0038]5‑
a)使用关系图卷积神经网络(rgcn)抽取故障传播图和故障知识图谱的特征,从而计算实时故障传播图与故障知识图谱之间的相似度;首先通过嵌入层将线上故障传播图和故障知识图谱嵌入到向量空间中,然后通过关系图卷积神经网络抽取图形特征,接着通过池化层后进行向量拼接,最后输入多层感知机得到图相似度。
[0039]5‑
b)找到与实时故障传播图最相似的故障知识图谱;
[0040]5‑
c)根据故障知识图谱标注的故障根因事件类型得到实时故障的根因事件类型;
[0041]5‑
d)通过以下公式将实时故障的根因事件类型,对应到具体的根因事件。其中s
root
是具体根因事件,s是根据此根因事件类型统计实时数据中所有为该事件类型的事件集合。
[0042]
n
t
(s)函数返回事件s按s与f发生时间差顺序在集合s中的排名,n
d
(s)函数返回事件s按s与f 发生设备距离顺序在集合s中的排名,w1,w2分别为两个超参数权重。
[0043]
s
root
=argmin
s∈s
(w1*n
t
(s)+w2*n
d
(s))
[0044][0045]
本发明的有益效果是:
[0046]
相比于目前大多故障根因溯源方法,本发明更精准的完成了分布式系统的故障根因溯源工作。现有方法忽略了历史数据中的显式知识或模式,并且无法完整地解释出事件层次的故障触发路径。本发明通过构建故障知识图谱保存了历史数据中的显式知识,记录了完整的事件层次故障触发路径,可以更精准的找到分布式系统故障的根本原因。并且由于保存了故障触发路径,运维人员可以更清楚地了解故障传播过程,从而有针对性的修复故障,保证系统稳定安全。
[0047]
经过实验分析证明,利用本发明提出的基于知识图谱技术的分布式系统故障根因溯源方法,可以完成分布式系统中的根因溯源工作。在精确率、召回率和f1值上,本发明都表现出较好的效果。
附图说明
[0048]
图1是本发明的整体框架示意图;
[0049]
图2是本发明中故障根因溯源方法示意图。图3是本发明中事件生成及模板构建示意图;
图4是本发明中故障知识图谱构建示意图;图5是本发明中图相似度计算模型示意图。
具体实施方式
[0050]
下面结合附图和具体实施方式,进一步阐明本发明,应理解下述具体实施方式仅用于说明本发明而不用于限制本发明的范围。
[0051]
本发明是基于知识图谱的分布式系统根因溯源方法,包括以下5个步骤:
[0052]
步骤1):以收集大型分布式系统kubernetes的历史故障数据为起点,从这些历史故障数据中生成事件。这个过程中发现的事件将会用于之后的故障传播图构建,详细步骤如下:
[0053]
(1)从日志数据中生成事件;
[0054]
对于日志数据,一方面使用聚类算法在日志中发现通用模板,然后将新发现的模板添加到模板库中。另一方面会使用模板库中的模板匹配日志生成相应事件,如图3所示。
[0055]
(2)从metric数据中生成事件。
[0056]
对于metric数据,会使用异常检测算法检测到异常点,比如某些指标开始很平滑,然后经过某个点后突然抖动,那么这个转折点就是异常点,异常点一般是由于系统中的异常产生的。找到异常点后,经过模板匹配可以得到异常事件。假设上面的例子中的指标是cpu 使用率,如果开始平滑,然后突然抖动突增,那么这个点是异常点,根据模板可以得出这个异常点事件类型是cpu使用率突增。下面就是一个具体事件的实例。
[0057]
{
[0058]
时间:1576078184(时间戳)
[0059]
地点:container

6b6fc4869d
[0060]
事件类型:container memory 100%
[0061]
}
[0062]
事件类型主要分为正常事件、异常事件和故障事件。正常事件是指系统内组件进行一些成功操作产生的事件,注意正常事件并不是不能引发故障,比如服务器重启事件,虽然此事件是服务器正常重启产生的事件,但是如果在此服务器重启时,其他服务器对其访问,则会产生访问失败事件,可能会引发故障。异常事件是指系统组件进行一些失败的操作产生的事件,或者运维人员使用异常检测算法检测到的系统异于常态的事件,但此事件发生时组件仍可正常运行。故障事件是指描述组件故障的事件,故障事件发生时组件已无法正常运行。再往下可以细分为硬件故障和软件故障。具体运维事件类型划分及其实例下表格。
[0063][0064]
步骤2):抽取事件的特征来训练关系分类器,然后利用关系分类器挖掘历史事件之间的关系,构建历史故障传播图,详细步骤如下:
[0065]
(1)训练关系分类器;
[0066]
使用步骤1)中生成的事件,抽取事件的特征,以事件之间的关系为label值,构建训练数据集。针对训练数据,使用机器学习方法,建立分类模型,作为关系分类器。
[0067]
本实施例中,从分布式系统历史故障数据中生成了数万事件,并从中抽取了如下特征:
[0068]
特征1:皮尔逊相关系数:两个事件之间的皮尔逊相关系数越高,那么这两个事件越相关,越有可能是因果关系;
[0069]
特征2:事件共现频率:两个事件在一起出现的频率越高,越有可能有因果关系;
[0070]
特征3:事件发生位置间的距离:事件发生的位置越近,越可能是因果关系;
[0071]
特征4:事件发生时间差:事件发生时间越近,越可能是因果关系;
[0072]
特征5:事件关键性:事件的关键性是指事件对某一故障的重要程度。两个事件的关键性越高,关键性相差越小,越有可能是因果关系;
[0073]
特征6:事件周期性:周期性出现的事件很大可能是白噪声。这种周期性出现的事件不论故障发生与否都会周期性出现。所以事件周期性越高,它与其他节点的因果关系越弱。
[0074]
本实施例中,通过以下方法测试特征工程的有效性:
[0075]
把训练样本中的label值,换成分类类别:具体的,两个事件为因果关系,y(e)>0,作为正例;两个事件为顺序关系,y(e)=0,作为反例。然后计算卡方值(χ2)和信息增益了(ig:information gain)。卡方值,可以用来判断特征于类别标签之间的相关性,值越小说明相关性越低,特征越没用。信息增益,表示得知特征x的信息而使得类别标签的信息不确定度减少的程度。特征越有用,信息增益值越大。本实施例的测试结果符合预期设想。
[0076]
以机器学习中分类模型作为预测模型,本实施例中的预测器分别使用了svm、xgboost、随机森林、逻辑回归等经典机器学习模型作为分类器的分类模型,并且实验表明svm关系分类效果最好。
[0077]
(2)构建历史故障传播图。
[0078]
利用关系分类器挖掘历史事件之间的关系,将事件作为节点,事件与事件间的关
系作为边,构建故障传播图。
[0079]
步骤3):对相同故障的故障传播图抽取相似结构,构建故障知识图谱,详细步骤如下:
[0080]
(1)收集相同故障的故障传播图;
[0081]
大型分布式系统中会经常发生相同的故障。本实施例中,共收集27种、973次故障来构建故障传播图,除去某些故障数据丢失问题,实际共构建27种、967张故障传播图。
[0082]
(2)构建故障知识图谱;
[0083]
利用967张故障传播图构建故障知识图谱。本实施例使用取交集的方法获取相同故障的故障传播图的相似结构,共得到27张故障知识图谱。图4是此过程的示意图,首先使用故障传播图构建方法构建出这n次故障的故障传播图,组合器会忽略故障传播图中事件节点具体的时间和地点,找出所有故障传播图中共有的结构,进行故障知识的沉淀,将共有的结构抽象化生成故障a的故障知识图谱。
[0084]
(3)对故障知识图谱进行标注。
[0085]
得到故障知识图谱后需要人工标注每张故障知识图的根因事件,由于直接进行人工标注比较耗时,本实施例使用辅助根因标注算法辅助专家进行根因标注。通过辅助标注算法,对标注故障知识图谱进行标注,标注故障根因及其故障传播路径。该算法采用深度优先遍历,每遍历到一个节点,都要判断这个节点可不可能是根因节点。对于每个节点,如果该节点是根节点,或者该节点和前一个节点是因果关系并且和后边某个节点是顺序关系,那么它可能是根因节点,需要对他进行人工标注。
[0086]
步骤4):收集分布式系统实时故障数据,通过步骤2)的方法构建实时故障传播图;
[0087]
步骤5):计算实时故障传播图与故障知识图谱之间的相似度,得到与实时故障传播图最相似的故障知识图谱,如图5所示,从而根据故障知识图谱标志的故障根因判断实时故障的根因。
[0088]
本实施例使用关系图卷积神经网络抽取故障传播图和故障知识图谱的特征,从而计算实时故障传播图与故障知识图谱之间的相似度,找出与实时故障传播图最相似的故障知识图谱。此实时故障传播图和故障知识图谱在事件之间具有相同的逻辑关系,因此它们应该具有最高的相似性,所以他们更可能是相同的故障,具有相似的根因。所以选取此故障知识图谱标注的根因事件类型作为此次故障的根因事件类型。
[0089]
由于此处返回的是根因事件类型,需要对应到具体的根因事件。通过以下公式将实时故障的根因事件类型,对应到具体的根因事件。其中s
root
是具体根因事件,s是根据此根因事件类型统计实时数据中所有为该事件类型的事件集合。n
t
(s)函数返回事件s按s与f发生时间差顺序在集合s中的排名,n
d
(s)函数返回事件s按s与f发生设备距离顺序在集合s中的排名,w1,w2分别为两个超参数权重。
[0090][0091]
本实施例最终返回top3的根因事件作为故障根因溯源结果。并使用了如下指标进行评估:
[0092]
precision@n:返回的topn个根因事件,实际为此次故障根因的比例。
[0093]
recall@n:实际故障的根因事件,多少被排到了前n个。
[0094]
f1@n:基于precision和recall的调和平均数,更加重视较小值。
[0095]
auc:precision

recall曲线下面的面积,较大的auc代表了较好的效果。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1