CN112231187A - 微服务异常分析方法及装置 - Google Patents

微服务异常分析方法及装置 Download PDF

Info

Publication number
CN112231187A
CN112231187A CN201910636688.5A CN201910636688A CN112231187A CN 112231187 A CN112231187 A CN 112231187A CN 201910636688 A CN201910636688 A CN 201910636688A CN 112231187 A CN112231187 A CN 112231187A
Authority
CN
China
Prior art keywords
node
causal
nodes
edge
graph
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201910636688.5A
Other languages
English (en)
Other versions
CN112231187B (zh
Inventor
殷康璘
邱娟
杜庆峰
于洋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201910636688.5A priority Critical patent/CN112231187B/zh
Publication of CN112231187A publication Critical patent/CN112231187A/zh
Application granted granted Critical
Publication of CN112231187B publication Critical patent/CN112231187B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请实施例提供微服务异常分析方法及装置,涉及微服务技术领域,可以根据一段时间内微服务系统的多个性能指标的取值,得到微服务系统的因果关系图,后续,若微服务系统的性能指标出现异常,可以根据异常的性能指标以及该因果关系图确定异常性能指标的根因链路,进而可以确定导致异常性能指标性能异常的根因。该方法包括:获取数据集,其中,该数据集包括微服务系统的M个性能指标以及该M个性能指标的值,M为大于1的正整数;根据该数据集得到完全图;根据该M个性能指标的值确定该完全图中相连接的两个节点之间的条件独立性;根据该完全图中相连接的两个节点之间的条件独立性,得到该微服务系统的因果关系图。

Description

微服务异常分析方法及装置
技术领域
本申请涉及微服务技术领域,尤其涉及微服务异常分析方法及装置。
背景技术
一个大型复杂软件应用可以由一个或多个微服务组成,每个微服务可以被独立部署,而且各个微服务之间是松耦合的,即每个微服务的功能尽量单一,各个微服务之间的联系越小越好。因此,微服务架构可以让多个团队同时并行开发多个服务组件,不会因为先后依赖而影响项目总体进度,从而可以提升开发效率,所以,微服务架构是现今主流的软件架构之一。但是,相比早年面向服务的软件系统,微服务系统对服务的划分更细粒度化,并且通常会使用容器技术提高微服务系统资源的利用率,以致微服务系统的部署结构更为复杂,因而,微服务系统会面临更多的系统故障,从而引发微服务系统性能的异常。
一种微服务系统性能异常的检测方法,是将微服务监控系统中某一个监控项的某一个性能指标的历史数据进行分析,并预测该性能指标在待检测时间段的正常范围,若在待检测时间段内,该性能指标超出预测的正常范围,则认为该性能指标异常。这种微服务系统性能异常的检测方法仅能检测出微服务的性能指标在指定时间段内是否异常,而无法分析出微服务系统中导致系统性能异常的根因。
另一种微服务系统性能异常的检测方法,是根据日志挖掘以及微服务监控系统中的数据(例如:微服务监控系统中每个监控项的每个性能指标的历史数据等)分析出微服务系统中发生的多个异常事件,然后,技术人员根据微服务系统的部署结构以及发生异常的时间对该多个异常事件进行关联,形成事件链,后续,可以根据事件链追溯微服务系统发生性能异常的根因。这种微服务系统性能异常的检测方法有以下问题:(1)需要了解微服务系统的部署结构的技术人员进行事件关联,人工成本高;(2)若根因事件不能通过日志挖掘或者微服务监控系统的数据分析出来,上述微服务系统性能异常的检测方法就无法找到微服务系统中导致系统性能异常的根因。
发明内容
本申请实施例提供微服务异常分析方法及装置,可以根据一段时间内微服务系统的多个性能指标的取值,得到微服务系统的因果关系图,后续,若微服务系统的性能指标出现异常,可以根据异常的性能指标以及该因果关系图确定异常性能指标的根因链路,进而可以确定导致性能指标性能异常的根因。
为达到上述目的,本申请实施例采用如下技术方案:
第一方面,本申请实施例提供一种微服务异常分析方法,该方法包括:获取数据集,其中,该数据集包括微服务系统的M个性能指标以及该M个性能指标的值,M为大于1的正整数;根据该数据集得到完全图,其中,该完全图包括与该M个性能指标对应的M个节点,该M个节点中每两个节点相互连接;根据该M个性能指标的值确定该完全图中相连接的两个节点之间的条件独立性,其中,该两个节点之间的条件独立性根据第一条件下该两个节点的相关性系数确定,该两个节点包括第一节点和第二节点,该第一条件包括该M个节点中除该第二节点之外与该第一节点连接的N个节点,N=0,1,…M;根据该完全图中相连接的两个节点之间的条件独立性,得到该微服务系统的因果关系图,其中,该因果关系图包括该M个节点以及不具备条件独立性的两个节点之间的因果关系边。
上述第一方面提供的技术方案,可以根据数据集中M个性能指标得到完全图,根据数据集中M个性能指标的值,确定完全图中相连接的两个节点之间的条件独立性,并根据完全图中相连接的两个节点之间的条件独立性,得到微服务系统的因果关系图,后续,若微服务系统的性能指标出现异常,可以根据异常的性能指标以及该因果关系图确定异常性能指标的根因链路,进而可以确定导致性能指标性能异常的根因。
结合第一方面,在第一方面的第一种可能的实现方式中,该方法还包括:获取第一性能指标,其中,该第一性能指标为该M个性能指标中的任一性能指标,该第一性能指标的值未在该第一性能指标的正常估算范围值内;以该因果关系图中该第一性能指标对应的节点为起始节点,根据该因果关系图中因果关系边的类型以及预设追溯规则,确定该第一性能指标的根因链路,其中,该根因链路包括影响该起始节点的节点以及该起始节点。基于上述第一方面的第一种可能的实现方式,若微服务系统的性能指标出现异常,可以根据异常的性能指标以及该因果关系图确定异常性能指标的根因链路,进而可以确定导致性能指标性能异常的根因。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,该影响该起始节点的节点包括:根因节点以及该根因节点影响的中间节点;该因果关系图中不存在影响该根因节点的节点。基于上述第一方面的第二种可能的实现方式,根因链路可以包括根因节点、根因节点影响的中间节点以及起始节点,因此,可以根据根因链路确定根因节点,即导致性能指标性能异常的根因。
结合第一方面的第一种可能的实现方式和第二种可能的实现方式,在第三种可能的实现方式中,该因果关系边的类型包括无向因果边或者有向因果边,该预设追溯规则包括:若该起始节点与第三节点之间存在无向因果边、且第三节点与第四节点之间存在无向因果边,则确定第三节点为中间节点;若因果关系图中不存在影响第四节点的节点,则将第四节点确定为根因节点;或者,若该起始节点与第三节点之间存在无向因果边、且第三节点与第四节点之间存在有向因果边,且该有向因果边从该第四节点指向该第三节点,则确定第三节点为中间节点;若因果关系图中不存在影响第四节点的节点,则将第四节点确定为根因节点;或者,若该起始节点与第三节点之间存在有向因果边,且第三节点与第四节点之间存在无向因果边,且该有向因果边从该第三节点指向该起始节点,则确定第三节点为中间节点;若因果关系图中不存在影响第四节点的节点,则将第四节点确定为根因节点;或者,若该起始节点与第三节点之间存在有向因果边,且该有向因果边从该第三节点指向该起始节点,且第三节点与第四节点之间存在有向因果边,且该有向因果边从该第四节点指向该第三节点,则确定第三节点为中间节点;若因果关系图中不存在影响第四节点的节点,则将第四节点确定为根因节点。基于上述第一方面的第三种可能的实现方式,可以以因果关系图中第一性能指标对应的节点为起始节点,根据上述预设追溯规则以及因果关系图中因果关系边的类型,确定第一性能指标的根因链路,进而可以根据根因链路确定根因节点,即导致性能指标性能异常的根因。
结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,该无向因果边包括存在第一潜在变量的无向因果边以及不存在该第一潜在变量的无向因果边,其中,该第一潜在变量为该M个性能指标之外的性能指标,该第一潜在变量影响与该无向因果边连接的两个节点之间的条件独立性。基于上述第一方面的第四种可能的实现方式,无向因果边包括存在第一潜在变量的无向因果边以及不存在该第一潜在变量的无向因果边,可以根据预设追溯规则以及因果关系图中因果关系边的类型,确定第一性能指标的根因链路,进而可以根据根因链路确定根因节点,即导致性能指标性能异常的根因。
结合第一方面的第三种可能的实现方式和第四种可能的实现方式,在第五种可能的实现方式中,该有向因果边包括存在第二潜在变量的有向因果边以及不存在该第二潜在变量的有向因果边,其中,该第二潜在变量为该M个性能指标之外的性能指标,该第二潜在变量影响与该有向因果边连接的两个节点之间的条件独立性。基于上述第一方面的第五种可能的实现方式,有向因果边包括存在第二潜在变量的有向因果边以及不存在该第二潜在变量的有向因果边,可以根据预设追溯规则以及因果关系图中因果关系边的类型,确定第一性能指标的根因链路,进而可以根据根因链路确定根因节点,即导致性能指标性能异常的根因。
结合第一方面以及第一方面的各种可能的实现方式,在第六种可能的实现方式中,该根据该M个性能指标的值确定该完全图中相连接的两个节点之间的条件独立性,包括:根据该数据集计算该第一条件下相连接的两个节点的相关性系数;根据该相关性系数确定该两个节点的条件独立性。基于上述第一方面的第六种可能的实现方式,可以根据数据集计算第一条件下相连接的两个节点的相关性系数,并根据相关性系数确定两个节点的条件独立性,进而根据完全图中相连接的两个节点之间的条件独立性,得到微服务系统的因果关系图,后续,若微服务系统的性能指标出现异常,可以根据异常的性能指标以及该因果关系图确定异常性能指标的根因链路,进而可以确定导致性能指标性能异常的根因。
结合第一方面以及第一方面的各种可能的实现方式,在第七种可能的实现方式中,该根据该完全图中相连接的两个节点之间的条件独立性,得到该微服务系统的因果关系图,包括:删除该完全图中具备条件独立性的两个节点之间的连线,以及,根据不具备条件独立性的两个节点的因果关系,将该完全图中不具备条件独立性的两个节点之间的连线更新为因果关系边。基于上述第一方面的第七种可能的实现方式,可以通过删除完全图中具备条件独立性的两个节点之间的连线,以及,根据不具备条件独立性的两个节点的因果关系,将完全图中不具备条件独立性的两个节点之间的连线更新为因果关系边,得到微服务系统的因果关系图,后续,若微服务系统的性能指标出现异常,可以根据异常的性能指标以及该因果关系图确定异常性能指标的根因链路,进而可以确定导致性能指标性能异常的根因。
结合第一方面以及第一方面的各种可能的实现方式,在第八种可能的实现方式中,该获取数据集,包括:获取一段时间内微服务系统的多个性能指标以及该多个性能指标的取值;去除该多个性能指标的取值中的空值,以及,去除该一段时间内取值为固定值的性能指标及其对应的取值,得到该数据集。基于上述第一方面的第八种可能的实现方式,可以通过获取一段时间内微服务系统的多个性能指标以及多个性能指标的取值;去除多个性能指标的取值中的空值,以及,去除一段时间内取值为固定值的性能指标及其对应的取值,得到数据集,根据数据集中多个性能指标得到完全图,根据数据集中多个性能指标的值,确定完全图中相连接的两个节点之间的条件独立性,并根据完全图中相连接的两个节点之间的条件独立性,得到微服务系统的因果关系图,后续,若微服务系统的性能指标出现异常,可以根据异常的性能指标以及该因果关系图确定异常性能指标的根因链路,进而可以确定导致性能指标性能异常的根因。
第二方面,本申请实施例提供了一种微服务异常分析装置,该微服务异常分析装置具有实现上述第一方面该的方法和功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
第三方面,本申请实施例提供了一种微服务异常分析装置,包括:至少一个处理器、至少一个存储器;该至少一个存储器用于存储计算机程序,使得该计算机程序被该至少一个处理器执行时实现如第一方面及其各种可能的实现方式该的微服务异常分析方法。
第四方面,本申请提供了一种系统芯片,该系统芯片可以应用在微服务异常分析装置中,该系统芯片包括:至少一个处理器,涉及的程序指令在该至少一个处理器中执行,以实现如第一方面及其各种可能的实现方式该的微服务异常分析方法。可选的,该系统芯片还可以包括至少一个存储器,该存储器存储有涉及的程序指令。
第五方面,本申请实施例提供了一种计算机可读存储介质,如计算机非瞬态的可读存储介质。其上储存有计算机程序,当该计算机程序在计算机上运行时,使得计算机执行上述第一方面的任一种可能的方法。例如,该计算机可以是至少一个存储节点。
第六方面,本申请实施例提供了一种计算机程序产品,当其在计算机上运行时,使得第一方面提供的任一方法被执行。例如,该计算机可以是至少一个存储节点。
第七方面,本申请实施例提供一种微服务异常分析系统,该微服务异常分析系统可以包括如下任一种或几种:如第二方面中的微服务异常分析装置,或者如第三方面中的微服务异常分析装置,或者如第四方面中的系统芯片,或者如第五方面中的计算机存储介质,或者如第六方面中的计算机程序产品。
可以理解的,上述提供的任一种微服务异常分析装置、系统芯片、计算机存储介质、计算机程序产品或微服务异常分析系统等均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考对应的方法中的有益效果,此处不再赘述。
附图说明
图1A为本申请实施例提供的微服务异常分析系统架构示意图一;
图1B为本申请实施例提供的微服务系统的架构示意图;
图1C为本申请实施例提供的微服务监控系统的架构示意图;
图1D为本申请实施例提供的微服务异常分析系统架构示意图二;
图2为本申请实施例提供的微服务异常分析装置的硬件结构示意图;
图3为本申请实施例提供的微服务异常分析方法的流程示意图一;
图4为本申请实施例提供的完全图;
图5为本申请实施例提供的因果关系图一;
图6为本申请实施例提供的微服务异常分析方法的流程示意图二;
图7A为本申请实施例提供的因果关系图二;
图7B为本申请实施例提供的因果关系图三;
图7C为本申请实施例提供的因果关系图四;
图7D为本申请实施例提供的因果关系图五;
图8为本申请实施例提供的因果关系图六;
图9为本申请实施例提供的因果关系图七;
图10为本申请实施例提供的微服务异常分析方法的流程示意图三;
图11为本申请实施例提供的因果关系图八;
图12为本申请实施例提供的因果关系图九;
图13为本申请实施例提供的因果关系图十;
图14为本申请实施例提供的微服务异常分析装置的结构示意图。
具体实施方式
下面结合附图对本申请实施例的实施方式进行详细描述。
如图1A所示,为本申请实施例提供的微服务异常分析系统100a的架构示意图。图1A中,微服务异常分析系统100a包括:微服务系统101、微服务监控系统102以及微服务异常分析装置103。
图1A中的微服务系统101可以为复杂的软件应用提供服务。微服务系统101的架构如图1B所示。图1B中,微服务系统101可以包括多个服务、多个服务关联的容器、多个容器关联的虚拟机以及多个虚拟机关联的物理节点。
需要说明的是,图1B所示的微服务系统101仅是示例,在实际应用中,微服务系统101还可以包括比图1B所示的微服务系统更多或更少的组件。
图1A中的微服务监控系统102与微服务系统101连接,可以用于监控微服务系统101的性能指标(例如:响应时间、中央处理器(central processing unit,CPU)的使用率),还可以将一段时间内(例如:24小时)检测的性能指标的值发送给微服务异常分析装置103,以便微服务异常分析装置103根据微服务监控系统发送的性能指标的值,得到微服务系统101的因果关系图。后续,微服务监控系统102还可以将监控到的异常性能指标发送给微服务异常分析装置103,以便微服务异常分析装置103根据微服务系统101的因果关系图找出该性能指标异常的根因。
需要说明的是,在实际应用中,微服务监控系统102还可以用于监控服务拓扑关系、服务调用链、版本信息、服务治理状态以及组件内部状态等等。
图1A中的微服务监控系统102针对微服务系统101中的各个部署层次,可以有相应层次的监控组件收集该层次的监控数据。例如,微服务监控系统102的架构如图1C所示。图1C中,微服务监控系统102可以包括服务层监控组件1021、容器层监控组件1022、虚拟机层监控组件1023以及物理层监控组件1024。其中,服务层监控组件1021可以用于收集微服务系统101中的服务的监控数据,容器层监控组件1022可以用于收集微服务系统101中的容器的监控数据,虚拟机层监控组件1023可以用于收集微服务系统101中的虚拟机的监控数据,物理层监控组件1024可以用于收集微服务系统101中的物理节点的监控数据。
需要说明的是,图1C所示的微服务监控系统102仅是示例,在实际应用中,微服务监控系统102还可以包括比图1C所示的微服务监控系统更多或更少的组件。
图1A中的微服务异常分析装置103与微服务监控系统102连接,可以执行本申请实施例提供的微服务异常分析方法,例如:从微服务监控系统102接收一段时间内的性能指标的值,并根据一段时间内的性能指标的值得到微服务系统101的因果关系图。后续,微服务异常分析装置103还可以从微服务监控系统102接收异常性能指标,并根据微服务系统101的因果关系图找出该性能指标异常的根因。该微服务异常分析方法的具体描述可以参考下述图3所示实施例中的描述。
可选的,除了图1A所示的微服务异常分析系统100a的架构之外,微服务异常分析装置还可以部署在微服务监控系统中。
具体的,如图1D所示,为本申请实施例提供的微服务异常分析系统100b的架构示意图。图1D中,微服务异常分析系统100b包括:微服务系统104以及微服务监控系统105。
图1D中的微服务系统104的介绍可以参考上述对图1A中的微服务系统101的介绍,不予赘述。
图1D中的微服务监控系统105针对微服务系统104中的各个部署层次,可以有相应层次的监控组件收集该层次的监控数据,具体描述可以参考上述对图1A中的微服务监控系统102中介绍,不予赘述。
图1D中的微服务监控系统105与微服务系统104连接。微服务监控系统105中的微服务监控组件(例如:服务层监控组件1051、容器层监控组件1052、虚拟机层监控组件1053、物理层监控组件1054)可以用于监控微服务系统104的性能指标。微服务监控系统105中的微服务异常分析组件1055可以执行本申请实施例提供的微服务异常分析方法,例如:可以根据微服务监控组件(例如:服务层监控组件1051等)检测的一段时间内(例如:24小时)的性能指标的值,得到微服务系统104的因果关系图。后续,若微服务监控组件(例如:服务层监控组件1051等)发现性能异常的监控指标,微服务异常分析组件1055还可以根据微服务系统104的因果关系图找出该性能指标异常的根因。该微服务异常分析方法的具体描述可以参考下述图3所示实施例中的描述。
可选的,本申请实施例图1A或图1D中的各网元,例如微服务异常分析装置103或微服务异常分析组件1055,可以是一个设备内的一个功能模块。可以理解的是,该功能模块既可以是硬件设备中的网络元件,也可以是在专用硬件上运行的软件功能,或者是平台(例如,云平台)上实例化的虚拟化功能。
例如,微服务异常分析装置103或微服务异常分析组件1055均可以通过图2中的硬件设备200来实现。图2所示为可适用于本申请实施例的硬件设备的硬件结构示意图。该硬件设备200可以包括至少一个处理器201,通信线路202,存储器203以及至少一个通信接口204。
处理器201可以是一个通用CPU,微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本申请方案程序执行的集成电路。
通信线路202可包括一通路,在上述组件之间传送信息,例如总线。
通信接口204,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网接口,无线接入网接口(radio access network,RAN),无线局域网接口(wirelesslocal area networks,WLAN)等。
存储器203可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasable programmable read-only memory,EEPROM)、只读光盘(compact disc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过通信线路202与处理器相连接。存储器也可以和处理器集成在一起。本申请实施例提供的存储器通常可以具有非易失性。其中,存储器203用于存储执行本申请方案所涉及的计算机执行指令,并由处理器201来控制执行。处理器201用于执行存储器203中存储的计算机执行指令,从而实现本申请实施例提供的方法。
可选的,本申请实施例中的计算机执行指令也可以称之为应用程序代码,本申请实施例对此不作具体限定。
在具体实现中,作为一种实施例,处理器201可以包括一个或多个CPU,例如图2中的CPU0和CPU1。
在具体实现中,作为一种实施例,硬件设备200可以包括多个处理器,例如图2中的处理器201和处理器207。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,硬件设备200还可以包括输出设备205和输入设备206。输出设备205和处理器201通信,可以以多种方式来显示信息。例如,输出设备205可以是液晶显示器(liquid crystal display,LCD),发光二级管(light emitting diode,LED)显示设备,阴极射线管(cathode ray tube,CRT)显示设备,或投影仪(projector)等。输入设备206和处理器201通信,可以以多种方式接收用户的输入。例如,输入设备206可以是鼠标、键盘、触摸屏设备或传感设备等。
在具体实现中,硬件设备200可以是嵌入式设备或有图2中类似结构的设备。本申请实施例不限定硬件设备200的类型。
下面将结合图1A、图1D和图2对本申请实施例提供的微服务异常分析方法进行具体阐述。
如图3所示,为本申请实施例提供的一种微服务异常分析方法,该微服务异常分析方法包括步骤301-步骤304。
步骤301:获取数据集。
在一种可能的实现方式中,该数据集包括:微服务系统的M个性能指标以及该M个性能指标的值,M为大于1的正整数。
可选的,获取数据集包括:获取一段时间内微服务系统的多个性能指标以及该多个性能指标的取值;去除该多个性能指标的取值中的空值,以及,去除该一段时间内取值为固定值的性能指标及其对应的取值,得到该数据集。
其中,获取一段时间内微服务系统的多个性能指标以及该多个性能指标的取值可以包括:从微服务监控系统接收一段时间内微服务系统的多个性能指标以及该多个性能指标的取值。
其中,该微服务监控系统可以是图1A中的微服务监控系统102,或者,该微服务监控系统可以是图1D中的微服务监控系统105。
例如,微服务异常分析装置103从微服务监控系统102接收多个性能指标以及该多个性能指标的取值。
需要说明的是,本申请实施例不限定该多个性能指标以及该多个性能指标的取值的具体形式,该多个性能指标以及该多个性能指标的取值可以为列表形式,也可以为数组形式或者其他形式,不予限制。本申请实施例仅以该多个性能指标以及该多个性能指标的取值为列表形式为例进行描述。
示例性的,以该多个性能指标包括性能指标1-性能指标5,该多个性能指标的取值包括性能指标1-性能指标5的值为例,表1示出了性能指标1-性能指标5,以及性能指标1-性能指标5的多个取值,其中,表1中的第一行为性能指标的名称,表1中的第二行到最后一行为各个时刻的性能指标1-性能指标5的取值。
表1
Figure BDA0002130462620000071
Figure BDA0002130462620000081
表1中性能指标1的第二个取值为空值,有可能是微服务监控系统102在为性能指标1第二次取值时,未取到性能指标1的值。表1中的性能指标5的值为一个固定值,有可能是微服务监控系统102未启动对性能指标5的监控,因此,为了使得到的微服务系统的因果关系图更为准确,可以先对表1中的数据进行清洗,例如:删除表1中第二行的数据以及性能指标5对应那一列的数据,得到该数据集。该数据集可以如表2所示。
表2
性能指标1 性能指标2 性能指标3 性能指标4
0.4567 1.2234 0.5268 -0.3525
0.1125 -0.9562 0.2256 -0.6525
-0.2256 0.2235 0.2142 0.1258
1.2230 0.5656 0.2236 1.2236
0.6687 0.6222 0.2658 0.2589
0.2154 0.1235 0.1247 0.7856
0.1123 1.2563 0.6532 0.5589
在另一种可能的实现方式中,该数据集可以包括:N个时刻、微服务系统的M个性能指标以及该N个时刻下的该M个性能指标的值。
示例性的,以该数据集包括T1-TN时刻、性能指标1-性能指标4、以及T1-TN时刻下,性能指标1-性能指标4的值为例,表3示出了在T1时刻下,性能指标1的值为0.4567,性能指标2的值为1.2234,性能指标3的值为0.5268,性能指标4的值为-0.3525;在T2时刻下,性能指标1的值为0.1125,性能指标2的值为-0.9562,性能指标3的值为0.2256,性能指标4的值为-0.6525……在TN时刻下,性能指标1的值为0.1123,性能指标2的值为1.2563,性能指标3的值为0.6532,性能指标4的值为0.5589。
表3
时刻 性能指标1 性能指标2 性能指标3 性能指标4
T<sub>1</sub> 0.4567 1.2234 0.5268 -0.3525
T<sub>2</sub> 0.1125 -0.9562 0.2256 -0.6525
T<sub>N</sub> 0.1123 1.2563 0.6532 0.5589
步骤302:根据该数据集得到完全图。
其中,该完全图可以包括与M个性能指标对应的M个节点,M个节点中每两个节点相互连接。
示例性的,若该数据集包括性能指标1、性能指标2、性能指标3以及性能指标4,则根据该数据集得到的完全图可以包括节点1、节点2、节点3以及节点4,其中,节点1与性能指标1对应,节点2与性能指标2对应,节点3与性能指标3对应,节点4与性能指标4对应,节点1与节点2、节点3以及节点4连接,节点2与节点1、节点3以及节点4连接,节点3与节点1、节点2以及节点4连接,节点4与节点1、节点2以及节点3连接。该完全图可以如图4所示。
步骤303:根据M个性能指标的值确定完全图中相连接的两个节点之间的条件独立性。
其中,两个节点之间的条件独立性可以根据第一条件下两个节点的相关性系数确定,该两个节点可以包括第一节点和第二节点,该第一条件可以包括M个节点中除第二节点之外与第一节点连接的N个节点,所述N=0,1,…M。
以图4所示的完全图为例,对于节点1和节点2,第一条件可以为{}、{节点3}、{节点4}以及{节点3,节点4},其中,{}表示空集合,{节点3}表示包括节点3的集合,{节点4}表示包括节点4的集合,{节点3,节点4}表示包括节点3和节点4的集合。节点1和节点2的条件独立性可以根据{}下节点1和节点2的相关性系数、{节点3}下节点1和节点2的相关性系数,{节点4}下节点1和节点2的相关性系数以及{节点3,节点4}下节点1和节点2的相关性系数确定。
可选的,根据M个性能指标的值确定完全图中相连接的两个节点之间的条件独立性,包括:根据数据集计算所述第一条件下相连接的两个节点的相关性系数;根据相关性系数确定所述两个节点的条件独立性。
其中,根据数据集计算所述第一条件下相连接的两个节点的相关性系数;根据相关性系数确定所述两个节点的条件独立性的具体过程在下述图3所示实施例的第二种实现场景中进行介绍。
步骤304:根据完全图中相连接的两个节点之间的条件独立性,得到微服务系统的因果关系图。
其中,因果关系图包括M个节点以及不具备条件独立性的两个节点之间的因果关系边。
如图5所示,本申请实施例提供的因果关系图。图5所示的因果关系图是根据图4所示的完全图,以及图4所示的完全图中相连接的两个节点之间的条件独立性得到的。图5所示的因果关系图包括节点1、节点2、节点3、节点4、节点1和节点3之间的因果关系边、节点2和节点3之间的因果关系边,以及节点3和节点4之间的因果关系边。其中,节点1为性能指标1对应的节点,节点2为性能指标2对应的节点,节点3为性能指标3对应的节点,节点4为性能指标4对应的节点。
可选的,根据完全图中相连接的两个节点之间的条件独立性,得到微服务系统的因果关系图,包括:删除完全图中具备条件独立性的两个节点之间的连线,以及,根据不具备条件独立性的两个节点的因果关系,将完全图中不具备条件独立性的两个节点之间的连线更新为因果关系边。
其中,删除完全图中具备条件独立性的两个节点之间的连线,以及,根据不具备条件独立性的两个节点的因果关系,将完全图中不具备条件独立性的两个节点之间的连线更新为因果关系边的具体过程在下述图3所示实施例的第三种实现场景中进行介绍。
基于图3所示方法,可以获取微服务系统的M个性能指标以及所述M个性能指标的值,根据M个性能指标得到完全图,根据M个性能指标的值确定完全图中相连接的两个节点之间的条件独立性,并根据完全图中相连接的两个节点之间的条件独立性,得到微服务系统的因果关系图,以便在获取异常节点后,可以根据该因果关系图确定该异常节点的根因链路。
可选的,在图3所示实施例的第一种实现场景中,如图6所示,图3所示方法还包括步骤305-步骤306。
步骤305:获取第一性能指标。
其中,第一性能指标为M个性能指标中的任一性能指标,第一性能指标的值未在第一性能指标的正常估算范围值内,即第一性能指标可以是异常的性能指标。
示例性的,以图5所示的因果关系图为例,第一性能指标可以是性能指标1,或者性能指标2,或者性能指标3,或者性能指标4。
可选的,获取第一性能指标,包括:从微服务监控系统接收第一性能指标。
示例性的,以微服务监控系统102向微服务异常分析装置103发送第一性能指标为例,微服务监控系统102检测到性能指标1的值大于性能指标1的正常估算范围值,向微服务异常分析装置103发送性能指标1,微服务异常分析装置103从微服务监控系统102接收性能指标1。
步骤306:以因果关系图中第一性能指标对应的节点为起始节点,根据因果关系图中因果关系边的类型以及预设追溯规则,确定第一性能指标的根因链路。
其中,因果关系边的类型可以包括无向因果边或者有向因果边。
其中,无向因果边可以为不带方向的因果关系边。无向因果边连接的两个节点可以互为因果节点。
以图5所示的因果关系图为例,其中,节点1和节点3之间的因果关系边为无向因果边。节点1为节点3的原因节点,节点3为节点1的结果节点;或者,节点1为节点3的结果节点,节点3为节点1的原因节点。
其中,有向因果边可以为带方向的因果关系边,即有向因果边连接的两个节点,其中一个节点指向另一个节点。该其中一个节点为该另一个节点的原因节点,该另一个节点为该其中一个节点的结果节点。
以图5所示的因果关系图为例,其中,节点2和节点3之间的因果关系边以及节点3与节点4之间的因果关系边为有向因果边。节点2为节点3的原因节点,节点3为节点2的结果节点,节点3为结果4的原因节点,节点4为节点3的结果节点。
其中,根因链路可以包括影响起始节点的节点以及起始节点。
其中,影响起始节点的节点包括:根因节点以及根因节点影响的中间节点。因果关系图中不存在影响根因节点的节点。
如图7A所示,为本申请实施例提供的因果关系图。图7A所示的因果关系图包括节点1-节点6,节点1和节点3之间的无向因果边,节点2和节点3之间的有向因果边,节点3和节点4之间的有向因果边,节点2和节点5之间的有向因果边,节点5和节点6之间的有向因果边以及节点4和节点6之间的有向因果边。
示例性的,以第一性能指标的根因链路为:节点1->节点3为例,节点3为起始节点,节点1为根因节点。
示例性的,以第一性能指标的根因链路为:节点6->节点4->节点3为例,节点3为起始节点,节点6为根因节点,节点4为根因节点影响的中间节点。
示例性的,以第一性能指标的根因链路为:节点6->节点5->节点2->节点3为例,节点3为起始节点,节点6为根因节点,节点4和节点5为根因节点影响的中间节点。
需要说明的是,根因节点影响的中间节点可以为零个节点、一个节点或者多个节点。本申请实施例仅以根因节点影响的中间节点为零个节点(下述情况1和情况2)以及一个节点(下述情况3-情况6)为例进行介绍,根因节点影响的中间节点包括两个以上的节点的情况,可以参考根因节点影响的中间节点包括一个节点以及两个节点的描述,不予赘述。
在实际应用中,预设追溯规则可以根据两个节点之间的因果关系边的类型的不同而不同,具体包括以下情况:
情况1:若起始节点与第三节点之间存在无向因果边,且因果关系图中不存在影响第三节点的节点(即因果关系图中不存在第三节点的原因节点),则将第三节点确定为根因节点,该第三节点为与该起始节点连接的任一节点。
示例性的,以节点1为起始节点为例,图7A中,节点1与节点3通过无向因果边连接,即节点3可以为节点1的原因节点,且图7A所示的因果关系图中不存在节点3的原因节点,因此,节点1的根因链路为:节点3->节点1。
情况2:若该起始节点与第三节点之间存在有向因果边,且该有向因果边从第三节点指向起始节点,且因果关系图中不存在影响第三节点的节点(即因果关系图中不存在第三节点的原因节点),则将第三节点确定为根因节点,该第三节点为与该起始节点连接的任一节点。
示例性的,以节点5为起始节点为例,图7A中,与节点5连接的因果边有两条,分别为:节点5与节点2之间的有向因果边,以及节点5与节点6之间的有向因果边,其中,节点5与节点2之间的有向因果边从节点5指向节点2,即节点2为节点5的结果节点,因此节点5的根因链路不包括节点2;节点5与节点6之间的有向因果边从节点6指向节点5,即节点6为节点5的原因节点,且图7A所示的因果关系图中不存在节点6的原因节点,因此,节点5的根因链路为:节点6->节点5。
情况3:若该起始节点与第三节点之间存在无向因果边,且第三节点与第四节点之间存在无向因果边,则确定第三节点为中间节点,若因果关系图中不存在影响第四节点的节点(即因果关系图中不存在第四节点的原因节点),则将第四节点确定为根因节点,其中,第三节点为与该起始节点连接的任一节点,第四节点为除起始节点外,与第三节点连接的任一节点。
示例性的,以节点3为起始节点为例,图7B中,节点3与节点1存在无向因果边,且节点1与节点6存在无向因果边,则确定节点1为中间节点。图7B所示的因果关系图中不存在影响节点6的节点,则将节点6确定为根因节点,因此,节点3的根因链路可以为节点3->节点1->节点6。
情况4:若该起始节点与第三节点之间存在无向因果边、且第三节点与第四节点之间存在有向因果边,且该有向因果边从该第四节点指向该第三节点,则确定第三节点为中间节点;若因果关系图中不存在影响第四节点的节点,则将第四节点确定为根因节点,其中,第三节点为与该起始节点连接的任一节点,第四节点为除起始节点外,与第三节点连接的任一节点。
示例性的,以节点3为起始节点为例,图7B中,节点3与节点4存在无向因果边,且节点4与节点5存在有向因果边,且该有向因果边从节点5指向节点4,则确定节点4为中间节点。图7B所示的因果关系图中不存在影响节点5的节点,则将节点5确定为根因节点,因此,节点3的根因链路可以为节点5->节点4->节点3。
情况5:若该起始节点与第三节点之间存在有向因果边,且第三节点与第四节点之间存在无向因果边,且该有向因果边从该第三节点指向该起始节点,则确定第三节点为中间节点;若因果关系图中不存在影响第四节点的节点,则将第四节点确定为根因节点,其中,第三节点为与该起始节点连接的任一节点,第四节点为除起始节点外,与第三节点连接的任一节点。
示例性的,以节点3为起始节点为例,图7B中,节点3与节点2存在有向因果边,且节点2与节点5存在无向因果边,且该有向因果边从节点2指向节点3,则确定节点2为中间节点。图7B所示的因果关系图中不存在影响节点5的节点,则将节点5确定为根因节点,因此,节点3的根因链路可以为节点5->节点2->节点3。
情况6:若该起始节点与第三节点之间存在有向因果边,且该有向因果边从该第三节点指向该起始节点,且第三节点与第四节点之间存在有向因果边,且该有向因果边从该第四节点指向该第三节点,则确定第三节点为中间节点;若因果关系图中不存在影响第四节点的节点,则将第四节点确定为根因节点,其中,第三节点为与该起始节点连接的任一节点,第四节点为除起始节点外,与第三节点连接的任一节点。
示例性的,以节点3为起始节点为例,图7A中,节点3与节点4存在有向因果边,且该有向因果边从节点4指向节点3,且节点4与节点6存在有向因果边,且该有向因果边从节点6指向节点4,则确定节点4为中间节点。图7A所示的因果关系图中不存在影响节点6的节点,则将节点6确定为根因节点,因此,节点3的根因链路可以为节点6->节点4->节点3。
可选的,第一指标的根因链路有一条或多条。
示例性的,以起始节点为节点3为例,图7B中,节点3的根因链路可以有3条,分别为:节点3->节点1->节点6,节点3->节点2->节点5以及节点3->节点4->节点5。
需要说明的是,微服监控系统在监控微服务系统的过程中,可能存在检测不到某些性能指标的情况,但是该性能指标可以影响完全图中相连接的两个节点之间的条件独立性,因此,在确定微服务系统的因果关系图的过程中还应该考虑潜在变量的因素。
在确定微服务系统的因果关系图的过程考虑潜在变量的情况下,无向因果边可以包括存在第一潜在变量的无向因果边以及不存在该第一潜在变量的无向因果边,其中,该第一潜在变量为该M个性能指标之外的性能指标,该第一潜在变量影响与该无向因果边连接的两个节点之间的条件独立性。有向因果边可以包括存在第二潜在变量的有向因果边以及不存在该第二潜在变量的有向因果边,其中,该第二潜在变量为该M个性能指标之外的性能指标,该第二潜在变量影响与该有向因果边连接的两个节点之间的条件独立性。
示例性的,图7D中,节点2与节点3之间的因果关系边为存在第二潜在变量的有向因果边。节点2o->节点3可以表示节点2是节点3的原因节点,节点3是节点2的结果节点;或者,节点2o->节点3可以表示存在第二潜在变量L,使得节点2<-L->节点3,即L为节点2的原因节点,且为节点3的原因节点。
示例性的,图7D中,节点4与节点5之间的因果关系边为不存在第二潜在变量的有向因果边。节点5->节点4可以表示节点5为节点4的原因节点,节点4为节点5的结果节点。
示例性的,图7D中,节点1与节点3之间的因果关系边为存在第一潜在变量的无向因果边。节点1o-o节点3可以表示节点1是节点3的原因节点,节点3是节点1的结果节点;或者,节点1o-o节点3可以表示节点3是节点1的原因节点,节点1是节点3的结果节点;或者,节点1o-o节点3可以表示存在第一潜在变量K,使得节点1<-K->节点3,即K为节点1的原因节点,且为节点3的原因节点。
示例性的,图7D中,节点1与节点6之间的因果关系边为不存在第一潜在变量的无向因果边。节点1-节点6可以表示节点1为节点6的原因节点,节点6为节点1的结果节点;或者,节点1-节点6可以表示节点6为节点1的原因节点,节点1为节点6的结果节点。
需要说明的是,为了简洁地展示M个节点的因果关系,在微服务因果关系图中可以将存在第一潜在变量的无向因果边以不存在第一潜在变量的无向因果边的形式展示出来,可以将存在第二潜在变量的无向因果边以不存在第二潜在变量的无向因果边的形式展示出来。
在确定微服务系统的因果关系图的过程考虑潜在变量的情况下,预设追溯规则也可以根据两个节点之间的因果关系边的类型的不同而不同,具体包括以下情况:
情况7:若起始节点与第三节点之间存在第一潜在变量的无向因果边,且因果关系图中不存在影响第三节点的节点(即因果关系图中不存在第三节点的原因节点),则将第三节点确定为根因节点,该第三节点为与该起始节点连接的任一节点。
示例性的,以节点1为起始节点为例,图7C中,节点1与节点3通过存在第一潜在变量的无向因果边连接,即节点3可以为节点1的原因节点,且图7C所示的因果关系图中不存在节点3的原因节点,因此,节点1的根因链路为:节点3->节点1。
情况8:若该起始节点与第三节点之间存在第二潜在变量的有向因果边,且该有向因果边从第三节点指向起始节点,且因果关系图中不存在影响第三节点的节点(即因果关系图中不存在第三节点的原因节点),则将第三节点确定为根因节点,该第三节点为与该起始节点连接的任一节点。
示例性的,以节点5为起始节点为例,图7C中,与节点5连接的因果边有两条,分别为:节点5与节点2之间的不存在第二潜在变量的有向因果边,以及节点5与节点6之间的存在第二潜在变量的有向因果边,其中,节点5与节点2之间的不存在第二潜在变量的有向因果边从节点5指向节点2,即节点2为节点5的结果节点,因此节点5的根因链路不包括节点2;节点5与节点6之间的存在第二潜在变量的有向因果边从节点6指向节点5,即节点6为节点5的原因节点,且图7A所示的因果关系图中不存在节点6的原因节点,因此,节点5的根因链路为:节点6->节点5。
情况9:若该起始节点与第三节点之间存在第一潜在变量的无向因果边,且第三节点与第四节点之间存在第一潜在变量的无向因果边,则确定第三节点为中间节点,若因果关系图中不存在影响第四节点的节点(即因果关系图中不存在第四节点的原因节点),则将第四节点确定为根因节点,其中,第三节点为与该起始节点连接的任一节点,第四节点为除起始节点外,与第三节点连接的任一节点。
示例性的,以节点3为起始节点为例,图7D中,节点3与节点1存在第一潜在变量的无向因果边,且节点1与节点6存在第一潜在变量的无向因果边,则确定节点1为中间节点。图7D所示的因果关系图中不存在影响节点6的节点,则将节点6确定为根因节点,因此,节点3的根因链路可以为节点6->节点1->节点3。
情况10:若该起始节点与第三节点之间存在第一潜在变量的无向因果边、且第三节点与第四节点之间存在第二潜在变量的有向因果边,且该存在第二潜在变量的有向因果边从该第四节点指向该第三节点,则确定第三节点为中间节点;若因果关系图中不存在影响第四节点的节点,则将第四节点确定为根因节点,其中,第三节点为与该起始节点连接的任一节点,第四节点为除起始节点外,与第三节点连接的任一节点。
示例性的,以节点3为起始节点为例,图7D中,节点3与节点4存在第一潜在变量的无向因果边,且节点4与节点5存在第二潜在变量的有向因果边,且该存在第二潜在变量的有向因果边从节点5指向节点4,则确定节点4为中间节点。图7D所示的因果关系图中不存在影响节点5的节点,则将节点5确定为根因节点,因此,节点3的根因链路可以为节点5->节点4->节点3。
情况11:若该起始节点与第三节点之间存在第二潜在变量的有向因果边,且第三节点与第四节点之间存在第一潜在变量的无向因果边,且该存在第二潜在变量的有向因果边从该第三节点指向该起始节点,则确定第三节点为中间节点;若因果关系图中不存在影响第四节点的节点,则将第四节点确定为根因节点,其中,第三节点为与该起始节点连接的任一节点,第四节点为除起始节点外,与第三节点连接的任一节点。
示例性的,以节点3为起始节点为例,图7D中,节点3与节点2存在第二潜在变量的有向因果边,且节点2与节点5存在第一潜在变量的无向因果边,且该存在第二潜在变量的有向因果边从节点2指向节点3,则确定节点2为中间节点。图7D所示的因果关系图中不存在影响节点5的节点,则将节点5确定为根因节点,因此,节点3的根因链路可以为节点5->节点2->节点3。
情况12:若该起始节点与第三节点之间存在第二潜在变量的有向因果边,且该存在第二潜在变量的有向因果边从该第三节点指向该起始节点,且第三节点与第四节点之间存在第二潜在变量的有向因果边,且该存在第二潜在变量的有向因果边从该第四节点指向该第三节点,则确定第三节点为中间节点;若因果关系图中不存在影响第四节点的节点,则将第四节点确定为根因节点,其中,第三节点为与该起始节点连接的任一节点,第四节点为除起始节点外,与第三节点连接的任一节点。
示例性的,以节点3为起始节点为例,图7C中,节点3与节点4存在第二潜在变量的有向因果边,且该存在第二潜在变量的有向因果边从节点4指向节点3,且节点4与节点6存在第二潜在变量的有向因果边,且该存在第二潜在变量的有向因果边从节点6指向节点4,则确定节点4为中间节点。图7C所示的因果关系图中不存在影响节点6的节点,则将节点6确定为根因节点,因此,节点3的根因链路可以为节点6->节点4->节点3。
需要说明的是,对于因果关系边的类型为不存在第一潜在变量的无向因果边以及不存在第二潜在变量的有向因果边的情况,其对应的预设追溯条件可以参考上述情况1-情况6的描述,不予赘述。
基于图6所示的方法,可以在获取到性能异常的性能指标后,以因果关系图中性能异常的性能指标对应的节点为起始节点,根据因果关系图中因果关系边的类型以及预设追溯规则,确定性能异常的性能指标的一条或多条根因链路,进而可以确定导致该性能指标性能异常的根因。
可选的,在图3所示实施例的第二种实现场景中,步骤303可以包括:根据数据集计算第一条件下相连接的两个节点的相关性系数;根据相关性系数确定所述两个节点的条件独立性。步骤304可以包括:删除完全图中具备条件独立性的两个节点之间的连线,以及,根据不具备条件独立性的两个节点的因果关系,将完全图中不具备条件独立性的两个节点之间的连线更新为因果关系边。
下面以数据集包括性能指标1-性能指标4,以及性能指标1-性能指标4的多个取值为例,介绍步骤303和步骤304的具体实现过程,该过程可以包括步骤1-步骤35。其中,性能指标1-性能指标4的完全图如图8中的(a)所示。图8中的(a)所示的完全图包括节点X1-X4,其中,节点X1与性能指标1对应,节点X2与性能指标2对应,节点X3与性能指标3对应,节点X4与性能指标4对应。
首先,确定第一条件为{}时,图8中的(a)所示的完全图中每两个节点的条件独立性。例如:X1和X2的条件独立性、X2和X3的条件独立性、X2和X4的条件独立性、X1和X3的条件独立性、X3和X4的条件独立性以及X1和X4的条件独立性。
步骤1:计算第一条件为{}时,X1和X2的相关性系数。
一种可能的实现方式,当第一条件为{}时,根据公式
Figure BDA0002130462620000141
计算X1和X2的相关性系数。
其中,Cov(X1,X2)为X1和X2的协方差,Var(X1)为X1的方差,Var(X2)为X2的方差。
步骤2:根据X1和X2的相关性系数,计算X1和X2之间的检验统计量。
需要说明的是,计算第一条件下相连接的两个节点的相关性系数的方法有多种,例如:T检验、F检验、多元高斯检验以及条件独立性等方法,本申请实施例以T检验为例,介绍计算第一条件下相连接的两个节点的相关性系数的具体过程,其他计算第一条件下相连接的两个节点的相关性系数的方法,可以参考下述T检验的方法,不予赘述。
一种可能的实现方式,根据公式
Figure BDA0002130462620000151
计算X1和X2之间的检验统计量。
其中,r为X1和X2的相关性系数,n为数据列的数量(第一条件为{}时,数据列仅有X1和X2两列,因此,此时n为2),k为第一条件中元素的个数(此时第一条件为{},因此k为0),n-k-1为统计的自由度(此时统计的自由度为1)。
步骤3:根据k、统计自由度以及检验统计量确定第一条件下X1和X2的条件独立性。
一种可能的实现方式,在显著性水平为第一阈值的表中,查询k以及统计自由度对应的检验统计量t’的值,若t大于等于t’,则确定在第一条件为{}时,X1和X2独立,可以表示为X1⊥X2|{};若t小于t’,则确定在第一条件为{}时,X1和X2不独立,可以表示为
Figure BDA0002130462620000152
示例性的,以第一阈值为0.05,k为0,统计自由度为1为例,若在显著性水平为0.05的表中,查询到k为0,统计自由度为1时对应的检验统计量t’=2.5,若根据检验统计量公式计算的检验统计量t=3,则确定X1⊥X2|{},若根据检验统计量公式计算的检验统计量t=1.5,则确定
Figure BDA0002130462620000153
步骤4:若第一条件为{}时,X1和X2独立,删除完全图中X1和X2之间的连线。
示例性的,若在第一条件为{}时,X1和X2独立,则删除图8中的(a)中X1和X2之间的连线,得到图8中的(b)所示的中间因果关系图。若在第一条件为{}时,X1和X2不独立,则不对图8中的(a)所示的完全图进行处理,即此时得到的中间因果关系图如图8中的(a)所示。
步骤5:根据上述步骤1-步骤3确定第一条件为{}时,X2和X3的条件独立性。
步骤6:若第一条件为{}时,X2和X3独立,删除完全图中X2和X3之间的连线。
步骤7:根据上述步骤1-步骤3确定第一条件为{}时,X2和X4的条件独立性。
步骤8:若第一条件为{}时,X2和X4独立,删除完全图中X2和X4之间的连线。
步骤9:根据上述步骤1-步骤3确定第一条件为{}时,X3和X4的条件独立性。
步骤10:若第一条件为{}时,X3和X4独立,删除完全图中X3和X4之间的连线。
步骤11:根据上述步骤1-步骤3确定第一条件为{}时,X1和X3的条件独立性。
步骤12:若第一条件为{}时,X1和X3独立,删除完全图中X1和X3之间的连线。
步骤13:根据上述步骤1-步骤3确定第一条件为{}时,X1和X4的条件独立性。
步骤14:若第一条件为{}时,X1和X4独立,删除完全图中X1和X4之间的连线。
需要说明的是,本申请实施例不限制步骤1-步骤4、步骤5-步骤6、步骤7-步骤8、步骤9-步骤10、步骤11-步骤12以及步骤13-步骤14之间的执行顺序。例如,可以按照如下顺序执行步骤1-步骤14:先执行步骤9-步骤10,再执行步骤7-步骤8,再执行步骤1-步骤4,再执行步骤13-步骤14,再执行步骤11-步骤12,最后执行步骤5-步骤6;也可以按照如下顺序执行步骤1-步骤14:先执行步骤7-步骤8,再执行步骤11-步骤12,再执行步骤13-步骤14,再执行步骤9-步骤10,再执行步骤1-步骤4,最后执行步骤5-步骤6;还可以按照如下顺序执行步骤1-步骤14:先执行步骤13-步骤14,再执行步骤5-步骤6,再执行步骤11-步骤12,再执行步骤1-步骤4,再执行步骤9-步骤10,最后执行步骤7-步骤8。
需要说明的是,若执行步骤1-步骤14后得到的中间因果关系图中,有与两个或两个以上的节点连接的节点,则执行步骤15,若执行步骤1-步骤14后得到的中间因果关系图中,没有与两个或两个以上的节点连接的节点,则执行步骤35。
若在第一条件为{}时,X1和X2独立(即X1⊥X2|{}),第一条件为{}时,X2和X3不独立(即
Figure BDA0002130462620000163
),第一条件为{}时,X2和X4不独立(即
Figure BDA0002130462620000166
),第一条件为{}时,X3和X4不独立(即
Figure BDA0002130462620000164
),第一条件为{}时,X1和X3不独立(即
Figure BDA0002130462620000167
),第一条件为{}时,X1和X4不独立(即
Figure BDA0002130462620000165
),则执行步骤5-步骤14后,得到的中间因果关系图如图8中的(b)所示。
图8中的(b)中,与X1连接的节点有两个(X3和X4),与X2连接的节点有两个(X3和X4),与X3连接的节点有三个(X1、X2和X4),与X4连接的节点有三个(X1、X2和X3),因此,此时执行步骤15。
其次,确定第一条件包括一个元素时,图8中的(b)所示的中间因果关系图中相连接的两个节点的条件独立性,该相连接的两个节点中,有至少一个节点与两个或两个以上的节点连接。例如,第一条件为{X1}时,X3和X4的条件独立性,第一条件为{X2}时,X3和X4的条件独立性,第一条件为{X3}时,X1和X4的条件独立性,第一条件为{X3}时,X2和X4的条件独立性,第一条件为{X4}时,X1和X3的条件独立性,以及第一条件为{X4}时,X2和X3的条件独立性。
步骤15:计算第一条件为{X1}时,X3和X4的偏相关系数。
首先,计算X1和X1、X1和X3、X1和X4、X3和X3、X3和X4以及X4和X4的相关性系数,并根据X1和X1、X1和X3、X1和X4、X3和X3、X3和X4以及X4和X4的相关性系数得到X1、X3和X4之间的相关性系数矩阵R1
一种可能的实现方式,根据公式
Figure BDA0002130462620000161
分别计算X1和X1、X1和X3、X1和X4、X3和X3、X3和X4以及X4和X4的相关性系数。
其中,Cov(A,B)为A和B的协方差,Var(A)为A的方差,Var(B)为B的方差。
根据X1和X1、X1和X3、X1和X4、X3和X3、X3和X4以及X4和X4的相关性系数得到的X1、X3和X4之间的相关性系数矩阵R1如下所示:
X1、X3和X4之间的相关性系数矩阵
X<sub>1</sub> X<sub>3</sub> X<sub>4</sub>
X<sub>1</sub> r<sub>1</sub>(X<sub>1</sub>,X<sub>1</sub>) r<sub>1</sub>(X<sub>1</sub>,X<sub>3</sub>) r<sub>1</sub>(X<sub>1</sub>,X<sub>4</sub>)
X<sub>3</sub> r<sub>1</sub>(X<sub>1</sub>,X<sub>3</sub>) r<sub>1</sub>(X<sub>3</sub>,X<sub>3</sub>) r<sub>1</sub>(X<sub>3</sub>,X<sub>4</sub>)
X<sub>4</sub> r<sub>1</sub>(X<sub>1</sub>,X<sub>4</sub>) r<sub>1</sub>(X<sub>3</sub>,X<sub>4</sub>) r<sub>1</sub>(X<sub>4</sub>,X<sub>4</sub>)
其中,r1(X1,X1)为X1和X1的相关性系数,r1(X1,X3)为X1和X3的相关性系数,r1(X1,X4)为X1和X4的相关性系数,r1(X3,X3)为X3和X3的相关性系数,r1(X3,X4)为X3和X4的相关性系数,r1(X4,X4)为X4和X4的相关性系数。
其次,计算相关性系数矩阵R1的逆矩阵R1 -1
最后,根据逆矩阵R1 -1计算X3和X4的偏相关系数。
以逆矩阵R1 -1为如下所示的矩阵为例,可以根据公式
Figure BDA0002130462620000162
计算X3和X4的偏相关系数。
其中,R1 -1(1,1)为逆矩阵R1 -1中第一行第一列的元素的值,R1 -1(1,2)为逆矩阵R1 -1中第一行第二列的元素的值,R1 -1(1,3)为逆矩阵R1 -1中第一行第三列的元素的值,R1 -1(2,1)为逆矩阵R1 -1中第二行第一列的元素的值,R1 -1(2,2)为逆矩阵R1 -1中第二行第二列的元素的值,R1 -1(2,3)为逆矩阵R1 -1中第二行第三列的元素的值,R1 -1(3,1)为逆矩阵R1 -1中第三行第一列的元素的值,R1 -1(3,2)为逆矩阵R1 -1中第三行第二列的元素的值,R1 -1(3,3)为逆矩阵R1 -1中第三行第三列的元素的值。
逆矩阵R1 -1
X<sub>1</sub> X<sub>3</sub> X<sub>4</sub>
X<sub>1</sub> R<sub>1</sub><sup>-1</sup>(1,1) R<sub>1</sub><sup>-1</sup>(1,2) R<sub>1</sub><sup>-1</sup>(1,3)
X<sub>3</sub> R<sub>1</sub><sup>-1</sup>(2,1) R<sub>1</sub><sup>-1</sup>(2,2) R<sub>1</sub><sup>-1</sup>(2,3)
X<sub>4</sub> R<sub>1</sub><sup>-1</sup>(3,1) R<sub>1</sub><sup>-1</sup>(3,2) R<sub>1</sub><sup>-1</sup>(3,3)
步骤16:根据X3和X4的偏相关性系数,计算X3和X4之间的检验统计量。
一种可能的实现方式,根据公式
Figure BDA0002130462620000171
计算X3和X4之间的检验统计量。
其中,r1’为X3和X4的偏相关性系数,n为数据列的数量(第一条件为{X1}时,数据列有X1、X2和X3三列,因此,此时n为3),k为第一条件中元素的个数(此时第一条件为{X1},因此k为1,n-k-1为统计的自由度(此时统计的自由度为1)。
步骤17:根据k、统计自由度以及检验统计量确定第一条件下X2和X3的条件独立性。
一种可能的实现方式,在显著性水平为第一阈值的表中,查询k以及统计自由度对应的检验统计量t1’的值,若t1大于等于t1’,则确定在第一条件为{X1}时,X3和X4独立,可以表示为X3⊥X4|{X1};若t1小于t1’,则确定在第一条件为{X1}时,X3和X4不独立,可以表示为
Figure BDA0002130462620000172
示例性的,以第一阈值为0.05,k为1,统计自由度为1为例,若在显著性水平为0.05的表中,查询到k为1,统计自由度为1时对应的检验统计量t1’=10,若根据检验统计量公式计算的检验统计量t1=28,则确定X3⊥X4|{X1},若根据检验统计量公式计算的检验统计量t1=8,则确定
Figure BDA0002130462620000173
步骤18:若第一条件为{X1}时,X3和X4独立,删除完全图中X3和X4之间的连线。
步骤19:根据上述步骤15-步骤17确定第一条件为{X2}时,X3和X4的条件独立性。
步骤20:若第一条件为{X2}时,X3和X4独立,删除完全图中X3和X4之间的连线。
步骤21:根据上述步骤15-步骤17确定第一条件为{X2}时,X3和X4的条件独立性。
步骤22:若第一条件为{X2}时,X3和X4独立,删除完全图中X3和X4之间的连线。
步骤23:根据上述步骤15-步骤17确定第一条件为{X4}时,X1和X3的条件独立性。
步骤24:若第一条件为{X4}时,X1和X3独立,删除完全图中X1和X3之间的连线。
步骤25:根据上述步骤15-步骤17确定第一条件为{X4}时,X2和X3的条件独立性。
步骤26:若第一条件为{X4}时,X2和X3独立,删除完全图中X2和X3之间的连线。
需要说明的是,本申请实施例不限制步骤15-步骤18、步骤19-步骤20以及步骤21-步骤22之间的执行顺序。例如,可以先执行步骤23-步骤24,再执行步骤15-步骤18,再执行步骤25-步骤26,再执行步骤19-步骤20,最后执行步骤21-步骤22;也可以先执行步骤19-步骤20,再执行步骤21-步骤22,再执行步骤25-步骤26,再执行步骤23-步骤24,最后执行步骤15-步骤18;还可以先执行步骤25-步骤26,再执行步骤21-步骤22,再执行步骤15-步骤18,再执行步骤23-步骤24,最后执行19-步骤20。
需要说明的是,若执行步骤1-步骤26后得到的中间因果关系图中,有与三个或三个以上的节点连接的节点,则执行步骤27,若执行步骤1-步骤26后得到的中间因果关系图中,没有与三个或三个以上的节点连接的节点,则执行步骤35。
若第一条件为{X1}时,X3和X4不独立(即
Figure BDA0002130462620000183
),第一条件为{X2}时,X3和X4不独立(即
Figure BDA0002130462620000184
),第一条件为{X3}时,X1和X4独立(即
Figure BDA0002130462620000185
),第一条件为{X3}时,X2和X4独立(即X2⊥X4|{X3}),第一条件为{X4}时,X1和X3不独立(即
Figure BDA0002130462620000186
),以及第一条件为{X4}时,X2和X3不独立(即
Figure BDA0002130462620000187
),则执行步骤15-步骤26后,得到的中间因果关系图如图8中的(c)所示。
图8中的(c)中,与X3连接的节点有三个(X1、X2和X4),因此,此时执行步骤27。
再次,确定第一条件包括两个元素时,图8中的(c)所示的中间因果关系图中相连接的两个节点的条件独立性,该相连接的两个节点中,有至少一个节点与三个或三个以上的节点连接。例如,第一条件为{X2,X4}时,X1和X3的条件独立性,第一条件为{X1,X4}时,X2和X3的条件独立性,第一条件为{X1,X2}时,X3和X4的条件独立性。
步骤27:计算第一条件为{X2,X4}时,X1和X3的偏相关系数。
首先,计算X1和X1、X1和X2、X1和X3、X1和X4、X2和X2、X2和X3、X2和X4、X3和X3、X3和X4以及X4和X4的相关性系数,并根据X1和X1、X1和X2、X1和X3、X1和X4、X2和X2、X2和X3、X2和X4、X3和X3、X3和X4以及X4和X4的相关性系数得到X1、X2、X3和X4之间的相关性系数矩阵R2
一种可能的实现方式,根据公式
Figure BDA0002130462620000181
分别计算X1和X1、X1和X2、X1和X3、X1和X4、X2和X2、X2和X3、X2和X4、X3和X3、X3和X4以及X4和X4的相关性系数。
其中,Cov(A,B)为A和B的协方差,Var(A)为A的方差,Var(B)为B的方差。
根据X1和X1、X1和X2、X1和X3、X1和X4、X2和X2、X2和X3、X2和X4、X3和X3、X3和X4以及X4和X4的相关性系数得到的X1、X2、X3和X4之间的相关性系数矩阵R2如下所示:
X1、X2、X3和X4之间的相关性系数矩阵
X<sub>1</sub> X<sub>2</sub> X<sub>3</sub> X<sub>4</sub>
X<sub>1</sub> r<sub>2</sub>(X<sub>1</sub>,X<sub>1</sub>) r<sub>2</sub>(X<sub>1</sub>,X<sub>2</sub>) r<sub>2</sub>(X<sub>1</sub>,X<sub>3</sub>) r<sub>2</sub>(X<sub>1</sub>,X<sub>4</sub>)
X<sub>2</sub> r<sub>2</sub>(X<sub>1</sub>,X<sub>2</sub>) r<sub>2</sub>(X<sub>2</sub>,X<sub>2</sub>) r<sub>2</sub>(X<sub>2</sub>,X<sub>3</sub>) r<sub>2</sub>(X<sub>2</sub>,X<sub>4</sub>)
X<sub>3</sub> r<sub>2</sub>(X<sub>1</sub>,X<sub>3</sub>) r<sub>2</sub>(X<sub>2</sub>,X<sub>3</sub>) r<sub>2</sub>(X<sub>3</sub>,X<sub>3</sub>) r<sub>2</sub>(X<sub>3</sub>,X<sub>4</sub>)
X<sub>4</sub> r<sub>1</sub>(X<sub>1</sub>,X<sub>4</sub>) r<sub>2</sub>(X<sub>2</sub>,X<sub>4</sub>) r<sub>2</sub>(X<sub>3</sub>,X<sub>4</sub>) r<sub>2</sub>(X<sub>4</sub>,X<sub>4</sub>)
其中,r2(X1,X1)为X1和X1的相关性系数,r2(X1,X2)为X1和X2的相关性系数,r2(X1,X3)为X1和X3的相关性系数,r2(X1,X4)为X1和X4的相关性系数,r2(X2,X2)为X2和X2的相关性系数,r2(X2,X3)为X2和X3的相关性系数,r2(X2,X4)为X2和X4的相关性系数,r2(X3,X3)为X3和X3的相关性系数,r2(X3,X4)为X3和X4的相关性系数,r2(X4,X4)为X4和X4的相关性系数。
其次,计算相关性系数矩阵R2的逆矩阵R2 -1
最后,根据逆矩阵R2 -1计算X1和X2的偏相关系数。
以逆矩阵R2 -1为如下所示矩阵为例,可以根据公式
Figure BDA0002130462620000182
计算X1和X3的偏相关系数。
其中,R2 -1(1,1)为逆矩阵R2 -1中第一行第一列的元素的值,R2 -1(1,2)为逆矩阵R2 -1中第一行第二列的元素的值,R2 -1(1,3)为逆矩阵R2 -1中第一行第三列的元素的值,R2 -1(1,4)为逆矩阵R2 -1中第一行第四列的元素的值,R2 -1(2,1)为逆矩阵R2 -1中第二行第一列的元素的值,R2 -1(2,2)为逆矩阵R2 -1中第二行第二列的元素的值,R2 -1(2,3)为逆矩阵R2 -1中第二行第三列的元素的值,R2 -1(2,4)为逆矩阵R2 -1中第二行第四列的元素的值,R2 -1(3,1)为逆矩阵R2 -1中第三行第一列的元素的值,R2 -1(3,2)为逆矩阵R2 -1中第三行第二列的元素的值,R2 -1(3,3)为逆矩阵R2 -1中第三行第三列的元素的值,R2 -1(3,4)为逆矩阵R2 -1中第三行第四列的元素的值,R2 -1(4,1)为逆矩阵R2 -1中第四行第一列的元素的值,R2 -1(4,2)为逆矩阵R2 -1中第四行第二列的元素的值,R2 -1(4,3)为逆矩阵R2 -1中第四行第三列的元素的值,R2 -1(4,4)为逆矩阵R2 -1中第四行第四列的元素的值。
逆矩阵R2 -1
X<sub>1</sub> X<sub>2</sub> X<sub>3</sub> X<sub>4</sub>
X<sub>1</sub> R<sub>2</sub><sup>-1</sup>(1,1) R<sub>2</sub><sup>-1</sup>(1,2) R<sub>2</sub><sup>-1</sup>(1,3) R<sub>2</sub><sup>-1</sup>(1,4)
X<sub>2</sub> R<sub>2</sub><sup>-1</sup>(2,1) R<sub>2</sub><sup>-1</sup>(2,2) R<sub>2</sub><sup>-1</sup>(2,3) R<sub>2</sub><sup>-1</sup>(2,4)
X<sub>3</sub> R<sub>2</sub><sup>-1</sup>(3,1) R<sub>2</sub><sup>-1</sup>(3,2) R<sub>2</sub><sup>-1</sup>(3,3) R<sub>2</sub><sup>-1</sup>(3,4)
X<sub>4</sub> R<sub>2</sub><sup>-1</sup>(4,1) R<sub>2</sub><sup>-1</sup>(4,2) R<sub>2</sub><sup>-1</sup>(4,3) R<sub>2</sub><sup>-1</sup>(4,4)
步骤28:根据X1和X3的偏相关性系数,计算X1和X3之间的检验统计量。
一种可能的实现方式,根据公式
Figure BDA0002130462620000191
计算X1和X3之间的检验统计量。
其中,r2’为X1和X3的偏相关性系数,n为数据列的数量(第一条件为{X2,X4}时,数据列有X1、X2、X3和X4四列,因此,此时n为4),k为第一条件中元素的个数(此时第一条件为{X2,X4},因此k为2,n-k-1为统计的自由度(此时统计的自由度为1)。
步骤29:根据k、统计自由度以及检验统计量确定第一条件下X1和X3的条件独立性。
一种可能的实现方式,在显著性水平为第一阈值的表中,查询k以及统计自由度对应的检验统计量t2’的值,若t2大于等于t2’,则确定在第一条件为{X2,X4}时,X1和X3独立,可以表示为X1⊥X3|{X2,X4};若t2小于t2’,则确定在第一条件为{X2,X4}时,X1和X3不独立,可以表示为
Figure BDA0002130462620000192
示例性的,以第一阈值为0.05,k为2,统计自由度为1为例,若在显著性水平为0.05的表中,查询到k为2,统计自由度为1时对应的检验统计量t1’=21,若根据检验统计量公式计算的检验统计量t2=30,则确定X1⊥X3|{X2,X4},若根据检验统计量公式计算的检验统计量t1=12,则确定
Figure BDA0002130462620000193
步骤30:若第一条件为{X2,X4}时,X1和X3独立,删除完全图中X1和X3之间的连线。
步骤31:根据上述步骤27-步骤29确定第一条件为{X1,X4}时,X2和X3的条件独立性。
步骤32:若第一条件为{X1,X4}时,X2和X3独立,删除完全图中X2和X3之间的连线。
步骤33:根据上述步骤27-步骤29确定第一条件为{X1,X2}时,X3和X4的条件独立性。
步骤34:若第一条件为{X1,X2}时,X3和X4独立,删除完全图中X3和X4之间的连线。
需要说明的是,本申请实施例不限制步骤27-步骤30、步骤31-步骤32以及步骤33-步骤34之间的执行顺序。例如:可以先执行步骤27-步骤30,再执行步骤31-步骤32,最后执行步骤33-步骤34;也可以先执行步骤31-步骤32,再执行步骤33-步骤34,最后执行步骤27-步骤30;还可以先执行步骤33-步骤34,再执行步骤27-步骤30,最后执行步骤31-步骤32。
需要说明的是,若执行步骤1-步骤34后得到的中间因果关系图中,有与四个或四个以上的节点连接的节点,则确定第一条件包括三个元素时,步骤34后得到的中间因果关系图中相连接的两个节点的条件独立性,该相连接的两个节点中,有至少一个节点与四个或四个以上的节点连接,其中,确定第一条件包括三个元素时,步骤34后得到的中间因果关系图中相连接的两个节点的条件独立性的方法可以参考步骤27-步骤34的描述,不予赘述。若执行步骤1-步骤34后得到的中间因果关系图中,没有与四个或四个以上的节点连接的节点,则执行步骤35。
若第一条件为{X2,X4}时,X1和X3不独立,第一条件为{X1,X4}时,X2和X3不独立,第一条件为{X1,X2}时,X3和X4不独立,则执行步骤27-步骤34后,得到的中间因果关系图如图8中的(c)所示。
图8中的(c)中,没有与四个或四个以上的节点连接的节点,因此,此时执行步骤35。
最后,根据不具备条件条件独立性的两个节点的因果关系,将步骤34后得到的中间因果关系图中不具备条件条件独立性的两个节点之间的连线更新为因果关系边。
步骤35:根据X1和X3、X2和X3、以及X3和X4的因果关系,将X1和X3、X2和X3、以及X3和X4之间的连线更新为因果关系边。
需要说明的是,对于任意三个以有向因果边相连接的三个节点X、Y和Z,其因果关系可以为图9中的四种因果关系之一:图9中的(a)中,X为Z的原因节点,Z为Y的原因节点。图9中的(b)中,Y为Z的原因节点,Z为X的原因节点。图9中的(c)中,Z为X的原因节点,Z为Y的原因节点。图9中的(d)中,X为Z的原因节点,Y为Z的原因节点。
图9所示的因果关系可以满足以下条件独立的特征:
1、Cascade结构:若A->B->C(图9中的(a)所示的因果关系),其对应的条件独立特征为A⊥C|{B}以及
Figure BDA0002130462620000201
2、Common parent结构:若A<-B->C(图9中的(c)所示的因果关系),其对应的条件独立特征为A⊥C|{B}以及
Figure BDA0002130462620000202
3、V-structure:若A->B<-C(图9中的(d)所示的因果关系),其对应的条件独立特征为A⊥C|{}以及
Figure BDA0002130462620000203
对比Cascade结构、Common parent结构以及V-structure的条件独立性特征,V-structure的条件独立性特征与Cascade结构以及Common parent结构的条件独立性特征不同,因此,可以通过在步骤34后得到的中间因果关系图中寻找所有相连接的三个节点,并根据相连接的三个节点的条件独立性,确定连接三个节点的因果关系边的类型。例如,若有相连接的三个节点A、B和C,其条件独立特征为A⊥C|{}以及
Figure BDA0002130462620000204
时,可以确定A、B和C的因果关系为A->B<-C,即A和B通过有向因果边连接,该有向因果边从A指向B,B和C通过有向因果边连接,该有向因果边从C指向B。又例如,若有相连接的三个节点A、B和C,其条件独立特征为A⊥C|{B}以及
Figure BDA0002130462620000205
时,不确定A、B和C的因果关系,即A和B通过无向因果边连接,B和C也通过无向因果边连接。
示例性的,以图8中的(c)所示的中间因果关系图为例,图8中的(c)中相连接的三个节点有X1-X3-X4,X1-X3-X2,以及X2-X3-X4。对于X1-X3-X4,在上述步骤1-步骤14中计算出
Figure BDA0002130462620000206
在上述步骤15-步骤26中计算出
Figure BDA0002130462620000207
因此,X1-X3-X4的因果关系不是V-structure,X1、X3和X4之间的因果关系边为无向因果边。对于X1-X3-X2,在上述步骤1-步骤14中计算出X1⊥X2|{},且X3未在X1和X2对应的第一条件中,因此,X1-X3-X2的因果关系不是V-structure,X1、X3和X2之间的因果关系边为无向因果边。对于X2-X3-X4,在上述步骤1-步骤14中计算出
Figure BDA0002130462620000211
在上述步骤15-步骤26中计算出X2⊥X4|{X3},因此,X2-X3-X4的因果关系不是V-structure,X1、X3和X4之间的因果关系边为无向因果边。因此,步骤35后得到的微服务系统的因果关系图如图8中的(c)所示。
基于图3所示实施例的第二种实现场景,可以根据数据集计算第一条件下相连接的两个节点的相关性系数,根据相关性系数确定所述两个节点的条件独立性,删除完全图中具备条件独立性的两个节点之间的连线,并根据不具备条件独立性的两个节点的因果关系,将完全图中不具备条件独立性的两个节点之间的连线更新为因果关系边,以便在微服务系统的性能指标出现异常,可以根据异常的性能指标以及该因果关系图确定异常性能指标的根因链路,进而可以确定导致异常性能指标性能异常的根因。
如图10所示,为本申请实施例提供的又一种微服务异常分析方法,该微服务异常分析方法包括步骤1001-步骤1007。
步骤1001:获取数据集。
步骤1002:根据该数据集得到完全图。
其中,步骤1001和步骤1002的具体过程可以参考上述步骤301-步骤302中的描述,此处不予赘述。
步骤1003:根据数据集计算第一条件下相连接的两个节点的相关性系数。
步骤1004:根据相关性系数确定所述两个节点的条件独立性。
步骤1005:删除完全图中具备条件独立性的两个节点之间的连线,以及,根据不具备条件独立性的两个节点的因果关系,将完全图中不具备条件独立性的两个节点之间的连线更新为因果关系边。
其中,步骤1003-步骤1005的具体过程可以参考上述步骤1-步骤35中的描述,此处不予赘述。
步骤1006:获取第一性能指标。
步骤1007:以因果关系图中第一性能指标对应的节点为起始节点,根据因果关系图中因果关系边的类型以及预设追溯规则,确定第一性能指标的根因链路。
其中,步骤1006-步骤1005的具体过程可以参考上述步骤305-步骤306中的描述,此处不予赘述。
下面通过三个示例,对本申请实施例提供的微服务异常分析方法的技术效果进行说明。
示例1:以数据集包括的微服务系统1的性能指标有前端服务的网络传入字节数(front-end_1/NET_Input、路由服务的80端口的每秒的平均请求响应时间edge-router:80/request_duration_seconds_bucket)、前端服务的CPU使用率(front-end_1/CPU_usage)、路由服务的80端口的每秒的平均请求数量(edge-router:80/request_duration_seconds_count)、前端服务的文件系统使用率(front-end_1/FS_usage)、前端服务的内存缓存使用率(front-end_1/Cached_MEM_usage)、前端服务的网络输出字节数(front-end_1/NET_Output)、前端服务的内存使用率(front-end_1/MEM_usage)、时间戳或系统时间(timestamp)为例。
根据微服务监控系统1监控的上述性能指标的值,执行步骤1001-步骤1005后可以得到如图11所示的微服务系统1因果关系图。后续,在微服务监控系统1监控微服务系统1的性能指标的过程中,对微服务系统1注入以下故障:提高CPU的负载、将内存使用率提高至100%以及阻塞输入/输出(Input/Output,I/O)。
对微服务系统1注入上述故障后,导致性能指标request_duration_seconds_bucket异常,即第一性能指标为request_duration_seconds_bucket。执行步骤1006后可以得到如下6条根因链路,其中,下述根因链路3和根因链路6中的根因节点为front-end_1/CPU_usage,即通过本申请实施例提供的微服务异常分析方法可以找到引起微服务系统性能异常的根因。
根因链路1:
front-end_1/NET_Input->edge-router:80/request_duration_seconds_bucket。
根因链路2:
front-end_1/NET_Output->edge-router:80/request_duration_seconds_bucket。
根因链路3:
front-end_1/CPU_usage->edge-router:80/request_duration_seconds_bucket。
根因链路4:
front-end_1/NET_Input->edge-router:80/request_duration_seconds_count->edge-router:80/request_duration_seconds_bucket。
根因链路5:
front-end_1/NET_Output->edge-router:80/request_duration_seconds_count->edge-router:80/reques t_duration_seconds_bucket。
根因链路6:
front-end_1/CPU_usage->edge-router:80/request_duration_seconds_count->edge-router:80/request_duration_seconds_bucket。
示例2:以数据集包括的微服务系统2的性能指标有:微服务bono的文件系统路径为/var/lib/kubelet_used的虚拟文件系统大小(bono.vfs.fs.size[/var/lib/kubelet_used])、微服务bono的1分钟内的CPU平均工作负载(bono_system.cpu.load[percpu_avg1])、微服务bono的文件系统路径为/var/lib/rancher/volumes_pfree的虚拟文件系统的大小(bono.vsf.fs.size[/var/lib/rancher/volumes_pfree])、微服务bono的文件系统路径为/var/lib/rancher/volumes_used的虚拟文件系统的大小(bono.vsf.fs.size[/var/lib/rancher/volumes_used])、微服务bono的文件系统路径为/var/lib/kubelet_free的虚拟文件系统的大小(bono.vsf.fs.size[/var/lib/kubelet_free])、微服务bono的文件系统路径为/_pfree的虚拟文件系统的大小(bono.vsf.fs.size[/_pfree])、微服务bono的5分钟内的CPU平均工作负载(bono_system.cpu.load[percpu_avg5])、微服务bono的文件系统路径为/var/lib/kubelet_pfree的虚拟文件系统的大小(bono.vsf.fs.size[/var/lib/kubelet_pfree])、微服务bono的文件系统路径为/var/lib/docker/aufs_Pfree的虚拟文件系统的大小(bono.vsf.fs.size[/var/lib/docker/aufs_Pfree])、微服务bono的用户进程的CPU使用率(bono_system.cpu.util[_user])、微服务bono的文件系统路径为/_used的虚拟文件系统的大小(bono_vfs.fs.size[/_used])、微服务sprout的可用的虚拟内存大小(sprout_vm.memory.size[available])、微服务bono的文件系统路径为/var/lib/docker/aufs_used的虚拟文件系统的大小(bono_vfs.fs.size[/var/lib/docker/aufs_used])、微服务bono的I/O等待进程的CPU使用率bono_system.cpu.util[_iowait])、微服务bono的进程数量(bono_proc.num[])、微服务bono的15分钟内的CPU平均工作负载(bono_system.cpu.load[percpu_avg15])、微服务bono的文件系统路径为/var/lib/rancher/volumes_pfree的虚拟文件系统的大小(bono.vsf.fs.size[/var/lib/rancher/volumes_pfree])、微服务bono的系统进程的CPU使用率(bono_system.cpu.util[_system])、系统时间(clock)、微服务bono的空闲进程的CPU使用率(bono_system.cpu.util[_idle])、微服务bono的CPU每秒的上下文切换次数(bono_system.cpu.switches)、系统环境压力级别(workload level)、微服务bono的软中断进程的CPU使用率(bono_system.cpu.util[_softirq])、微服务bono的CPU每秒的中断次数(bono_system.cup.intr)为例。
根据微服务监控系统2监控的上述性能指标的值,执行步骤1001-步骤1005后可以得到如图12所示的微服务系统2因果关系图。后续,在微服务监控系统2监控微服务系统2的性能指标的过程中,对微服务系统2注入以下故障:提高CPU的负载、将内存使用率提高至100%以及阻塞I/O。
对微服务系统2注入上述故障后,导致性能指标workload level异常,即第一性能指标为workload level。执行步骤1006后可以得到如下18条根因链路,其中,下述根因链路1、根因链路2、根因链路4、根因链路5和根因链路12包括节点bono_system.cpu.util[_softirq]和节点bono_system.cpu.util[_iowait],根因链路6的根因节点为bono_vm.memory.size[available],根因链路7包括节点bono_system.cpu.load[percpu_avg1]、节点bono_system.cpu.load[percpu_avg5]以及节点bono_system.cpu.load[percpu_avg15],根因链路8、根因链路9、根因链路11、根因链路13、根因链路15和根因链路16中包括节点bono_system.cpu.util[_softirq]、节点bono_system.cpu.util[_iowait]、节点bono_system.cpu.load[percpu_avg5]以及节点bono_system.cpu.load[percpu_avg15],根因链路10和根因链路14中包括节点bono_system.cpu.load[percpu_avg5]以及节点bono_system.cpu.load[percpu_avg15],根因链路17和根因链路18中包括节点bono_vm.memory.size[available]、节点bono_system.cpu.load[percpu_avg5]以及节点bono_system.cpu.load[percpu_avg15],即通过本申请实施例提供的微服务异常分析方法可以找到引起微服务系统性能异常的根因。
根因链路1:
bono_system.cpu.util[_softirq]->bono_system.cpu.util[_iowait]->bono_vfs.fs.size[/_pfree]->bono_vfs.fs.size[/_used]->bono_vfs.fs.size[/var/lib/docker/aufs_used]->clock->workload level。
根因链路2:
bono_system.cpu.util[_softirq]->bono_system.cpu.util[_iowait]->bono_vfs.fs.size[/_pfree]->bono_vfs.fs.size[/var/lib/kubelet_pfree]->bono_vfs.fs.size[/_pfree]->bono_vfs.fs.size[/_used]->bono_vfs.f s.size[/var/lib/docker/aufs_used]->clock->workload level。
根因链路3:
bono_vfs.fs.size[/var/lib/docker/aufs_pfree]->bono_vfs.fs.size[/var/lib/rancher/volumes_pfree]->bo no_vfs.fs.size[/var/lib/kubelet_pfree]->bono_vfs.fs.size[/_pfree]->bono_vfs.fs.size[/_used]->bono_vfs.fs.size[/var/lib/docker/aufs_used]->clock->workload level。
根因链路4:
bono_system.cpu.util[_softirq]->bono_system.cpu.util[_iowait]->bono_vfs.fs.size[/_pfree]->bono_vfs.fs.size[/var/lib/kubelet_pfree]->bono_vfs.fs.size[/var/lib/rancher/volumes_pfree]->bono_vfs.fs.s ize[/var/lib/kubelet_pfree]->bono_vfs.fs.size[/_pfree]->bono_vfs.fs.size[/_used]->bono_vfs.fs.size[/var/lib/docker/aufs_used]->clock->workload level。
根因链路5:
bono_system.cpu.util[_softirq]->bono_system.cpu.util[_iowait]->bono_vfs.fs.size[/_pfree]->bono_vfs.fs.size[/var/lib/kubelet_pfree]->bono_vfs.fs.size[/var/lib/rancher/volumes_pfree]->bono_vfs.fs.s ize[/var/lib/docker/aufs_pfree]->bono_vfs.fs.size[/_used]->bono_vfs.fs.size[/var/lib/docker/aufs_us ed]->clock->workload level。
根因链路6:bono_vm.memory.size[available]->clock->workload level。
根因链路7:
bono_system.cpu.load[percpu_avg1]->bono_system.cpu.load[percpu_avg5]->bono_system.cpu.loa d[percpu_avg15]->workload level。
根因链路8:
bono_system.cpu.util[_softirq]->bono_system.cpu.util[_iowait]->bono_vfs.fs.size[/_pfree]->bono_s ystem.cpu.load[percpu_avg5]->bono_system.cpu.load[percpu_avg15]->workload level。
根因链路9:
bono_system.cpu.util[_softirq]->bono_system.cpu.util[_iowait]->bono_vfs.fs.size[/_pfree]->bono_vfs.fs.size[/var/lib/kubelet_pfree]->bono_vfs.fs.size[/_pfree]->bono_system.cpu.load[percpu_avg5]->bono_system.cpu.load[percpu_avg15]->workload level。
根因链路10:
bono_vfs.fs.size[/var/lib/docker/aufs_pfree]->bono_vfs.fs.size[/var/lib/rancher/volumes_pfree]->bo no_vfs.fs.size[/var/lib/kubelet_pfree]->bono_vfs.fs.size[/_pfree]->bono_system.cpu.load[percpu_av g5]->bono_system.cpu.load[percpu_avg15]->workload level。
根因链路11:
bono_system.cpu.util[_softirq]->bono_system.cpu.util[_iowait]->bono_vfs.fs.size[/_pfree]->bono_vfs.fs.size[/var/lib/kubelet_pfree]->bono_vfs.fs.size[/var/lib/rancher/volumes_pfree]->bono_vfs.fs.s ize[/var/lib/kubelet_pfree]->bono_vfs.fs.size[/_pfree]->bono_system.cpu.load[percpu_avg5]->bono_system.cpu.load[percpu_avg15]->workload level。
根因链路12:
bono_system.cpu.util[_softirq]->bono_system.cpu.util[_iowait]->bono_vfs.fs.size[/_pfree]->bono_vfs.fs.size[/_used]->bono_vfs.fs.size[/var/lib/docker/aufs_used]->clock->bono_system.cpu.load[per cpu_avg5]->bono_system.cpu.load[percpu_avg15]->workload level。
根因链路13:
bono_system.cpu.util[_softirq]->bono_system.cpu.util[_iowait]->bono_vfs.fs.size[/_pfree]->bono_vfs.fs.size[/var/lib/kubelet_pfree]->bono_vfs.fs.size[/_pfree]->bono_vfs.fs.size[/_used]->bono_vfs.f s.size[/var/lib/docker/aufs_used]->clock->bono_system.cpu.load[percpu_avg5]->bono_system.cpu.l oad[percpu_avg15]->workload level。
根因链路14:
bono_vfs.fs.size[/var/lib/docker/aufs_pfree]->bono_vfs.fs.size[/var/lib/rancher/volumes_pfree]->bo no_vfs.fs.size[/var/lib/kubelet_pfree]->bono_vfs.fs.size[/_pfree]->bono_vfs.fs.size[/_used]->bono_vfs.fs.size[/var/lib/docker/aufs_used]->clock->bono_system.cpu.load[percpu_avg5]->bono_system.cpu.load[percpu_avg15]->workload level。
根因链路15:
bono_system.cpu.util[_softirq]->bono_system.cpu.util[_iowait]->bono_vfs.fs.size[/_pfree]->bono_vfs.fs.size[/var/lib/kubelet_pfree]->bono_vfs.fs.size[/var/lib/rancher/volumes_pfree]->bono_vfs.fs.s ize[/var/lib/kubelet_pfree]->bono_vfs.fs.size[/_pfree]->bono_vfs.fs.size[/_used]->bono_vfs.fs.size[/var/lib/docker/aufs_used]->clock->bono_system.cpu.load[percpu_avg5]->bono_system.cpu.load[pe rcpu_avg15]->workload level。
根因链路16:
bono_system.cpu.util[_softirq]->bono_system.cpu.util[_iowait]->bono_vfs.fs.size[/_pfree]->bono_vfs.fs.size[/var/lib/kubelet_pfree]->bono_vfs.fs.size[/var/lib/rancher/volumes_pfree]->bono_vfs.fs.s ize[/var/lib/docker/aufs_pfree]->bono_vfs.fs.size[/_used]->bono_vfs.fs.size[/var/lib/docker/aufs_us ed]->clock->bono_system.cpu.load[percpu_avg5]->bono_system.cpu.load[percpu_avg15]->worklo ad level。
根因链路17:
bono_vm.memory.size[available]->clock->bono_system.cpu.load[percpu_avg5]->bono_system.cpu.load[percpu_avg15]->workload level。
根因链路18:
bono_vm.memory.size[available]->bono_system.cpu.load[percpu_avg15]->workload level。
示例3:以数据集包括的性能指标有X1-X7为例,X1-X7的因果关系如下:
X1=0.8*X3+E(X1);
X2=0.6*X1+E(X2);
X3=1.5*X5+E(X3);
X4=E(X4);
X5=-1.2*X6+1.3*X7+1.3*X4+E(X5);
X6=E(X6);
X7=E(X7);
其中,X1-X7满足N(0,x)正态分布,E(X1)-E(X7)为随机函数。上述X1-X7的因果关系对应的因果关系图如图13所示。
可以根据上述X1-X7的因果关系为X1-X7取多个值,X1-X7的具体取值如表4所示。
表4
Figure BDA0002130462620000251
Figure BDA0002130462620000261
根据表4所示的X1-X7的取值,执行步骤1001-步骤1005后可以得到与图13所示的因果关系图相同的因果关系图,因此本申请实施例提供的微服务异常分析方法可以正确识别X1-X7的因果关系。
上述微服务异常分析装置为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法操作,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对微服务异常分析装置进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
比如,以采用集成的方式划分各个功能模块的情况下,图14示出了一种微服务异常分析装置140的结构示意图。该微服务异常分析装置140包括:获取单元1401、处理单元1402以及确定单元1403。
获取单元1401,用于获取数据集,其中,该数据集包括微服务系统的M个性能指标以及该M个性能指标的值,M为大于1的正整数。
处理单元1402,用于根据该数据集得到完全图,其中,该完全图包括与该M个性能指标对应的M个节点,该M个节点中每两个节点相互连接。
确定单元1403,用于根据该M个性能指标的值确定该完全图中相连接的两个节点之间的条件独立性,其中,该两个节点之间的条件独立性根据第一条件下该两个节点的相关性系数确定,该两个节点包括第一节点和第二节点,该第一条件包括该M个节点中除该第二节点之外与该第一节点连接的N个节点,N=0,1,…M。
处理单元1402,还用于根据该完全图中相连接的两个节点之间的条件独立性,得到该微服务系统的因果关系图,其中,该因果关系图包括该M个节点以及不具备条件独立性的两个节点之间的因果关系边。
可选的,获取单元1401,还用于获取第一性能指标,其中,该第一性能指标为该M个性能指标中的任一性能指标,该第一性能指标的值未在该第一性能指标的正常估算范围值内;确定单元1403,还用于以该因果关系图中该第一性能指标对应的节点为起始节点,根据该因果关系图中因果关系边的类型以及预设追溯规则,确定该第一性能指标的根因链路,其中,该根因链路包括影响该起始节点的节点以及该起始节点。
可选的,该影响该起始节点的节点包括:根因节点以及该根因节点影响的中间节点;该因果关系图中不存在影响该根因节点的节点。
可选的,该因果关系边的类型包括无向因果边或者有向因果边,该预设追溯规则包括:若该起始节点与第三节点之间存在无向因果边、且第三节点与第四节点之间存在无向因果边,则确定第三节点为中间节点;若因果关系图中不存在影响第四节点的节点,则将第四节点确定为根因节点;或者,若该起始节点与第三节点之间存在无向因果边、且第三节点与第四节点之间存在有向因果边,且该有向因果边从该第四节点指向该第三节点,则确定第三节点为中间节点;若因果关系图中不存在影响第四节点的节点,则将第四节点确定为根因节点;或者,若该起始节点与第三节点之间存在有向因果边,且第三节点与第四节点之间存在无向因果边,且该有向因果边从该第三节点指向该起始节点,则确定第三节点为中间节点;若因果关系图中不存在影响第四节点的节点,则将第四节点确定为根因节点;或者,若该起始节点与第三节点之间存在有向因果边,且该有向因果边从该第三节点指向该起始节点,且第三节点与第四节点之间存在有向因果边,且该有向因果边从该第四节点指向该第三节点,则确定第三节点为中间节点;若因果关系图中不存在影响第四节点的节点,则将第四节点确定为根因节点。
可选的,该无向因果边包括存在第一潜在变量的无向因果边以及不存在该第一潜在变量的无向因果边,其中,该第一潜在变量为该M个性能指标之外的性能指标,该第一潜在变量影响与该无向因果边连接的两个节点之间的条件独立性。
可选的,该有向因果边包括存在第二潜在变量的有向因果边以及不存在该第二潜在变量的有向因果边,其中,该第二潜在变量为该M个性能指标之外的性能指标,该第二潜在变量影响与该有向因果边连接的两个节点之间的条件独立性。
可选的,确定单元1403,具体用于根据该数据集计算该第一条件下相连接的两个节点的相关性系数;确定单元1403,还具体用于根据该相关性系数确定该两个节点的条件独立性。
可选的,处理单元1402,具体用于删除该完全图中具备条件独立性的两个节点之间的连线,以及,根据不具备条件独立性的两个节点的因果关系,将该完全图中不具备条件独立性的两个节点之间的连线更新为因果关系边。
可选的,获取单元1401,具体用于获取一段时间内微服务系统的多个性能指标以及该多个性能指标的取值;获取单元1401,还具体用于去除该多个性能指标的取值中的空值,以及,去除该一段时间内取值为固定值的性能指标及其对应的取值,得到该数据集。
其中,上述方法实施例涉及的各操作的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
在本实施例中,该微服务异常分析装置140以采用集成的方式划分各个功能模块的形式来呈现。这里的“模块”可以指特定ASIC,电路,执行一个或多个软件或固件程序的处理器和存储器,集成逻辑电路,和/或其他可以提供上述功能的器件。在一个简单的实施例中,本领域的技术人员可以想到该微服务异常分析装置140可以采用图2所示的形式。
比如,图2中的处理器201可以通过调用存储器203中存储的计算机执行指令,使得微服务异常分析装置140执行上述方法实施例中的微服务异常分析方法。
示例性的,图14中的获取单元1401、处理单元1402和确定单元1403的功能/实现过程可以通过图2中的处理器201调用存储器203中存储的计算机执行指令来实现。
由于本实施例提供的微服务异常分析装置140可执行上述的微服务异常分析方法,因此其所能获得的技术效果可参考上述方法实施例,在此不再赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看所述附图、公开内容、以及所附权利要求书,可理解并实现所述公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (21)

1.一种微服务异常分析方法,其特征在于,所述方法包括:
获取数据集,其中,所述数据集包括微服务系统的M个性能指标以及所述M个性能指标的值,M为大于1的正整数;
根据所述数据集得到完全图,其中,所述完全图包括与所述M个性能指标对应的M个节点,所述M个节点中每两个节点相互连接;
根据所述M个性能指标的值确定所述完全图中相连接的两个节点之间的条件独立性,其中,所述两个节点之间的条件独立性根据第一条件下所述两个节点的相关性系数确定,所述两个节点包括第一节点和第二节点,所述第一条件包括所述M个节点中除所述第二节点之外与所述第一节点连接的N个节点,N=0,1,…M;
根据所述完全图中相连接的两个节点之间的条件独立性,得到所述微服务系统的因果关系图,其中,所述因果关系图包括所述M个节点以及不具备条件独立性的两个节点之间的因果关系边。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取第一性能指标,其中,所述第一性能指标为所述M个性能指标中的任一性能指标,所述第一性能指标的值未在所述第一性能指标的正常估算范围值内;
以所述因果关系图中所述第一性能指标对应的节点为起始节点,根据所述因果关系图中因果关系边的类型以及预设追溯规则,确定所述第一性能指标的根因链路,其中,所述根因链路包括影响所述起始节点的节点以及所述起始节点。
3.根据权利要求2所述的方法,其特征在于,所述影响所述起始节点的节点包括:根因节点以及所述根因节点影响的中间节点;所述因果关系图中不存在影响所述根因节点的节点。
4.根据权利要求2或3所述的方法,其特征在于,所述因果关系边的类型包括无向因果边或者有向因果边,所述预设追溯规则包括:
若所述起始节点与第三节点之间存在无向因果边、且第三节点与第四节点之间存在无向因果边,则确定第三节点为中间节点;若因果关系图中不存在影响第四节点的节点,则将第四节点确定为根因节点;或者,
若所述起始节点与第三节点之间存在无向因果边、且第三节点与第四节点之间存在有向因果边,且所述有向因果边从所述第四节点指向所述第三节点,则确定第三节点为中间节点;若因果关系图中不存在影响第四节点的节点,则将第四节点确定为根因节点;或者,
若所述起始节点与第三节点之间存在有向因果边,且第三节点与第四节点之间存在无向因果边,且所述有向因果边从所述第三节点指向所述起始节点,则确定第三节点为中间节点;若因果关系图中不存在影响第四节点的节点,则将第四节点确定为根因节点;或者,
若所述起始节点与第三节点之间存在有向因果边,且所述有向因果边从所述第三节点指向所述起始节点,且第三节点与第四节点之间存在有向因果边,且所述有向因果边从所述第四节点指向所述第三节点,则确定第三节点为中间节点;若因果关系图中不存在影响第四节点的节点,则将第四节点确定为根因节点。
5.根据权利要求4所述的方法,其特征在于,
所述无向因果边包括存在第一潜在变量的无向因果边以及不存在所述第一潜在变量的无向因果边,其中,所述第一潜在变量为所述M个性能指标之外的性能指标,所述第一潜在变量影响与所述无向因果边连接的两个节点之间的条件独立性。
6.根据权利要求4或5所述的方法,其特征在于,
所述有向因果边包括存在第二潜在变量的有向因果边以及不存在所述第二潜在变量的有向因果边,其中,所述第二潜在变量为所述M个性能指标之外的性能指标,所述第二潜在变量影响与所述有向因果边连接的两个节点之间的条件独立性。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述根据所述M个性能指标的值确定所述完全图中相连接的两个节点之间的条件独立性,包括:
根据所述数据集计算所述第一条件下相连接的两个节点的相关性系数;
根据所述相关性系数确定所述两个节点的条件独立性。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述根据所述完全图中相连接的两个节点之间的条件独立性,得到所述微服务系统的因果关系图,包括:
删除所述完全图中具备条件独立性的两个节点之间的连线,以及,根据不具备条件独立性的两个节点的因果关系,将所述完全图中不具备条件独立性的两个节点之间的连线更新为因果关系边。
9.根据权利要求1-8任一项所述的方法,其特征在于,所述获取数据集,包括:
获取一段时间内微服务系统的多个性能指标以及所述多个性能指标的取值;
去除所述多个性能指标的取值中的空值,以及,去除所述一段时间内取值为固定值的性能指标及其对应的取值,得到所述数据集。
10.一种微服务异常分析装置,其特征在于,所述微服务异常分析装置包括:获取单元、处理单元以及确定单元;
所述获取单元,用于获取数据集,其中,所述数据集包括微服务系统的M个性能指标以及所述M个性能指标的值,M为大于1的正整数;
所述处理单元,用于根据所述数据集得到完全图,其中,所述完全图包括与所述M个性能指标对应的M个节点,所述M个节点中每两个节点相互连接;
所述确定单元,用于根据所述M个性能指标的值确定所述完全图中相连接的两个节点之间的条件独立性,其中,所述两个节点之间的条件独立性根据第一条件下所述两个节点的相关性系数确定,所述两个节点包括第一节点和第二节点,所述第一条件包括所述M个节点中除所述第二节点之外与所述第一节点连接的N个节点,N=0,1,…M;
所述处理单元,还用于根据所述完全图中相连接的两个节点之间的条件独立性,得到所述微服务系统的因果关系图,其中,所述因果关系图包括所述M个节点以及不具备条件独立性的两个节点之间的因果关系边。
11.根据权利要求10所述的装置,其特征在于,
所述获取单元,还用于获取第一性能指标,其中,所述第一性能指标为所述M个性能指标中的任一性能指标,所述第一性能指标的值未在所述第一性能指标的正常估算范围值内;
所述确定单元,还用于以所述因果关系图中所述第一性能指标对应的节点为起始节点,根据所述因果关系图中因果关系边的类型以及预设追溯规则,确定所述第一性能指标的根因链路,其中,所述根因链路包括影响所述起始节点的节点以及所述起始节点。
12.根据权利要求11所述的装置,其特征在于,所述影响所述起始节点的节点包括:根因节点以及所述根因节点影响的中间节点;所述因果关系图中不存在影响所述根因节点的节点。
13.根据权利要求11或12所述的装置,其特征在于,所述因果关系边的类型包括无向因果边或者有向因果边,所述预设追溯规则包括:
若所述起始节点与第三节点之间存在无向因果边、且第三节点与第四节点之间存在无向因果边,则确定第三节点为中间节点;若因果关系图中不存在影响第四节点的节点,则将第四节点确定为根因节点;或者,
若所述起始节点与第三节点之间存在无向因果边、且第三节点与第四节点之间存在有向因果边,且所述有向因果边从所述第四节点指向所述第三节点,则确定第三节点为中间节点;若因果关系图中不存在影响第四节点的节点,则将第四节点确定为根因节点;或者,
若所述起始节点与第三节点之间存在有向因果边,且第三节点与第四节点之间存在无向因果边,且所述有向因果边从所述第三节点指向所述起始节点,则确定第三节点为中间节点;若因果关系图中不存在影响第四节点的节点,则将第四节点确定为根因节点;或者,
若所述起始节点与第三节点之间存在有向因果边,且所述有向因果边从所述第三节点指向所述起始节点,且第三节点与第四节点之间存在有向因果边,且所述有向因果边从所述第四节点指向所述第三节点,则确定第三节点为中间节点;若因果关系图中不存在影响第四节点的节点,则将第四节点确定为根因节点。
14.根据权利要求13所述的装置,其特征在于,
所述无向因果边包括存在第一潜在变量的无向因果边以及不存在所述第一潜在变量的无向因果边,其中,所述第一潜在变量为所述M个性能指标之外的性能指标,所述第一潜在变量影响与所述无向因果边连接的两个节点之间的条件独立性。
15.根据权利要求13或14所述的装置,其特征在于,
所述有向因果边包括存在第二潜在变量的有向因果边以及不存在所述第二潜在变量的有向因果边,其中,所述第二潜在变量为所述M个性能指标之外的性能指标,所述第二潜在变量影响与所述有向因果边连接的两个节点之间的条件独立性。
16.根据权利要求10-15任一项所述的装置,其特征在于,
所述确定单元,具体用于根据所述数据集计算所述第一条件下相连接的两个节点的相关性系数;
所述确定单元,还具体用于根据所述相关性系数确定所述两个节点的条件独立性。
17.根据权利要求10-16任一项所述的装置,其特征在于,
所述处理单元,具体用于删除所述完全图中具备条件独立性的两个节点之间的连线,以及,根据不具备条件独立性的两个节点的因果关系,将所述完全图中不具备条件独立性的两个节点之间的连线更新为因果关系边。
18.根据权利要求10-17任一项所述的装置,其特征在于,
所述获取单元,具体用于获取一段时间内微服务系统的多个性能指标以及所述多个性能指标的取值;
所述获取单元,还具体用于去除所述多个性能指标的取值中的空值,以及,去除所述一段时间内取值为固定值的性能指标及其对应的取值,得到所述数据集。
19.一种微服务异常分析装置,其特征在于,所述微服务异常分析装置包括:
至少一个处理器,存储器;
所述存储器存储有程序指令,所述程序指令在所述至少一个处理器中执行,以实现如权利要求1-9中任一所述的微服务异常分析方法。
20.一种系统芯片,所述系统芯片应用在微服务异常分析装置中,其特征在于,所述系统芯片包括:
至少一个处理器,程序指令在所述至少一个处理器中执行,以实现如权利要求1-9中任一所述的微服务异常分析方法。
21.一种计算机存储介质,其特征在于,所述计算机可读存储介质中存储有程序指令,所述程序指令运行时,以实现如权利要求1-9中任一所述的微服务异常分析方法。
CN201910636688.5A 2019-07-15 2019-07-15 微服务异常分析方法及装置 Active CN112231187B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910636688.5A CN112231187B (zh) 2019-07-15 2019-07-15 微服务异常分析方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910636688.5A CN112231187B (zh) 2019-07-15 2019-07-15 微服务异常分析方法及装置

Publications (2)

Publication Number Publication Date
CN112231187A true CN112231187A (zh) 2021-01-15
CN112231187B CN112231187B (zh) 2022-07-26

Family

ID=74111134

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910636688.5A Active CN112231187B (zh) 2019-07-15 2019-07-15 微服务异常分析方法及装置

Country Status (1)

Country Link
CN (1) CN112231187B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112882796A (zh) * 2021-02-25 2021-06-01 深信服科技股份有限公司 异常根因分析方法和装置,及存储介质
CN113391943A (zh) * 2021-06-18 2021-09-14 广东工业大学 一种基于因果推断的微服务故障根因定位方法及装置
CN114385451A (zh) * 2022-01-11 2022-04-22 上海鹤优信息科技有限公司 一种故障根因分析方法
CN114579407A (zh) * 2022-05-05 2022-06-03 北京航空航天大学 一种因果关系检验和微服务指标预测报警方法
CN114826718A (zh) * 2022-04-19 2022-07-29 中国人民解放军战略支援部队航天工程大学 一种基于多维度信息的内部网络异常检测方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180121221A1 (en) * 2016-10-28 2018-05-03 ShieldX Networks, Inc. Systems and methods for deploying microservices in a networked microservices system
CN109861858A (zh) * 2019-01-28 2019-06-07 北京大学 微服务系统根因节点的错误排查方法
CN109933452A (zh) * 2019-03-22 2019-06-25 中国科学院软件研究所 一种面向异常传播的微服务智能监测方法
CN109961204A (zh) * 2017-12-26 2019-07-02 中国移动通信集团浙江有限公司 一种微服务架构下业务质量分析方法和系统
US20190215239A1 (en) * 2016-09-19 2019-07-11 Huawei Technologies Co., Ltd. Microservice Configuration Apparatus and Method

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190215239A1 (en) * 2016-09-19 2019-07-11 Huawei Technologies Co., Ltd. Microservice Configuration Apparatus and Method
US20180121221A1 (en) * 2016-10-28 2018-05-03 ShieldX Networks, Inc. Systems and methods for deploying microservices in a networked microservices system
CN109961204A (zh) * 2017-12-26 2019-07-02 中国移动通信集团浙江有限公司 一种微服务架构下业务质量分析方法和系统
CN109861858A (zh) * 2019-01-28 2019-06-07 北京大学 微服务系统根因节点的错误排查方法
CN109933452A (zh) * 2019-03-22 2019-06-25 中国科学院软件研究所 一种面向异常传播的微服务智能监测方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112882796A (zh) * 2021-02-25 2021-06-01 深信服科技股份有限公司 异常根因分析方法和装置,及存储介质
CN112882796B (zh) * 2021-02-25 2024-05-24 深信服科技股份有限公司 异常根因分析方法和装置,及存储介质
CN113391943A (zh) * 2021-06-18 2021-09-14 广东工业大学 一种基于因果推断的微服务故障根因定位方法及装置
CN114385451A (zh) * 2022-01-11 2022-04-22 上海鹤优信息科技有限公司 一种故障根因分析方法
CN114826718A (zh) * 2022-04-19 2022-07-29 中国人民解放军战略支援部队航天工程大学 一种基于多维度信息的内部网络异常检测方法及系统
CN114579407A (zh) * 2022-05-05 2022-06-03 北京航空航天大学 一种因果关系检验和微服务指标预测报警方法
CN114579407B (zh) * 2022-05-05 2022-08-23 北京航空航天大学 一种因果关系检验和微服务指标预测报警方法

Also Published As

Publication number Publication date
CN112231187B (zh) 2022-07-26

Similar Documents

Publication Publication Date Title
CN112231187B (zh) 微服务异常分析方法及装置
US10318366B2 (en) System and method for relationship based root cause recommendation
US10909018B2 (en) System and method for end-to-end application root cause recommendation
US20190065336A1 (en) System and method for predicting application performance for large data size on big data cluster
CN107924360B (zh) 计算系统中的诊断框架
US20180314576A1 (en) Automatic application repair by network device agent
US8473789B2 (en) Memory leak monitoring system and associated methods
WO2013042789A1 (ja) 運用管理装置、運用管理方法、及びプログラム
JP5564941B2 (ja) 障害箇所推定システム、障害箇所推定装置および障害箇所推定方法
EP3692443B1 (en) Application regression detection in computing systems
US10061678B2 (en) Automated validation of database index creation
US10659312B2 (en) Network anomaly detection
US10020982B2 (en) Failure isolation method and management server for failure isolation
US20120185732A1 (en) Method of measuring and diagnosing misbehaviors of software components and resources
US20200099570A1 (en) Cross-domain topological alarm suppression
JP5446894B2 (ja) ネットワーク管理支援システム、ネットワーク管理支援装置、ネットワーク管理支援方法およびプログラム
US9563719B2 (en) Self-monitoring object-oriented applications
US10644971B2 (en) Graph search in structured query language style query
US8275865B2 (en) Methods, systems and computer program products for selecting among alert conditions for resource management systems
US9348721B2 (en) Diagnosing entities associated with software components
EP3642735A1 (en) Query performance degradation analysis timing
WO2017143986A1 (zh) 确定资源指标的方法和装置
US20130173777A1 (en) Mining Execution Pattern For System Performance Diagnostics
US11036561B2 (en) Detecting device utilization imbalances
US9229898B2 (en) Causation isolation using a configuration item metric identified based on event classification

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant