基于知识图谱与案例推理的微服务故障诊断方法及系统
未命名
07-27
阅读:132
评论:0
1.本发明属于计算机技术领域,特别涉及一种微服务异常检测与故障诊断方法及系统。
背景技术:
2.随着云原生技术的繁荣发展,微服务架构被广泛应用于服务的自动化部署、调度与管理。然而微服务架构通过服务解耦使得微服务数量显著增长,这对微服务的故障诊断带来了很大的挑战。为了能在海量的微服务中快速定位到故障实例、诊断故障原因、从而快速恢复系统、减少损失,现代微服务系统亟需一种自动且高效的故障诊断方法。
3.可观测性是微服务架构的重要特性之一,其提供了丰富的观测数据用以描述微服务系统当前的运行状态,如指标、日志、调用链数据等,此外运维人员还可以通过自定义的指令主动获取所需的系统信息。从所使用数据来说,现有的方法可以分为如下几类:
4.(1)日志数据异常检测。这类方法通过提取日志模板、检测日志变量与模板序列所存在的异常,从而达到发现异常的效果。
5.(2)指标数据异常检测。这类方法从时间序列异常检测的角度出发,旨在发现指标数据中存在的异常点。
6.(3)调用链异常检测。这类方法通过发现微服务间的调用时延异常,定位故障服务。
7.由于同一种微服务可能部署到不同的物理机上,且不同的微服务之间通过网络通讯进行互相调用,因此微服务系统往往构成了复杂的拓扑关系。为了能有效利用这种拓扑关系,现有的方法大多使用图方法来建模微服务系统,包括:物理拓扑图,将微服务实例视作图节点,实例间的网络连接视作图关系,从而构建出物理拓扑图;逻辑拓扑图,将微服务系统中可能发生的各类事件视作图节点,事件发生的因果关系视作图关系,从而构建出逻辑拓扑图。
8.微服务的故障诊断指利用一种或几种观测数据,指出发生故障的微服务系统中可能的故障原因。现有的方法可以分为有监督模型方法和无监督模型方法。有监督模型方法从大量含有故障标注的数据中进行学习并训练故障诊断模型,而无监督模型方法无需大量故障标注数据,它们往往依赖先验知识构建如概率图等模型从而实现故障诊断。
9.现有的微服务故障诊断方法主要存在以下三个问题:
10.(1)多源异构数据融合不足:微服务观测数据通过不同的形式展现,如时间序列数据、文本数据等。不同的观测数据从不同的角度刻画了微服务系统的运行状态。然而现有的方法大多仅使用一种或两种数据来进行故障诊断,数据的使用限制导致现有方法很难全面地检测不同故障。
11.(2)微服务图关系单一:尽管现有方法使用图方法来构建微服务之间的关系,但是仅使用微服务的物理拓扑难以说明微服务在运行过程中的状态以及所触发的事件;仅使用逻辑拓扑难以描述微服务的部署位置以及调用关系。现有方法缺少对微服务之间的物理与
逻辑拓扑关系的同时建模,因而故障诊断效果准确率较低。
12.(3)依赖大量的历史数据:有监督的故障诊断方法通常需要大量的数据来训练模型,现实中故障数据比较罕见,难以有效训练模型;无监督的模型对故障数据有较强的假设,如先验的故障概率等,但是实际应用中随着服务部署的改变、故障的修复等,这些先验假设很容易失效从而导致故障检测效果下降。
技术实现要素:
13.针对上述问题,本发明提出一种基于知识图谱与案例推理的微服务故障诊断方法,包括:根据微服务系统的物理拓扑和逻辑拓扑,构建该微服务系统的知识图谱;获取该微服务系统的故障案例库的已知案例,将该已知案例发生的拓扑关系和序列关系形成该已知案例的已知故障指纹,并嵌入该知识图谱;通过该微服务系统的异构可观测性数据进行异常检测,将异常发生的拓扑关系和序列关系构建为该异常的现网故障指纹;将该现网故障指纹基于该知识图谱进行相似性检索,获取多个相似故障案例,从该相似故障案例中选取与该异常具有最高相似度的故障案例作为参考案例推送给该微服务系统的运维人员。
14.本发明所述的微服务故障诊断方法,其中将检测到的异常(t,a)在时间维度进行dbscan聚类,得到c1,c2,...,cm=dbscan([t1,t2,...,ti]),以每个异常在时间维度所属的类别c作为现网故障指纹中的时序特征,a表示该异常对应的异常事件,t表示a发生的时间。
[0015]
本发明所述的微服务故障诊断方法,其中通过获取该现网故障指纹f'与该已知故障指纹f的相似度sim(f',f),进行相似性检索,
[0016][0017]
w(f)为异常系数,w
rel
(f)为相关性系数,(f)为相关性系数,w
freq
(f)为权重因子,c
l
(f)为异常项列表,cs(f)为异常项交集,f为f的异常项。
[0018]
本发明所述的微服务故障诊断方法,还包括:将该异常及其对应的参考案例,以及推荐解决方案生成参考报告,推送给该运维人员;并在该运维人员对该参考报告进行修正后,添加至该故障案例库。
[0019]
本发明还提出一种基于知识图谱与案例推理的微服务故障诊断系统,包括:知识图谱搭建模块,用于根据微服务系统的物理拓扑和逻辑拓扑,构建该微服务系统的知识图谱;获取该微服务系统的故障案例库的已知案例,将该已知案例发生的拓扑关系和序列关系形成该已知案例的已知故障指纹,并嵌入该知识图谱;异常检测模块,用于通过该微服务系统的异构可观测性数据进行异常检测,将异常发生的拓扑关系和序列关系构建为该异常的现网故障指纹;案例推送模块,用于将该现网故障指纹基于该知识图谱进行相似性检索,获取多个相似故障案例,从该相似故障案例中选取与该异常具有最高相似度的故障案例作为参考案例推送给该微服务系统的运维人员。
[0020]
本发明所述的微服务故障诊断系统,该异常检测模块中,将检测到的异常(t,a)在时间维度进行dbscan聚类,得到c1,c2,...,cm=dbscan([t1,t2,...,ti]),以每个异常在时间维度所属的类别c作为现网故障指纹中的时序特征,a表示该异常对应的异常事件,t表示a发生的时间。
[0021]
本发明所述的微服务故障诊断系统,该案例推送模块包括案例检索模块,用于进行已知案例的相似性检索;其中,通过获取该现网故障指纹f'与该已知故障指纹f的相似度sim(f',f),进行相似性检索,
[0022][0023]
w(f)为异常系数,w
rel
(f)为相关性系数,(f)为相关性系数,w
freq
(f)为权重因子,c
l
(f)为异常项列表,cs(f)为异常项交集,f为f的异常项。
[0024]
本发明所述的微服务故障诊断系统,还包括:案例更新模块,用于将该异常及其对应的参考案例,以及推荐解决方案生成参考报告,推送给该运维人员;并在该运维人员对该参考报告进行修正后,添加至该故障案例库。
[0025]
本发明还提出一种计算机可读存储介质,存储有计算机可执行指令,其特征在于,当该计算机可执行指令被执行时,实现如前所述的基于知识图谱与案例推理的微服务故障诊断。
[0026]
本发明还提出一种数据处理装置,包括如前所述的计算机可读存储介质,当该数据处理装置的处理器调取并执行该计算机可读存储介质中的计算机可执行指令时,该数据处理装置实现基于知识图谱与案例推理的微服务故障诊断。
附图说明
[0027]
图1是本发明的层次化时空知识图谱的示意图。
[0028]
图2是本发明的微服务故障诊断的框架示意图。
[0029]
图3是本发明的离线知识图谱构建与在线案例推理诊断流程图。
[0030]
图4是本发明的数据处理装置示意图。
具体实施方式
[0031]
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进一步详细说明。应当理解,此处所描述的具体实施方法仅仅用以解释本发明,并不用于限定本发明。
[0032]
发明人在搭建并维护微服务应用系统时,发现微服务故障对整个应用系统的服务质量带了很大的挑战,运维人员人工定位并解决微服务故障比较缓慢,某些严重故障可能会造成较大的损失。通过分析现有的解决方案,发明人有以下观察结论:
[0033]
(1)由于现有的微服务系统规模庞大,组件复杂,因此每个用于提供可观测能力的组件都由不同的运维人员或运维团队负责。受限于此,现有的解决方案大多由单独的数据类型出发,设计并开发出专用的指标异常检测、日志异常检测等产品,没有完全利用微服务系统中的可观测数据信息。发明人通过综合分析已发生故障的处理记录,发现所有的排障过程中都利用到了多源的可观测数据,因此应当同时将多源数据用于微服务的故障诊断中,以此来解决多源异构数据融合不足的问题。
[0034]
(2)微服务系统存在复杂的物理拓扑与逻辑拓扑关系。物理拓扑是指微服务的部署方式。微服务实例可能部署在不同的物理机上,具体的部署实现由基础设施运维人员负责,如单机部署或跨服务器、跨集群、跨地区部署等。逻辑拓扑一般由业务开发人员负责,如服务与服务之间的调用关系、依赖关系等。通常物理拓扑对于业务开发人员是黑盒,基础设施运维人员也不关注微服务的逻辑关系,这导致了现有的诊断方法难以综合利用物理拓扑与逻辑拓扑的有效信息。发明人发现该问题可以利用时空知识图谱相关技术同时建模物理拓扑与逻辑拓扑,以此来解决已有排障方案所能解决故障类型较少的问题。
[0035]
(3)现有很多基于深度学习模型的方法依赖较多的历史数据用于训练,但发明人在实际应用中发现微服务异常相较于正常数据是比较少的,即使存在一些自监督的方法,但仍受限于数据质量以及服务部署的变化,难以训练出持续稳定且有效的模型,此外现有方案还难以持续迭代以学习新的故障类型。发明人经过对案例库的分析,发现可以采用案例推理技术解决此问题,实现对整个故障诊断系统的持续更新,且具有良好的可解释能力。
[0036]
综上所述,针对上述现有方法在微服务故障诊断上的不足,本发明采用时空知识图谱与案例推理等关键技术,实现了一种微服务故障诊断方法,并在模拟仿真与真实系统上进行了广泛的验证。
[0037]
本发明的故障诊断方法,对微服务系统中的四种异构可观测性数据:指标(时间序列数据)、日志(文本数据)、调用链(拓扑数据、时间序列数据)以及指令(文本数据)进行异常检测,并记录异常发生的拓扑关系以及序列关系,从而构建出微服务的故障指纹,从而可以通过多源异构的观测数据丰富故障指纹的表示。同时将微服务物理拓扑(主要为服务部署)、逻辑拓扑(主要为观测数据以及服务调用)建立层次化的知识图谱,如图1所示,对微服务故障进行层次化地推理,提供故障诊断地准确性,同时可以检测未知的新故障类型。此外结合已有的案例库,构建一种包含四个关键步骤:检索、重用、修正、保存的用于微服务故障诊断的案例推理框架,如图2所示,以通过寻找与当前故障指纹相似的历史案例,提供相应的故障解决方案,并将新类型故障增量地更新到案例库中。
[0038]
本发明的目的是解决微服务故障诊断中难以利用多源异构观测数据以及难以同时构建微服务物理和逻辑拓扑等问题,从而提出了一个利用时空知识图谱与案例推理来进行微服务故障诊断的方法。
[0039]
本发明的微服务故障诊断方法包括离线时空知识图谱构建以及在线故障诊断两个步骤,如图3所示:
[0040]
步骤s1、离线时空知识图谱构建
[0041]
从配置管理数据库中可以得到微服务部署的所有物理拓扑结构信息,其包含物理节点、微服务节点、命名空间等。图谱上节点的关系表示的是所属关系以及调用关系。对于来自案例库的已知案例的故障指纹,其上游表示的是异常实例对象,下游则是对应的故障
类型。该图谱的时序特征表现在对于一个确定的故障指纹,其异常发生的先后顺序是通过图谱关系有向地嵌入在该图谱中。该图谱的空间特征表现在相同服务在不同位置部署,其所调用或被调用的相关服务构成了一个服务拓扑子图。该图谱的层次特征表现在观测数据的层次化表达,可以从不同粒度表示故障的分类情况。
[0042]
图谱的时序关系:对于微服务的一个故障来说,其所关联的一系列异常事件是存在时序关系的。例如在一个pod_failure故障当中,一般来说其网络相关的指标net_receive和net_transmit等先发生下降,伴随着调用链指标上的延迟增加。紧接着是pod_restart计数器自增,memory_usage、cpu_usage等从零开始慢慢恢复,意味着该pod正在尝试自我重启。上例中的一系列异常事件意味着一次pod_failure故障。所面临的主要挑战就是如何将这异常事件序列嵌入到知识图谱中。首先本发明指示图谱的空间关系:发明人的一个重要观察结论是拥有相似空间拓扑的微服务系统可以在故障诊断过程中互相作为参照基准。这一空间关系常常在微服务的启动过程起到了重要作用,因为在新实例启动时,该实例在时间维度上没有历史数据以供参考,只能从其它集群或namespace下的相似实例来搜集正常且相似实例的运行状态。
[0043]
图谱的层次关系:由于微服务部署升级变化较快,经常会出现新类型的故障,因此难以在已有的知识图谱上找到合适的子图以匹配新类型的故障。为了解决该问题,本发明提出了一种层次化的推理方式。将不同的已知故障进行层次化的归类,例如jvm内存堆异常、jvm内存栈异常可以归为jvm内存异常,并进一步可归为jvm异常。尽管这种层次化的分析会给出较粗粒度的检测结果,但是其可以有效提升检测准确性。
[0044]
步骤s2、在线故障诊断
[0045]
当出现微服务故障时,相应的观测数据会检测出异常,并确定好发生异常的指标对象、日志对象,以及一跳范围内的调用对象以及相关指令返回异常对象,构建当前故障的指纹。通过在已构建好的时空知识图谱上进行相似子图搜索,找到最相似的子图位置,从而报告出所关联的故障。当出现找不到相似子图时,提高故障推理粒度,从而报告更粗粒度下的故障类型,并在人工确认后加入已有案例库中,并更新时空知识图谱。
[0046]
具体来说,对于案例库的每个故障指纹f,其包含一系列(k个)异常项f。发明人首先考虑异常项所发生的频率,出现频率越低,说明这个异常越重要,设计权重因子为:
[0047][0048]
另一个需要考虑的因子是异常项之间的相关性。发明人设计对于不同故障指纹之间的共享异常项列表为异常项交集为异常项交集为在此基础上定义相关性系数为:
[0049][0050]
结合上述两个公式定义一个异常项系数为:
[0051][0052]
案例推理技术包括以下几个流程:
[0053]
■
检索:本发明通过对现网环境故障的可观测数据进行异常检测,构建出对于现网环境的指纹信息,然后与已知案例库所构建的知识图谱进行案例相似性搜索,其公式如下:
[0054][0055]
■
重用:对于每个现网故障f,可以计算其与已知案例库故障的相似性,然后选取相似度最高的top-k个故障案例。通常应用设置下,需要报告top-1以及top-3的相似故障案例,用于提供给运维人员进行案例参考与分析。
[0056]
■
修正与保留:通过上述方法生成一个包含异常项、相似历史故障、推荐解决方案的报告。该报告可以帮助运维人员处理现网故障,同时运维人员也可以修正报告中的不足,如无关的异常项、历史故障等。修正后的报告可以视作一个新的故障案例加入到案例库中。
[0057]
图4是本发明的数据处理装置示意图。如图4所示,本发明实施例还提供一种计算机可读存储介质,以及一种数据处理装置。本发明的计算机可读存储介质存储有计算机可执行指令,计算机可执行指令被数据处理装置的处理器执行时,实现上述基于知识图谱与案例推理的微服务故障诊断。本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件(例如处理器、fpga、asic等)完成,所述程序可以存储于可读存储介质中,如只读存储器、磁盘或光盘等。上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块可以采用硬件的形式实现,例如通过集成电路来实现其相应功能,也可以采用软件功能模块的形式实现,例如通过处理器执行存储于存储器中的程序/指令来实现其相应功能。本发明实施例不限制于任何特定形式的硬件和软件的结合。
[0058]
利用四种多源异构的观测数据,对当前微服务故障构建详尽的故障指纹。结合微服务的物理与逻辑拓扑构建层次化的时空知识图谱,并在该图谱上利用已有的案例库信息进行案例推理,从而能实现一种高效准确、可增量更新的微服务故障诊断方法。
[0059]
以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变形,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
技术特征:
1.一种基于知识图谱与案例推理的微服务故障诊断方法,其特征在于,包括:根据微服务系统的物理拓扑和逻辑拓扑,构建该微服务系统的知识图谱;获取该微服务系统的故障案例库的已知案例,将该已知案例发生的拓扑关系和序列关系形成该已知案例的已知故障指纹,并嵌入该知识图谱;通过该微服务系统的异构可观测性数据进行异常检测,将异常发生的拓扑关系和序列关系构建为该异常的现网故障指纹;将该现网故障指纹基于该知识图谱进行相似性检索,获取多个相似故障案例,从该相似故障案例中选取与该异常具有最高相似度的故障案例作为参考案例推送给该微服务系统的运维人员。2.如权利要求1所述的微服务故障诊断方法,其特征在于,将检测到的异常(t,a)在时间维度进行dbscan聚类,得到c1,c2,...,cm=dbscan([t1,t2,...,t
i
]),以每个异常在时间维度所属的类别c作为现网故障指纹中的时序特征,a表示该异常对应的异常事件,t表示a发生的时间。3.如权利要求1所述的微服务故障诊断方法,其特征在于,通过获取该现网故障指纹f'与该已知故障指纹f的相似度sim(f',f),进行相似性检索,其中,w(f)为异常系数,w
rel
(f)为相关性系数,w
freq
(f)为权重因子,c
l
(f)为异常项列表,c
s
(f)为异常项交集,(f)为异常项交集,f为f的异常项。4.如权利要求1所述的微服务故障诊断方法,其特征在于,还包括:将该异常及其对应的参考案例,以及推荐解决方案生成参考报告,推送给该运维人员;并在该运维人员对该参考报告进行修正后,添加至该故障案例库。5.一种基于知识图谱与案例推理的微服务故障诊断系统,其特征在于,包括:知识图谱搭建模块,用于根据微服务系统的物理拓扑和逻辑拓扑,构建该微服务系统的知识图谱;获取该微服务系统的故障案例库的已知案例,将该已知案例发生的拓扑关系和序列关系形成该已知案例的已知故障指纹,并嵌入该知识图谱;异常检测模块,用于通过该微服务系统的异构可观测性数据进行异常检测,将异常发生的拓扑关系和序列关系构建为该异常的现网故障指纹;案例推送模块,用于将该现网故障指纹基于该知识图谱进行相似性检索,获取多个相似故障案例,从该相似故障案例中选取与该异常具有最高相似度的故障案例作为参考案例推送给该微服务系统的运维人员。6.如权利要求5所述的微服务故障诊断系统,其特征在于,该异常检测模块中,将检测到的异常(t,a)在时间维度进行dbscan聚类,得到c1,c2,...,cm=dbscan([t1,t2,...,t
i
]),
以每个异常在时间维度所属的类别c作为现网故障指纹中的时序特征,a表示该异常对应的异常事件,t表示a发生的时间。7.如权利要求5所述的微服务故障诊断系统,其特征在于,该案例推送模块包括案例检索模块,用于进行已知案例的相似性检索;其中,通过获取该现网故障指纹f'与该已知故障指纹f的相似度sim(f',f),进行相似性检索,w(f)为异常系数,w
rel
(f)为相关性系数,(f)为相关性系数,w
freq
(f)为权重因子,c
l
(f)为异常项列表,c
s
(f)为异常项交集,f为f的异常项。8.如权利要求5所述的微服务故障诊断系统,其特征在于,还包括:案例更新模块,用于将该异常及其对应的参考案例,以及推荐解决方案生成参考报告,推送给该运维人员;并在该运维人员对该参考报告进行修正后,添加至该故障案例库。9.一种计算机可读存储介质,存储有计算机可执行指令,其特征在于,当该计算机可执行指令被执行时,实现如权利要求1~4任一项所述的基于知识图谱与案例推理的微服务故障诊断。10.一种数据处理装置,包括如权利要求9所述的计算机可读存储介质,当该数据处理装置的处理器调取并执行该计算机可读存储介质中的计算机可执行指令时,该数据处理装置实现基于知识图谱与案例推理的微服务故障诊断。
技术总结
本发明提出一种基于知识图谱与案例推理的微服务故障诊断方法,包括:根据微服务系统的物理拓扑和逻辑拓扑,构建该微服务系统的知识图谱;获取该微服务系统的故障案例库的已知案例,将该已知案例发生的拓扑关系和序列关系形成该已知案例的已知故障指纹,并嵌入该知识图谱;通过该微服务系统的异构可观测性数据进行异常检测,将异常发生的拓扑关系和序列关系构建为该异常的现网故障指纹;将该现网故障指纹基于该知识图谱进行相似性检索,获取多个相似故障案例,从该相似故障案例中选取与该异常具有最高相似度的故障案例作为参考案例推送给该微服务系统的运维人员。本发明还提出一种微服务故障诊断系统,以及一种用于微服务故障诊断的数据处理装置。诊断的数据处理装置。诊断的数据处理装置。
技术研发人员:刘丰瑞 王阳 谢高岗 李振宇 关洪涛
受保护的技术使用者:中国科学院计算技术研究所
技术研发日:2023.03.15
技术公布日:2023/7/25
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
上一篇:一种空心管圆圈扣链生产装置的制作方法 下一篇:一种水果中草甘膦及其代谢物的检测方法
