使用跟踪数据在分布式系统中进行自动根因分析

文档序号:54605 发布日期:2021-09-28 浏览:11次 >En<

阅读说明:本技术 使用跟踪数据在分布式系统中进行自动根因分析 (Automated root cause analysis in distributed systems using trace data ) 是由 亚历山大·维德 乔治·卡多索 伊利亚·沙哈特 于 2019-03-04 设计创作,主要内容包括:本发明提供了一种用于识别执行应用时检测到的异常的根因的系统。所述应用包括多个操作。所述系统包括:预处理模块,用于接收包括多个跟踪段的跟踪数据,其中,每个跟踪段记录所述应用的对应操作的多个属性及对应值;信号分离模块,用于将所述多个跟踪段分为多个组,使得所述多个组中的每个组包括具有相同属性及对应值的操作;异常检测模块,用于确定所述多个跟踪数据段中的每个跟踪数据段的异常操作;评分模块,用于计算多个异常得分,其中,每个异常得分表示所述多个组中的每个组内的异常水平;根因识别模块,用于分析所述多个异常得分并根据所述分析识别检测到的异常的根因。(The present invention provides a system for identifying a root cause of an anomaly detected while executing an application. The application includes a plurality of operations. The system comprises: a preprocessing module for receiving trace data comprising a plurality of trace segments, wherein each trace segment records a plurality of attributes and corresponding values of a corresponding operation of the application; a signal separation module to divide the plurality of tracking segments into a plurality of groups such that each of the plurality of groups includes operations having the same attribute and corresponding value; an anomaly detection module to determine an anomalous operation of each of the plurality of trace data segments; a scoring module to calculate a plurality of anomaly scores, wherein each anomaly score represents a level of anomaly within each of the plurality of groups; a root cause identification module to analyze the plurality of anomaly scores and identify a root cause of the detected anomaly from the analysis.)

使用跟踪数据在分布式系统中进行自动根因分析

技术领域

本发明在一些实施例中涉及识别执行应用时检测到的异常的根因,更具体地但不限于,涉及识别执行由分布式系统的多个计算节点联合执行的应用时检测到的异常的根因。

背景技术

软件程序和产品正在不断发展且变得越来越复杂,因为它们需要提供更多的功能、大规模部署、提高性能并且基本上提供的是更高级、更全面的技术方案。

扩展系统和服务以满足这种高需求的最主要途径之一是分布式计算。在分布式计算中,软件应用可以由包括多个计算节点的分布式系统联合执行,这些计算节点可以是相互通信的服务器、网络节点等等。

为支持联合执行而开发和部署的规定、框架、协议和服务也在不断发展和进步,以向计算节点提供改进的联合执行和通信服务。一种这样的框架是微服务架构(Microservices Architecture,MSA)。在引入微服务之后,以前在设计和部署上是单体的应用可以划分为较小的代码段,具体是微服务,这些微服务都能够提供整个服务的某一功能。由于微服务是松耦合实现的且能够相互通信,所以微服务能够高效解耦软件应用的开发和部署。微服务可以进一步部署在容器中,以使微服务与执行微服务的硬件平台无关,从而使微服务非常适合部署在可能包括不同硬件处理元件的分布式系统中。

软件应用开发和部署面临的主要挑战之一是识别和隔离执行应用期间检测到的异常和故障的一个或多个根因的能力。随着软件应用的复杂度不断增加,用于识别根因的根因分析(Root Cause Analysis,RCA)自然而然也变得更加复杂并且需要越来越多的资源。

对于应用可以由多个计算节点并行执行的分布式系统来说,RCA的重要性和复杂度都大幅增加。这是因为,虽然分布式系统由于其分布式特性更容易受到异常和故障的影响,但是跟踪和分析应用的分布式和并行执行大大增加了RCA的难度。

发明内容

本发明实施例的目的是提供一种技术方案,减少或解决传统技术方案中的缺点和问题。

上述和其它目的是通过独立权利要求的主题来实现的。其它有利实施例可以在从属权利要求中找到。

本发明的目的是提供一种技术方案,用于识别执行由分布式系统中的多个计算节点联合执行的应用(特别是由利用微服务进行联合执行的计算节点执行的应用)期间检测到的异常的根因。

根据本发明的第一方面,提供了一种用于识别执行应用时检测到的异常的根因的系统。所述应用包括多个操作。所述系统包括处理电路,所述处理电路包括:

-预处理模块,用于接收包括多个跟踪段(span)的跟踪数据,其中,每个跟踪段记录所述应用的对应操作的多个属性及对应值;

-信号分离模块,用于将所述多个跟踪段分为多个组,使得所述多个组中的每个组包括具有相同属性及对应值的操作;

-异常检测模块,用于确定所述多个跟踪数据段中的每个跟踪数据段的异常操作;

-评分模块,用于计算多个异常得分,其中,每个异常得分表示所述多个组中的每个组内的异常水平;

-根因识别模块,用于分析所述多个异常得分并根据多个异常得分的分析识别检测到的异常的根因。

根据本发明的第二方面,提供了一种用于识别执行应用时检测到的故障的根因的方法。

所述方法包括:

-接收包括多个跟踪段的跟踪数据,其中,每个跟踪段记录所述应用的对应操作的多个属性及对应值;

-将所述多个跟踪段分为多个组,使得所述多个组中的每个组包括具有相同属性及对应值的操作;

-确定所述多个跟踪数据段中的每个跟踪数据段的异常操作;

-计算多个异常得分,其中,每个异常得分表示所述多个组中的每个组内的异常水平;

-分析所述多个异常得分并根据多个异常得分的分析识别检测到的异常的根因。

根据本发明的第三方面,提供了一种具有程序代码的计算机程序。所述程序代码用于执行本发明的第二方面所述的方法。

根据本发明的第四方面,提供了一种包括计算机程序代码指令的计算机可读存储介质。所述计算机程序代码指令可由计算机执行,用于执行本发明的第二方面所述的方法。

根据为所述应用执行所记录的属性及对应值计算到的所述多个异常得分推断所述根因,能够在事先不了解所述应用和执行系统的性质、工作方式和/或执行流程的情况下识别所述根因。另外,所述基于异常得分的根因识别基本上忽略了所述执行系统和/或被执行应用的组件、相互依赖关系、系统度量、健康指标和/或任何其它执行参数,从而使基于异常得分的根因识别具有很高的可扩展性,因为基于异常得分的根因识别可以容易部署来识别实际上能够生成所述跟踪数据的任何系统中检测到的异常的根因。此外,由于与系统和应用的实际工作方式无关,基于异常得分的根因识别几乎不需要定制每个系统和/或每个应用,以便将其部署在执行多样化且复杂度可能很高的应用的多样化系统架构中。而且,基于异常得分的根因识别采用当前可用的一个或多个标准异常检测算法,从而避免需要设计检测异常的新方法。

在所述第一、第二、第三和/或第四方面的一种可选实现方式中,所述系统包括跟踪模块,用于生成所述跟踪段,其中,所述跟踪模块包括跟踪库和多个跟踪服务器。所述跟踪库用于为所述应用处理的每个操作生成一个跟踪段,并将所述跟踪段发送到所述多个跟踪服务器中的至少一个跟踪服务器。所述多个跟踪服务器用于收集所述接收到的跟踪段,并将所述跟踪段发送到所述处理电路。

基于异常得分的根因识别完全依赖于通常可用于采用微服务的当前现有系统中的跟踪数据,使得简单部署用于收集跟踪数据的跟踪模块不需要额外工作和/或资源来开发和/或部署收集和/或产生额外系统和/或应用信息的方法。

在所述第一、第二、第三和/或第四方面的另一种实现方式中,所述根因分析模块用于:

对于每个属性,

-根据具有相同属性值的所有组中的异常,计算每个属性值的多个聚合异常得分;

-计算所述多个聚合异常得分的标准偏差;

-选择所述标准偏差超过阈值的一个或多个属性;

其中,所述根因是根据所选择的一个或多个属性和具有最大聚合异常得分的属性值进行识别的。

采用所述标准偏差来估计和/或识别疑似(可能)根因可以实现简单估计非常准确且需要很少的计算资源,因为异常得分可以简单地按属性值进行分组和聚合。正如预期的那样,当属性值具有为所有属性和所有属性值计算到的均值的高偏差时,该属性值极有可能是检测到的异常的根因。此外,基于标准偏差的根因估计不需要根因推断规则,从而显著减少开发和/或部署所需的工作量和资源,因为这些规则可能需要进行大量工作来按照系统和/或应用开发和调整。

在所述第一、第二、第三和/或第四方面的另一种实现方式中,所述根因分析模块用于:

-计算距离度量,其中,所述距离度量表示所有成对属性值之间的距离;

-使用所述距离度量将聚类算法应用于所述多个属性值,以获得多个属性值集群;

-计算所述多个集群中的一个集群的多个异常得分;

-根据所述多个异常得分和阈值选择一个或多个集群;

其中,所述根因是根据所述选择的一个或多个集群进行识别的。

在所述第一、第二、第三和/或第四方面的另一种实现方式中,所述根因分析模块用于通过以下方式计算所述距离度量:

-构建具有顶点V和边E的图G=(V,E),其中,V包括表示所述多个属性值和所述多个跟踪段组的顶点,E包括表示所述多个属性值和所述多个跟踪段组的顶点之间的边和基于每组的异常得分的边容量;

-计算表示所述多个属性值的成对顶点之间的多个最大流值;

-根据所述多个最大流值计算表示所述多个属性值的所有顶点之间的多个距离;

-从所述多个距离中获取所述距离度量。

在所述第一、第二、第三和/或第四方面的另一种实现方式中,

所述成对属性值之间的多个距离中的每个距离与对应跟踪段组的异常得分成反比,或者

当两个属性值相同时,所述成对属性值之间的多个距离中的每个距离为零,或者

所述成对属性值之间的多个距离中的每个距离与具有非零异常得分的跟踪段组的数量成反比。

使用基于聚类的根因检测来估计和/或识别疑似(可能)根因可以实现准确的估计,以独立于执行系统和/或应用计算到的度量为基础,从而不需要系统和/或应用特有的度量。这可能是非常有利的,因为不需要定制来适应具体系统和/或应用度量,从而使基于聚类的根因具有很高的可扩展性、可移植性和可采用性。此外,使用仅基于为跟踪段计算到的异常得分生成的度量可以实现度量与异常得分之间的高度相关性,从而与估计的根因具有高度相关性。这与可能固有地可用于执行系统和/或被执行应用的度量形成了鲜明对比,这样通常不足以准确地将度量与检测到的异常关联起来,更不用说将度量与疑似根因关联起来。

附图说明

本文只通过举例参考附图描述了本发明的一些实施例。现在详细地具体参考附图,强调指出,所示出的详细情况只是作为示例而且仅仅为了说明性地讨论本发明的实施例。这在这点上,结合附图所作的描述使可以怎样实践本发明的实施例对本领域技术人员变的明显。

在附图中,

图1为本发明一些实施例提供的识别执行由多个计算节点联合执行的应用时检测到的异常的根因的示例性过程的流程图;

图2为本发明一些实施例提供的用于识别执行由多个计算节点联合执行的应用时检测到的异常的根因的示例性系统的示意图;

图3为示例性跟踪段的示意图;

图4为本发明一些实施例提供的执行由多个计算节点联合执行的示例性应用期间生成的记录示例性属性值的示例性跟踪段的示意图;

图5为本发明一些实施例提供的根据执行由多个计算节点联合执行的示例性应用期间生成的记录示例性属性值的跟踪段识别执行该应用时检测到的异常的根因的示例性序列的示意图;

图6为本发明一些实施例提供的根据为跟踪段所记录的属性值计算到的异常得分的标准偏差识别执行由多个计算节点联合执行的应用时检测到的异常的根因的示例性过程的流程图;

图7示出了本发明一些实施例提供的根据为示例性捕获的属性值计算到的标准偏差对执行由多个计算节点联合执行的示例性应用时检测到的异常进行示例性根因检测的图表;

图8为本发明一些实施例提供的根据为捕获的属性值计算到的聚类异常得分识别执行由多个计算节点联合执行的应用时检测到的异常的根因的示例性过程的流程图;

图9A和图9B为本发明一些实施例提供的为执行由多个计算节点联合执行的应用期间生成的示例性跟踪段构建的以产生用于聚类的距离度量的示例性图的示意图。

具体实施方式

本发明在一些实施例中涉及识别执行应用时检测到的异常的根因,更具体地但不限于,涉及识别执行由分布式系统的多个计算节点联合执行的应用时检测到的异常的根因。

根据本发明的一些实施例,提供了用于识别执行应用(特别是由分布式系统的多个计算节点联合执行的应用)期间检测到的异常的根因的方法、系统和计算机程序产品。此外,应用可以由封装在松耦合模块化微服务(部署在计算节点上)中的多个功能组件构成,以简化应用开发和维护。

检测到的异常的根因可以是通过以下方式识别的:根因分析(Root CauseAnalysis,RCA)系统根据对应用进行分布式执行期间在多个计算节点处生成的跟踪数据应用RCA。通过修改微服务以支持、提供和/或生成跟踪数据,跟踪数据可用于当前现有的分布式系统中。

跟踪数据可以包括多个跟踪段(span)(观察),它们记录与在多个计算节点处执行的应用的操作对应的系统属性和/或应用属性。因此,每个跟踪段对应于应用的相应操作,并可以记录(描述、捕获)为相应操作捕获的属性及其对应值。

这些属性可以包括一个或多个分类属性,即编码由对应跟踪段记录的操作的类型和该操作中涉及的系统组件的离散值属性。这些属性还可以包括一个或多个行为属性,例如,定时属性等等,可以是捕获分布式系统各方面行为、操作和/或应用组件的任意值属性。这些行为属性后续可以用于通过确定记录一个或多个行为属性的相应跟踪段是否对应于正常操作或异常操作来检测异常。这些属性还可以包括一个或多个其它属性,它们与表征跟踪段的类型以及确定相应跟踪段是否对应于正常操作或异常操作都无关。这些其它属性可以包括唯一属性,例如,跟踪、进程、变量等的一个或多个标识符(identifier,ID)。

需要强调的是,RCA系统不了解分布式系统,包括不同类型的跟踪段之间的相互依赖关系。RCA系统还忽略了可能导致异常的机制。因此,RCA系统可用的信息仅限于跟踪段所记录的属性及其分配值以及跟踪段对应于正常操作或异常操作的分类结果。

为了能够分析跟踪段的相似子集,跟踪段可以按跟踪段类型划分为多个组,使得每个组包括具有相同属性和可能相同的属性赋值的跟踪段。可选地,每个组内的跟踪段可以在时间上进行组织,以产生时间序列组,其中的跟踪段根据它们的生成时间以及它们的一个或多个属性值的捕获时间在时间轴上进行排序。

在分布式执行过程中检测到的异常可以通过本领域已知的一种或多种异常检测方法、算法和/或工具(统称为异常检测算法)来识别,并且不在本发明的范围内。这些一个或多个异常检测算法可以应用于跟踪段,可选地应用于多个跟踪段组,以识别异常,即对应用进行分布式执行时检测到的异常操作。一个或多个异常检测算法的结果通常可以包括每个跟踪段对应于正常操作或异常操作的分类结果。如上所述,RCA系统可能与选择一个或多个异常检测算法完全无关,并且只需要从一个或多个异常检测算法接收到的分类结果。

RCA系统可以根据每组跟踪段中包括的跟踪段的分类,计算该组的异常得分,以量化该组偏离分布式应用正常执行的程度。因此,异常得分表示相应组内的异常水平。RCA系统可以采用不同的评分函数来映射每个跟踪段和每组的异常水平。具体地,RCA系统可以使用从一个或多个异常检测算法接收到的划分结果作为基础的一个或多个评分函数,,例如,作为正常和异常跟踪段相对于全部跟踪段的比率和/或分数等。

RCA系统然后可以应用一个或多个方法、技术和/或算法来分析为多个组计算到的多个异常得分,从而识别分布式系统和/或应用的一个或多个组件,这些组件疑似(可能)是一个或多个异常检测算法检测到的异常的根因的至少一部分和/或与其相关。异常得分的分析仅针对跟踪段中记录的属性进行。因此,分析不需要关于分布式系统和应用的进一步信息,也不需要关于一个或多个异常检测算法检测到的异常的性质的任何信息。

RCA系统可以遵循几种方式和方法来进行分析,以识别一个或多个疑似根因,下面提供详细描述。

第一种方法可以包括聚合每个属性值对应的每个组中的跟踪段的异常得分,从而识别跟踪段所记录的每个属性(单个属性)的正态分布,并计算每个属性与正态分布的标准偏差。标准偏差可以与针对应用RCA的分布式系统预定义和/或调整的特定阈值进行比较。然后,根因可以映射到单一属性值,同时标准偏差超过阈值的属性分配有最大的聚合异常得分。如果有几个属性的标准偏差超过阈值,则根因可以映射到单一属性值集合,同时标准偏差超过阈值的每个属性具有最大异常得分。

在另一种方法中,分析可以包括将跟踪段所记录的单一属性值聚类到集群中。本领域中已知的一个或多个聚类技术可以用于使用从跟踪段(特别是从跟踪段记录的属性和对应值加上跟踪段的异常得分)中推导出的距离度量来产生集群。在对单一性值进行聚类之后,可以为每个集群计算总异常得分,并将总异常得分与针对应用RCA的分布式系统预定义和/或调整的特定阈值进行比较。然后,根因可以映射到显示最高异常得分的集群。

RCA分析与多个计算节点对应用进行分布式执行期间执行的操作对应的跟踪段组计算到的异常得分,与现有的RCA方法和系统相比,可以带来很大的优势和好处。

基于异常得分的RCA通过从属性和对应值加上它们对应于正常操作和异常操作的分类结果推断根因,而不使用与分布式系统、应用和/或对应用进行分布式执行期间检测到的异常相关的任何其它信息。另外,基于异常得分的RCA基本上忽略了分布式系统和/或应用的组件、相互依赖关系、系统度量、健康指标和/或任何其它执行参数,从而使基于异常得分的RCA具有高度可扩展性,因为可以容易部署来识别实际上能够生成跟踪数据的任何分布式系统中检测到的异常的根因。

此外,由于与系统和应用的实际工作方式无关,基于异常得分的RCA不需要广泛定制每个分布式系统和/或由分布式系统联合执行的每个应用,从而显著减少了在联合执行多样化且可能高度复杂的应用的多样化分布式系统中部署基于异常得分的RCA所需的开发工作和/或资源。

此外,由于基于异常得分的RCA完全依赖于通常可用于采用微服务的当前现有分布式系统中的跟踪数据,因此不需要开发和/或部署方法来收集其它系统和/或应用信息。这可能会显著减少开发和/或部署工作量和资源,同时显著提高可扩展性、易于集成和采用基于异常得分的RCA。

另外,基于异常得分的RCA采用当前可用的一个或多个标准异常检测算法,从而避免需要设计在对应用进行分布式执行期间检测异常的新方法。这可能会进一步减少开发和/或部署工作和资源。

一些现有RCA系统可能依赖于形式推理规则来识别和确定执行应用期间检测到的异常的疑似根因。由于分布式系统和应用可能是高度复杂的,包括非常多的组件、执行流、相互依赖关系等,因此这些推理规则的集合可能需要高度详尽,以将所有这些方面映射到相应的可能根因。因此,基于推理规则的RCA可能需要大量的开发工作和/或资源。基于推理规则的RCA还可能需要具体定制每个分布式系统和/或在分布式系统中联合执行的每个应用,因此会显著降低基于推理规则的RCA的可扩展性。

相比之下,由于基于异常得分的RCA不依赖于推理规则,所以基于异常得分的RCA需要的开发和/或部署资源可以显著降低,而且与基于推理规则的RCA相比,可扩展性更高。

一些其它RCA系统可能不需要形式推理规则来确定检测到的异常的疑似(可能)根因,而是依赖于系统度量、系统健康指标、服务质量(quality of service,QoS)等。建立这些RCA系统的依据是,系统度量可能与健康指标直接相关。因此,如果在某个健康指标中检测到异常,则系统度量反映的系统组件和/或应用组件可以被确定为检测到的异常的疑似(可能)根因,其中,系统度量表现出与某个健康指标强关联。这种基于系统度量的RCA方法可能由于两个主要原因而受到限制。第一,基于系统度量的RCA所需的健康指标可能不可用。另外,为分布式执行生成的跟踪数据通常包括与可能涉及系统和/或应用的多个组件的操作对应的跟踪段,但不包括系统和/或应用的每个组件的显式系统度量。

另一方面,基于异常得分的RCA仅仅以可用于跟踪段中的数据为基础,不需要健康指标或系统度量。因此,基于异常得分的RCA可能是非常合适且易于部署在联合执行各种各样应用的多样化分布式系统中,对于这些应用,健康指标和系统度量可能不可用。

其它一些RCA系统可以使用系统指标来确定检测到的异常的疑似(可能)根因,但可能不需要系统健康指标。相反,这种方法基于以下假设:度量设置在分层结构中,在分层结构中,较高层次的系统度量是通过聚合较低层次的度量而形成的。一个或多个疑似根因的识别基于以下假设:与检测到的异常的根因对应的度量表现出与异常度量强关联。由于跟踪段包括与操作(可能涉及多个组件)相关的行为属性,而不包括独立组件,因此这种RCA方法可能受到很大限制。另外,这种RCA方法依赖于分层结构中聚合的度量,在分层结构中,异常检测只应用于顶层和/或较高层次的度量聚合。因此,异常检测技术可能无法检测分层聚合方案中的实际异常,因为异常的影响可能会被聚合减弱或隐藏。此外,一个或多个疑似根因的识别依赖于层次结构中的关联度量,这要求在聚合过程中保留度量的形状。

与之相反,基于异常得分的RCA没有这些限制,因为基于异常得分的RCA不需要通常不可用于现有系统和应用中的系统度量。此外,由于基于异常得分的RCA不应用分层结构来识别检测到的异常的一个或多个疑似根因,所以基于异常得分的RCA可以利用常用的标准异常检测算法和技术,它们能够根据不被分层结构遮挡或隐藏的影响来检测异常。

在详细解释本发明的至少一个实施例之前,应当理解,本发明没有必要将其应用限制于下面描述中所阐述和/或附图和/或示例中所说明的组件和/或方法的构造和设置的详细内容。本发明能够有其它实施例,或者能够以各种方式实践或执行。

本发明可以是一种系统、一种方法和/或一种计算机程序产品。所述计算机程序产品可以包括具有计算机可读程序指令的计算机可读存储介质,所述计算机可读程序指令使得处理器执行本发明的各方面。

所述计算机可读存储介质可以是能够保留和存储指令以供指令执行设备使用的有形设备。所述计算机可读存储介质可以为,例如但不限于,电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或上述设备的任意合适组合。所述计算机可读存储介质的更具体示例的非详尽列表包括以下设备:便携式计算机软磁盘、硬盘、随机存取存储器(random access memory,RAM)、只读存储器(read-only memory,ROM),可擦除可编程只读存储器(erasable programmable read-only memory,EPROM或闪存)、静态随机存取存储器(static random access memory,SRAM)、便携式光盘只读存储器(portable compactdisc read-only memory,CD-ROM)、数字多功能磁盘(digital versatile disk,DVD)、记忆棒、软盘、记录有指令的机械编码设备(例如,穿孔卡片或凹槽中的凸起结构),以及上述设备的任意合适组合。本文所使用的计算机可读存储介质本身不应解释为瞬时性信号,例如,无线电波或其它自由传播的电磁波、通过波导或其它传输介质传播的电磁波(例如,通过光纤电缆传播的光脉冲),或通过电线传输的电信号。

本文描述的计算机可读程序指令可以从计算机可读存储介质下载到相应计算/处理设备,或者通过因特网、局域网、广域网和/或无线网络等网络下载到外部计算机或外部存储设备。所述网络可以包括铜传输线缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从所述网络接收计算机可读程序指令,并转发所述计算机可读程序指令,以便存储在所述相应计算/处理设备内的计算机可读存储介质中。

用于执行本发明操作的计算机可读程序指令可以是组译器指令、指令集架构(instruction-set-architecture,ISA)指令、机器指令、机器相关指令、微码、固件指令、状态设置数据,或者以一种或多种编程语言的任意组合编写的源代码或目标代码。一种或多种编程语言包括面向对象的编程语言,例如Smalltalk或C++等,以及传统的过程化编程语言,例如“C”编程语言或类似的编程语言。

所述计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上执行并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在最后的场景中,远程计算机可以通过任何类型的网络连接到用户的计算机,任何类型的网络包括局域网(local area network,LAN)或广域网(wide area network,WAN),或者可以连接到外部计算机(例如,通过使用互联网服务提供商的因特网)。在一些实施例中,包括可编程逻辑电路、现场可编程门阵列(field-programmable gate array,FPGA)或可编程逻辑阵列(programmable logic array,PLA)等的电子电路可以通过利用所述计算机可读程序指令的状态信息来执行所述计算机可读程序指令,以使所述电子电路个性化,从而执行本发明的各方面。

本文结合本发明实施例提供的方法、装置(系统)和计算机程序产品的流程图和/或方框图来描述本发明的各方面。应当理解,流程图和/或方框图的每个方框以及流程图和/或方框图中的方框的组合可以由计算机可读程序指令实现。

附图中的流程图和方框图示出了本发明各种实施例提供的系统、方法以和计算机程序产品的可能实现方式的架构、功能和操作。对此,流程图或方框图中的每个方框可以表示模块、区段或部分指令,部分指令包括用于实施一个或多个指定逻辑功能的一个或多个可执行指令。在一些替代实现方式中,方框中所指出的功能可以不按附图中所指出的顺序出现。例如,事实上,连续示出的两个方框可以大体上同时执行,或者有时候可以按照相反的顺序执行,具体取决于所涉及的功能。还需要注意的是,方框图和/或流程图中的每个方框以及方框图和/或流程图中的方框组合可以由基于专用硬件的系统实现,这些系统执行指定的功能或操作或者执行专用硬件和计算机指令的组合。

现在参考附图,图1为本发明一些实施例提供的识别执行由多个计算节点联合执行的应用时检测到的异常的根因的示例性过程的流程图。示例性过程100可以由根因分析系统执行,以识别执行应用(特别是由分布式系统中的多个计算节点联合执行的应用)期间检测到的异常的根因。此外,应用可以由封装在松耦合模块化微服务(部署在计算节点上)中的多个功能组件构成,以简化应用开发和维护。

根因是通过以下方式识别的:根据对应用进行分布式执行期间在多个计算节点处生成的跟踪数据应用RCA。跟踪数据可以包括多个跟踪段(观察),每个跟踪段记录系统和/或应用中的操作在计算节点处的执行情况。每个跟踪段记录(包括)一个或多个属性及相应属性值,它们编码各方面的执行情况。

为了能够分析包括跟踪段的相似子集,跟踪段可以按跟踪段类型分为多个组,使得每个组包括与具有相同属性和相同属性值的操作对应的跟踪段。每个组内的跟踪段可以在时间上进行组织,以产生时间序列组,其中的跟踪段是根据它们的生成时间以及它们的一个或多个属性值的捕获时间在时间轴上进行排序的。

本领域已知的一个或多个异常检测方法、算法和/或工具可以应用于多个跟踪段组,以识别一个或多个异常,即对应用进行分布式执行时检测到的异常操作。

此外,可以为多个组(特别是识别到一个或多个异常操作的多个组)中的每个组计算异常得分,以量化相应组偏离应用的正常执行流的程度。因此,异常得分表示相应组内的异常水平。

检测到的一个或多个异常操作的根因可以通过分析为多个组计算到的多个异常得分来识别。上述分析可以采用下文所述的一种或多种技术、方法和/或算法。

还参考图2,图2为本发明一些实施例提供的用于识别执行由多个计算节点联合执行的应用时检测到的异常的根因的示例性系统的示意图。

示例性根因分析(root cause analysis,RCA)系统200(例如,计算机、服务器、计算节点和/或计算节点集群等)可以执行一种过程,例如,用于识别执行由分布式系统的多个计算节点202联合执行的应用204时检测到的异常的疑似根因的过程100。该分布式系统可以是服务器、计算节点、计算节点集群、基于云的服务和/或基于云的平台等等。

计算节点202(例如,计算节点1至计算节点M)通常可以遵循基于微服务的架构,其包括用于执行应用204的多个微服务1至N。这些微服务可以修改以通过捕获计算节点202处的分布式执行作为多个跟踪段,生成跟踪数据以执行调试和监控任务。每个跟踪段记录在其中一个计算节点202上为了联合执行应用204而执行的操作的属性和属性值。

修改微服务以生成跟踪数据包括将跟踪库部署在每个计算节点202上以收集跟踪数据并将其发送到一个或多个跟踪服务器222。部署跟踪服务器222是为了接收跟踪数据并将其发送(转发)到RCA系统200。可选地,RCA系统200集成和/或利用一个或多个跟踪服务器222。

RCA系统200可以包括用于与一个或多个跟踪服务器222和/或计算节点202进行通信的网络接口210、用于执行过程100的处理电路212以及用于存储代码和/或数据的存储器214。

网络接口210可以包括一个或多个网络接口,用于连接到一个或多个有线和/或无线网络,例如,局域网(Local Area Network,LAN)、广域网(Wide Area Network,WAN)、市域网(Municipal Area Network,MAN)、蜂窝网络和/或互联网等等,以促进与一个或多个跟踪服务器222和/或计算节点202进行通信。通过网络接口202,RCA系统200可以接收部署在计算节点202上的微服务生成的跟踪数据。

处理电路212可以包括一个或多个同质或异构处理器,每个处理器包括用于并行处理的一个或多个处理节点,作为集群和/或一个或多个多核处理器。处理电路212还可以包括一个或多个硬件特定组件,例如,专用集成电路(Application Specific IntegratedCircuit,ASIC)、现场可编程门阵列(Field Programmable Gate Array,FPGA)、数字信号处理器(Digital Signal Processor,DSP)和/或图形处理器单元(Graphic Processor Unit,GPU)等等,以支持执行过程100。

用于存储数据和/或程序代码的存储器214可以包括一个或多个非瞬时性存储设备,可以是永久非易失性设备,例如,硬盘驱动器、固态硬盘(solid state drive,SSD)、磁盘和/或闪存阵列等,也可以是易失性设备,例如,随机存取存储器(Random AccessMemory,RAM)设备和/或高速缓存等。存储器214还可以包括一个或多个网络存储资源,例如,存储服务器、网络附属存储(Network Attached Storage,NAS)和/或网络驱动器等等,它们可以通过网络接口210经由一个或多个网络访问。

处理电路212可以执行一个或多个软件模块,例如,进程、应用、代理、公用程序、工具、脚本和/或操作系统(Operating System,OS)等等,它们都包括存储在存储器214等非瞬时性介质中且由处理电路212等一个或多个处理器执行的多个程序指令。

处理电路212可以执行一个或多个功能模块,它们可以由一个或多个软件模块、一个或多个硬件特定组件和/或其组合实现。这些功能模块可以包括,例如,排队服务230、预处理模块232、信号分离模块234、异常检测模块236、评分模块238、根因识别模块240、操作员接口242等等。

排队服务230可以用于从一个或多个跟踪服务器222接收跟踪数据,并在跟踪数据被处理和分析之前临时存储(缓存)跟踪数据。预处理模块232可以用于调整和/或控制跟踪段记录到的(观察到的)属性,这些跟踪段包括在接收到的跟踪数据中且与计算节点202在对应用204进行分布式执行期间执行的操作对应。信号分离模块234可以用于根据跟踪段类型对跟踪段进行分组,从而产生记录具有相同属性的操作的多个跟踪段组。信号分离模块234还可以用于将至少一些跟踪数据(特别是分组后跟踪段)存储在跟踪数据数据库250(例如,其可以存储在存储器214中)中。因此,存储的分组后跟踪段可以用于进一步在RCA系统200本地处理和/或在跟踪数据可以发送到的一个或多个远程分析资源远程处理。

异常检测模块236可以用于将本领域已知的一个或多个异常检测方法、算法和/或工具(下文统称为异常检测算法)应用于多个跟踪段组,以识别对应用204进行分布式执行期间检测到的一个或多个异常操作。评分模块238可以用于为记录在多个跟踪段组中的属性值计算异常得分。根因识别模块240可以用于通过分析计算到的异常得分识别检测到的一个或多个异常操作的根因。

操作员接口242可以用于编程地与RCA系统200执行的一个或多个功能模块(例如,异常检测模块236和根因识别模块240)交互。因此,操作员接口242可以用于自动生成一个或多个警报、告警、通知、警告和/或消息,表示识别到的一个或多个根因。操作员接口242还可以包括用户界面,例如,命令行接口和/或图形用户界面(Graphical User Interface,GUI)等等,以与一个或多个用户交互。具体地,用户可以通过操作员接口242发出请求,以启动根因识别模块240要执行的根因分析。

可选地,RCA系统200和/或一个或多个功能模块由一个或多个云计算服务提供,这些云计算服务可以是一个或多个云基础设施提供的基础设施即服务(Infrastructure asa Service,IaaS)、平台即服务(Platform as a Service,PaaS)和/或软件即服务(Software as a Service,SaaS)等等,以及/或者是亚马逊网络服务(Amazon WebService,AWS)、Google Cloud和/或Microsoft Azure等服务。

如102所示,过程100开始于:预处理模块232从一个或多个跟踪服务器222接收跟踪库220生成的跟踪数据,其中,跟踪库220部署在联合执行应用204的计算节点202上。可选地,跟踪数据可以最初由排队服务230在RCA系统200处接收,排队服务230可以用作临时存储接收到的跟踪段的缓冲区,直到它们可以被传送到预处理模块232进行处理和/或分析。

在进一步描述本发明实施例之前,提供了一些背景信息、假设和符号。

跟踪数据中包括的跟踪段通过记录计算节点202对应用204进行分布式执行期间捕获到的固定属性集合而用作观察集合,其中,如上所述,应用204由多个不同的功能组件模块化构建,每个功能组件利用微服务1至N中的一个或多个。

跟踪段中记录的属性可以区分为三种主要类型的属性:

■分类属性,即编码由对应跟踪段表示的事件的类型和该事件中涉及的系统组件的离散值属性。分类属性通常编码相应操作的参数,例如,操作的类型、通过操作完成的动作、执行操作的计算节点202和/或执行操作时涉及的系统的一个或多个组件等等。系统组件可以包括,例如,计算节点202、微服务的名称、微服务内的子系统的名称、执行计算节点202所在机架的标识符(identifier,ID)和/或网络ID(如果使用了具体的网络ID)等等。

■行为属性,即捕获分布式系统或组件的各方面行为的任意值属性。这些行为属性后续可以用于通过确定相应跟踪段(记录一个或多个行为属性)是正常的还是异常的来检测异常。

■与表征跟踪段的类型和确定相应跟踪段是否异常都无关的其它属性。这些属性可以包括唯一属性等,例如,跟踪库220分配给每个跟踪段和/或每个执行跟踪的唯一ID。这些唯一ID与RCA过程100不直接相关,但可能用于不在本发明的范围内的其它应用。

由于每个跟踪段对应于应用204的某个操作,因此跟踪段可以包括一个或多个类别属性,例如,应用、操作名称和/或操作方法(例如,用于HTTP/REST请求的GET)等。此外,每个跟踪段分配有唯一的ID,这是一个唯一属性,而跟踪段所记录的操作的延迟是一个行为属性。每个跟踪段还可以分配有一个时间戳,表示生成时间,从而表示捕获一个或多个属性值的时间。

假设跟踪段的属性足够识别检测到的异常的潜在原因,这表示假设检测到的异常的根因可以归结于分类属性的一个或多个具体值(赋值)。

进一步假设为了识别异常的根因而分析的跟踪段具有相同的分类属性集合,而且假设这个分类属性集合不得为空。还假设,对于每个跟踪段(观察),相应跟踪段的每个分类属性正好赋有一个具体值。

为简洁和清晰起见,本文下面使用以下符号。

S 包括所有跟踪段的集合。

P 包括每个跟踪段的所有分类属性的集合。

C(p),p∈P 包括可以赋给属性p的有效值C的集合。

c→p,p∈P,c∈C(p) 值c到属性p的赋值。

s(c→p),s∈S 跟踪段s上的谓词,其中,当且仅当s具有值c到属性p的赋值时,该谓词为真。

a={(c1→p1),…,(ci→pi)+ 包括值到属性的赋值的集合:

当且仅当赋值集合a最多包括每个属性的一次赋值时,该赋值集合是明确的:

当且仅当赋值集合a正好包括每个属性的一次赋值时,该赋值集合是完整的:

A(s),s∈S 包括跟踪段s的完整赋值集合,使得:

包括至少一个跟踪段满足的所有完整赋值的集合:

直观地,对应于跟踪段集合S中存在的所有跟踪段类型。

当且仅当时,明确的观察s满足赋值集合a。为简洁起见,谓词s(·)扩展到赋值集合,如下所示:

对于跟踪段s,s∈S和赋值集合a,当且仅当时,谓词s(a)为真。

Sa 包括满足赋值集合a的跟踪段的子集:Sa={s∈S∣s(a)+。需要说明的是,

需要说明的是,从的定义来看,立即得出跟踪段类型的数量不能超过跟踪段的数量,因为每个跟踪段正好有一个跟踪段类型:

现在参考图3,图3为示例性跟踪段的示意图。基于微服务的分布式系统,包括多个计算节点(例如,计算节点202),可以用于生成跟踪数据。因此,微服务(例如,微服务1至N)中的每个微服务可以配备可以拦截微服务与其客户端微服务之间的通信的跟踪库(例如,跟踪库220)。跟踪库220用于为每个被处理的请求生成一个跟踪段(记录),以捕获调用的特定微服务函数、定时、参数和其它函数专用信息。另外,每个跟踪段(记录)可以包括对其父跟踪段和/或相应跟踪段所属的整个执行跟踪的引用。

图3示出了示例性跟踪段。跟踪段s2的父跟踪段s1表示最后一个请求(如果有),在此期间发出嵌套请求(由s2表示)。因此,在图3所述的示例中,跟踪段7412嵌套在跟踪段2116内。跟踪是包括跟踪段的集合,这些跟踪段全部使用相同的跟踪ID且共同表示分布式执行,可能涉及微服务1至N中的多个不同微服务。

每个跟踪库220生成的每个跟踪段可以发送到一个或多个跟踪服务器222,其负责从配备的微服务收集跟踪数据,即跟踪段(跟踪段记录)。

现在参考图4,图4为本发明一些实施例提供的执行由多个计算节点联合执行的示例性应用期间生成的记录示例性属性值的示例性跟踪段的示意图。

表402包括多个操作,具体地包括执行由多个计算节点(例如,计算节点202)执行的示例性应用(例如,应用204)期间记录的15个操作。具体地,示例性应用由两个计算节点202执行,这两个计算节点分别具有唯一的互联网协议(Internet Protocol,IP)地址10.1.1.50和10.1.1.60。

跟踪库(例如,跟踪库220)为应用的相应操作生成的每个跟踪段可以记录赋给与相应操作对应的跟踪段所记录的相应属性的单一属性值。这些属性可以包括,例如,唯一ID(其它)属性、微服务名称分类属性、相应计算节点202的主机IP地址分类属性和延迟时间行为属性。因此,每个跟踪段包括表402中每个条目右侧所示的两个分类属性中的每个属性的属性值。因此,集合S包括为表402中所列的操作(请求)生成的所有跟踪段。

在接收到跟踪数据之后,预处理模块232可以调整和/或控制一个或多个跟踪段,以将跟踪段准备用于RCA系统200中的后续处理和分析阶段。具体地,预处理模块232用于清理(sanitize)和清除跟踪段中的属性值。具体地,其中一些属性可以包括唯一标识符,这样可能会掩盖跟踪段所记录的操作的重要特征。因此,为了简化RCA系统200的后续模块的处理步骤,如果IP地址、服务器ID和/或客户端ID等ID与相应属性不相关,则预处理模块232可以从属性赋值中删除或替换这些ID。

例如,假设在某个微服务中执行的两个操作是http://1.1.1.1/user_details?user=X和http://5.5.5.5/user_details?user=Y,其中,相同的操作user_details?user=针对的是两个不同的用户X和Y,相同的操作在不同的计算节点202(主机)1.1.1.1和5.5.5.5处执行。假设过程100只需要操作的类型,则唯一标识符(即URL字符串内的具体用户名和具体主机名)可能会掩盖两个操作引用相同操作的信息。在这种情况下,预处理模块232可以替换唯一标识符以产生操作的通用表示,例如,http://HOST/user_details?user=USER。因此,在分析时(在过程100的后期阶段),两个操作可以很容易被识别为执行相同操作,并相应地进行分组和/或分类。

再如,参考图3所示的跟踪段,端点URL包括请求发送到的主机(计算节点202)的IP地址1.2.3.4。但是,应用204所请求的功能由微服务名称keystone、方法GET和URL定义,不需要主机IP地址https://_IP_/v3/auth/token。也就是说,请求的类型不取决于该请求发送到的具体主机IP地址1.2.3.4。在这种情况下,预处理模块232可以确定IP地址1.2.3.4与端点属性不相关,因为端点用于识别所请求的功能,因此可以从端点属性中删除IP地址1.2.3.4。但是,相对于主机属性,预处理模块232可以确定IP地址3.2.2.5与识别主机计算节点202相关,因此可以不改变主机属性的值。

在预处理模块232从确定与相应属性无关的一个或多个唯一ID中清除属性赋值之后,每个得到的跟踪段可以包括端点URL、方法、服务名称和/或主机名等一个或多个分类属性,操作延迟等一个或多个行为属性,以及跟踪段所记录的操作的时间戳。

预处理模块232还可以根据多个跟踪段的时间戳在有序时间轴上对这些跟踪段进行排序。

再次参考图1。

如104所示,信号分离模块234从预处理模块232接收跟踪段,并根据跟踪段类型将这些跟踪段进行分组,使得这些跟踪段可以在每个组内具有可比性。具体地,信号分离模块234根据跟踪段类型对跟踪段集合S进行分组(划分),使得分在同一组的所有跟踪段对应于针对分类属性具有相同属性赋值的操作。形式上可以如下面的等式1所示。

等式1:

需要说明的是,根据的定义和跟踪段类型,上面公式中的包括值(赋值)的每个集合a都是完整且明确的。

为了对跟踪段集合S进行分组,信号分离模块234可以分析每个跟踪段,并检查每个属性的赋值,从而在最坏的情况下产生O(|S|·|P|)个步骤。需要说明的是,计算成本(即上述用于对跟踪段进行分组(划分)的计算资源利用率)可以与只生成跟踪段的成本一致。在这种情况下,可以认为对跟踪段进行分组的过程渐近地不产生任何额外成本。

可选地,信号分离模块234还用于将至少一些跟踪数据存储在跟踪数据数据库250中。具体地,信号分离模块234可以存储分组后跟踪段,这些跟踪段包括以时间序列设置和排序的跟踪段,以根据它们的时间戳形成时间轴。

虽然RCA过程100并没有严格要求存储跟踪数据,但存储的跟踪数据可用于许多目的和目标。例如,假设在分布式系统中检测到一个严重问题,使用在检测到问题之前存储的跟踪数据,可以立即启动RCA。再如,一些异常检测技术可能依赖于跟踪数据中可见的变化。这些变化可以包括,例如,问题发生时延迟增加。将这种依赖变化的异常检测技术应用于在检测问题之前存储的跟踪数据可以检测到这些延迟变化,这些延迟变化在问题发生后可能不再可见,导致延迟可能一直很高。

如106所示,异常检测模块236从信号分离模块234接收分组后跟踪段,并将一个或多个异常检测算法应用于多个跟踪段组,以识别对应用204进行分布式执行期间可能已经发生的异常操作。

异常检测模块236可以采用本领域已知的一个或多个异常检测算法,因此在本发明的上下文中认为是未知框(black box)。因此,相对于这些异常检测算法做出最小假设。

异常检测模块236采用的一个或多个异常检测算法通常可以接收跟踪段集合S,特别是划分为多个跟踪段组的集合S,并将这些组划分为反映(记录)正常操作的正常组和记录异常操作的异常组。假设对于跟踪段集合Sa,一个或多个异常检测算法将该跟踪段集合Sa分类(划分)为使得其中,表示与分类为异常操作的操作对应的跟踪段的子集,表示与分类为正常操作的操作对应的跟踪段的子集。

一个或多个异常检测算法可以接受一个或多个附加输入参数,例如,包括用于校准的跟踪段的训练集合和/或算法专用参数等等。但是,为了简单起见,假设异常检测模块236采用的任何异常检测算法都被封装在包装函数(wrapper function)中,以遵守上述接口(如果有必要)。

如108所示,评分模块238接收多个跟踪段组,并计算多个组中的每个组的异常得分。具体地,评分模块238根据异常检测模块236识别到的对相应组中包括的正常和异常跟踪段进行划分(分类)的结果计算每个组的异常得分。

计算到的异常得分可以表示每个跟踪段组内的异常水平,从而量化每个跟踪段组(类型)中的跟踪段偏离正常的程度。因此,可以使用一个或多个评分函数计算异常得分,这些评分函数将异常检测模块236对每个跟踪段组(类型)中的跟踪段进行操作的结果(划分结果)映射到范围为0至1的标量值。直观地表示,异常得分对应于某个跟踪段组(类型)中的跟踪段进行分类的“异常程度”的概念。因此,评分模块238为了从异常检测结果(划分结果)中推导出异常得分所采用的一个或多个评分函数随着分类为对应于异常操作的异常组中包括的跟踪段的数量单调递增。

评分模块238所采用的一个或多个评分函数可以包括多个映射函数,而且评分模块238的操作不限于任何具体的一个或多个映射函数。选择一个或多个精确的映射函数的主要影响和效果可能是运行时成本,即计算异常得分的计算资源利用率。为了简单和简洁起见,评分模块238采用以全部跟踪段中分类为异常的一部分异常跟踪段为基础的评分函数。计算类型为a的某个跟踪段集合(组)Sa的异常得分所使用的异常评分函数R(Sa)等于分类为异常的集合Sa中的一部分跟踪段除以集合Sa中的全部跟踪段,即分类为异常的跟踪段与分类为正常的跟踪段之和。这种异常评分函数R(Sa)如下面的等式2所示。

等式2:

需要说明的是,该定义只适用于以跟踪段类型(组)a为特征的完整跟踪段集合,具体地,不适用于跟踪段集合Sa′,其中,a′不是跟踪段类型(组),也就是说,集合a′不是完整且明确的单一属性赋值集合。对于评分函数R(·),定义了一个互补评分函数R′(·),该函数对任意且不一定完整且明确的赋值集合有效,如下面的等式3所示。

等式3:

直观地,如果a′是跟踪段类型(组),则互补评分函数R′(Sa′)退化为评分函数R(Sa′)。如果a′是不完整且明确的赋值集合,则互补评分函数R′(Sa)可以根据为集合Sa′计算到的异常得分计算集合Sa的聚合异常得分,

计算互补评分函数R′(Sa)可能不需要对跟踪段集合Sa额外调用一个或多个异常检测算法,因为这种计算可能只依赖于为跟踪段组(类型)计算到的异常得分,

在互补评分函数R′(Sa′)(其中,|a′|=1,即a′只包括单一属性赋值)的特殊情况下,计算互补评分函数R′(Sa′)的额外渐近成本可以很低。这是因为每个组(跟踪段类型)中的所有跟踪段至少需要调用一个或多个异常检测算法,因此至少需要执行个步骤来计算评分函数R(·)。同时,可以针对每个赋值a′聚合异常检测模块236的结果,导致每组(跟踪段类型)需要额外执行|P|个步骤。之后,计算互补评分函数R′(Sa′)可能只需要恒定的时间。

由于基于异常得分的评分函数R(·)和R′(·)可以用于高效地计算聚合异常得分,而不需要重新调用一个或多个异常检测算法,这样通常可能会消耗大量计算资源,因此使用这些评分函数可能是一种有效的选择。但是,这不应该被解释为限制性,因为如上所述,评分模块238可以采用其它评分函数来计算异常得分。

如110所示,根据评分模块238计算到的异常得分,根因识别模块240可以推断异常检测模块236检测到的一个或多个异常操作的疑似(可能)根因。根因识别模块240还可以输出一个或多个警报(alert)、告警(alarm)、通知、指示和/或消息,表示识别到的一个或多个根因,可选地输出这些识别到的一个或多个根因是真实根因的概率水平。

现在参考图5,图5为本发明一些实施例提供的根据执行由多个计算节点联合执行的示例性应用期间生成的记录示例性属性值的跟踪段识别执行该应用时检测到的异常的根因的示例性序列的示意图。

如502所示,预处理模块(例如,可以处理集合S中的跟踪段的预处理模块232)可以接收为图4所示的表402中列出的操作(请求)生成的示例性跟踪段集合S,如过程100的步骤102所述。

如504所示,信号分离模块(例如,信号分离模块234)可以将集合S中的跟踪段分为多个组(跟踪段类型)如过程100的步骤104所述。每个组包括属性(特别是分类属性)具有相同赋值的跟踪段。

如506所示,异常检测模块(例如,异常检测模块236)可以采用一个或多个异常检测算法对集合S中的跟踪段所记录的操作进行分类,并通过分析这些跟踪段来识别一个或多个异常操作,如过程100的步骤106所述。在本示例中,异常检测模块236可以确定记录表402中的条目3、4、6、10、12和13所列操作的跟踪段是异常操作,而表402中列出的其它操作是正常操作。

如508所示,评分模块(例如,评分模块238)可以采用一个或多个评分函数来计算每个跟踪段组(类型)的异常得分,如过程100的步骤108所述。在本示例中,评分模块238可以采用基于异常分数的评分函数R(·)来计算多个组(跟踪段类型)的异常得分,得到

如510所示,根因识别模块(例如,根因识别模块240)可以分析通过评分计算到的异常得分,如过程100的步骤110所述,以识别异常检测模块236检测到的一个或多个异常操作的一个或多个疑似根因。

假设根因识别模块240不了解分布式系统,包括不同类型的跟踪段之间的相互依赖关系,也不了解可能导致异常的机制。因此,根因识别模块240可用的唯一信息仅限于跟踪段所记录的属性及其对应于正常操作或异常操作的分类结果。

检测到的异常操作(异常)的根因可以追溯到可能解释检测到的异常的单一属性赋值集合。

符号Bs表示任何跟踪段满足的所有单一属性赋值的集合,这样 因此,检测到的异常操作的根因可能是Bs的非空子集。需要说明的是,|Bs|受可以赋给每个属性的可能值的累积数量的限制,这样|Bs|≤∑p∈P|C(p)|。

根因识别模块240可以使用几种方法来分析异常得分,以便识别一个或多个异常操作的疑似根因。

在第一示例性实施例中,根因识别模块240可以使用基于偏差的技术,这个技术可以聚合为每个属性的单一属性值计算到的异常得分,并且可以为聚合异常得分计算标准偏差。根因识别模块240可以将为每个属性计算到的标准偏差与某个阈值进行比较。在标准偏差超过阈值的属性中,根因识别模块240可以将具有最大聚合异常得分的每个属性的相应值识别为疑似(可能)是检测到的异常操作的根因的一部分的值。

现在参考图6,图6为本发明一些实施例提供的根据为跟踪段所记录的属性值计算到的异常得分的标准偏差识别执行由多个计算节点联合执行的应用时检测到的异常的根因的示例性过程的流程图。根因识别模块(例如,根因识别模块240)可以执行基于偏差的示例性过程600来分析评分模块(例如,评分模块238)计算到的异常得分,以便识别异常检测模块(例如,异常检测模块236)识别到的一个或多个异常操作的一个或多个疑似(可能)根因。

基于偏差的根因识别所依据的原理如下。假设赋值c→p(p∈P,c∈C(p))是某个检测到的异常操作的根因的一部分。在这种情况下,为跟踪段S{c→p+计算到的异常得分应该明显不同于为跟踪段{S{c′→p+∣c′∈C(p),c′≠c+计算到的异常得分,其中,c′是一个赋值,其不是某个检测到的异常操作的根因的一部分。因此,观测子集{S{c′→p+∣c′∈C(p)+的异常得分的标准偏差应该很高。相比之下,如果某个属性p′的赋值都不是根因的一部分,则跟踪段子集{S{c′→p′+∣c′∈C(p′)+的异常得分应该基本相似,因为属性p′的赋值不应该对这个操作中检测到的异常产生重大影响。

如602所示,过程600开始于:根因识别模块240为每个属性的赋值计算聚合异常得分。对于每个属性和相应属性的每个可能赋值,根因识别模块240可以检索为相应值计算到的对应异常得分。然后,根因识别模块240可以根据满足每个可能(有效)属性赋值的所有跟踪段的异常得分,为属性计算聚合异常得分。

如604所示,根因识别模块240可以计算每个属性的聚合异常得分的标准偏差。

如606所示,根因识别模块240将为每个属性计算到的标准偏差与某个阈值δ进行比较。根因识别模块240可以选择标准偏差超过阈值δ的每个属性,以添加到可能与根因相关(即疑似为异常检测模块236检测到的一个或多个异常操作的根因)的疑似属性集合P*中。

可选地,在将为属性计算到的标准偏差与阈值δ进行比较之前,根因识别模块240对一个或多个标准偏差结果进行归一化,以将阈值δ的选择与系统运行期间可能变化的总体异常率(prevalence)分离开来。换句话说,对标准偏差结果进行归一化的目的是使阈值δ对总体异常率的变化具有鲁棒性。

如608所示,根因识别模块240识别集合P*中的一个或多个属性中的每个属性的一个或多个值(赋值),一个或多个值表示最大的聚合异常得分偏差为异常检测模块236检测到的一个或多个异常操作的疑似根因。

示例性伪代码摘录1示出了基于偏差的算法,其可以由根因识别模块240执行以执行过程600。

伪代码摘录1:

输入:阈值δ,每组中的所有跟踪段的异常得分:

输出:疑似根因:

1.for p∈P do

2.Dp←stddev({R(Sc→p)∣c∈C(p)∧|Sc→p|>0})

3.end for

4.P*←{p∈P|Dp≥δ}

5.

如第2行所示,对于每个属性p,基于偏差的算法根据跟踪段集合S中记录的赋值c的聚合异常得分计算标准偏差Dp,如过程600的步骤604所述。如第4行所示,基于偏差的算法选择标准偏差Dp超过阈值δ的所有属性,并将这些属性添加到疑似属性集合P*中,如过程600的步骤606所述。如第5行所示,基于偏差的算法将集合P*中包括的且在集合P*中包括的所有属性之中具有最大聚合异常得分的一个属性标识为最疑似根因,如过程600的步骤608所述。

现在参考图7,图7示出了本发明一些实施例提供的根据为示例性捕获的属性值计算到的标准偏差对执行由多个计算节点联合执行的示例性应用时检测到的异常进行示例性根因检测的图表。图7所示的图表示出了在包括多个计算节点(例如,联合执行应用(例如,应用204)的计算节点202)的分布式系统中检测到的异常检测结果。具体地,分布式系统中包括三个计算节点202,即host_1、host_2和host_3,每个节点执行应用204的三个操作,即op_1、op_2和op_3。

每个图表示出了100个跟踪段,每个跟踪段记录计算节点202(host_1、host_2和host_3)执行的操作op_1、op_2和op_3。每个跟踪段定义有两个分类属性,即主机(HOST)和操作(OPERATION),其中,每个属性具有三个可能(有效)赋值,具体地,主机属性具有host_1、host_2和host_3,操作属性具有op_1、op_2和op_3。

信号分离模块(例如,信号分离模块234)可以将跟踪段分为具有相同属性赋值的跟踪段组(跟踪段类型),从而产生与两个属性的赋值的九种组合相关的九个组,具体地,这些组合为host_1和op_1、host_1和op_2、host_1和op_3、host_2和op_1、host_2和op_2、host_2和op_3、host_3和op_1、host_3和op_2以及host_3和op_3。这些组合中的每种组合由图7所示的九个图表中的相应一个表示。

每个跟踪段可以包括一个或多个行为属性,具体是针对相应跟踪段所记录的具体操作而识别的延迟。通过使用延迟属性的赋值,异常检测模块(例如,异常检测模块236)可以将跟踪段分类为对应于异常操作的跟踪段和对应于正常操作的跟踪段。具体地,异常检测模块236可以将赋有高延迟值的跟踪段分类为对应于异常操作。在图表中,使用X标记的跟踪段是对应于异常操作的跟踪段,而对应于正常操作的跟踪段则使用简单的点标记。

评分模块(例如,评分模块238)可以计算跟踪段的异常得分。每个图表示出了评分模块238根据异常检测模块236进行的异常分类(划分)计算到的异常得分。根因识别模块(例如,根因识别模块240)可以分析多个异常得分,并可以针对每个组聚合这些异常得分,以产生每个组的聚合异常得分。

例如,以主机属性为例,图表的最左列示出了三个跟踪段组(集合)的图表,这些跟踪段组的主机属性使用相同的值host_1,而每个组的操作属性具有不同的值,即op_1、op2和op_3。三个组host_1/op_1、host_1/op_2和host_1/op_3的异常得分分别为0.07、0.66和0.06。由于每个组包括100个跟踪段,且为每个组计算到的异常得分是基于分数评分函数的,因此三个组中分别有7个、66个和6个跟踪段被分类为异常。将三个组中分类为异常的跟踪段相加,则三个组中包括的全部300个跟踪段中总共产生79(7+66+6=79)个被分类为异常的跟踪段。根因识别模块240可以聚合三个组中被分类为异常的所有跟踪段,以产生单一属性host_1的聚合异常得分。例如,通过使用分数评分函数,根因识别模块240可以将被分类为异常的跟踪段的总数(79)除以三个组中的跟踪段的总数(300),以产生主机属性的值host_1的聚合异常得分79/300=0.26。

类似地,为主机属性的值host_2计算到的聚合异常得分等于值0.08,为主机属性的值host_3计算到的聚合异常得分等于值0.07。因此,这些聚合异常得分(0.26、0.08、0.07)的标准偏差为0.09。

通过使用相同的方法,根据操作属性计算到的聚合异常得分针对op_1、op_2和op_3分别等于0.08、0.27和0.06,产生的标准偏差为0.09。通过使用阈值δ=0.05,根因识别模块240可以确定两个属性都可能与检测到的异常的根因相关。因此,根因识别模块240可以选择对于每个属性的赋值(具体是host_1和op_2)具有最大聚合异常得分的多个组。因此,根因识别模块240可以确定检测到的异常的根因是计算节点202host_1执行操作op_2特有的失败条件。因此,根因识别模块240可以为检测到的异常指出具体且非常准确的根因。可选地,根据结果,根因识别模块240因此可以排除怀疑其它操作,即计算节点202host_1执行的op_1和op_3以及其它计算节点202host_2和host_3执行的操作op_2,疑似(可能)与根因相关。需要说明的是,其它组中与归类为异常(可能是误报)的操作对应的少量跟踪段不会影响根因组的确定。

在第二示例性实施例中,根因识别模块240可以使用聚类技术,在这个技术中,多个属性的属性值可以使用从跟踪段中推导出的距离度量聚类到集群中。对于每个集群,根因识别模块240可以聚合聚类在相应集群中并与某个阈值进行比较的属性值的异常得分。如果为某个集群计算到的聚合异常得分超过阈值,则可以识别聚类值集合有很大概率(可能性)成为检测到的一个或多个异常操作的根因。

现在参考图8,图8为本发明一些实施例提供的根据为捕获的属性值计算到的聚类异常得分识别执行由多个计算节点联合执行的应用时检测到的异常的根因的示例性过程的流程图。根因识别模块(例如,根因识别模块240)可以执行基于聚类的示例性过程800来分析评分模块(例如,评分模块238)计算到的异常得分,以便识别异常检测模块(例如,异常检测模块236)识别到的一个或多个异常操作的一个或多个疑似(可能)根因。

基于聚类的根因识别所依据的原理如下:采用一个或多个聚类技术来找到与异常检测模块(例如,异常检测模块236)检测到的异常操作的根因相关的单一属性值赋值集合。具体地,这种方法的目的是确定单一属性值分配集合,以便:

-如果两个单一属性赋值都出现在具有非零异常得分的许多组(跟踪段类型)中,则它们更有可能包含在相同集合中;

-如果两个单一属性赋值都出现在具有较高异常得分的多个组(跟踪段类型)中,则它们更有可能包含在相同集合中。

根据这些假设,如果得到的单一属性赋值集合(集群)也与具有较高异常得分的多个组(跟踪段类型)相关,则可以认为该集合是这些异常操作的根因。

根因识别模块240可以采用本领域已知的一个或多个聚类方法、算法和/或技术等,进行基于聚类的根因识别。这些聚类技术可以是通用的,并且可以只根据它们的操作参数来选择,这些操作参数可以是可用性、性能、效率和/或计算资源利用率等等。根因识别模块240需要聚类操作的输出,因此可能忽略聚类方法、算法、技术的具体实现和内部机制。

然而,为了利用这种通用的现有聚类技术进行推理,可能需要从跟踪数据推导出距离度量,以便将距离度量馈送到一个或多个聚类算法,这些聚类算法可以使用距离度量进行聚类操作来识别满足上述两个属性的单一属性赋值集合(集群)。

因此,基于聚类的根因识别中使用的核心技术是为可以用于聚类操作的单一属性赋值推导合适距离度量。

距离度量可以从跟踪数据中推导出和/或推断,特别是从评分模块(例如,评分模块238)为跟踪段计算到的异常得分中推导出和/或推断。具体地,距离度量可以是从由异常得分以及跟踪段中记录的属性及其相应赋值构建的图表中推导出的基于最大流的距离度量。

根因识别模块240可以使用两种方法来推导基于最大流的距离度量,第一种方法通过构建受限图(Gr),第二种方法基于完整图(Gf)。这些图的命名,受限图和完整图,基于以下事实:受限图(Gr)可以认为是完整图(Gf)的子图。受限图和完整图在结构上几乎相似,但可能导致用于计算距离度量的算法具有不同的最坏情况运行时复杂度。

如802所示,过程800开始于:根因识别模块240构建受限图(Gr)和/或完整图(Gf)。

在以下描述中,符号(v1,v2)表示从图的源顶点v1到目标顶点v2的有向边,其中,顶点表示赋给跟踪段中属性的属性值。

受限图Gr的定义可以如下面的等式4所示。

等式4:

Gr=(V,Er)

V=V1∪V2∪Vc

Er=Er,1∪E2

受限图Gr根据其定义只包括从顶点V1到Vc和从顶点Vc到V2的边。直接结果是,受限图Gr中的从V1到V2的任何路径正好包括三个顶点。因此,成对顶点之间的任何路径的长度(即某个属性的成对单一属性赋值)是固定且限制的。此外,只有当每对两个单一属性赋值属于相同组的一部分,即属于相同的跟踪段类型,该流才是可能的。因此,与完整图Gf相比,构建受限图Gr和推导距离度量的计算明显更简单,因此需要的计算资源和/或计算时间大大减少。

完整图Gf的定义可以如下面的等式5所示。

等式5:

Gr=(V,Ef)

Ef=Ef,1∪E2

如上所示,完整图Gf定义有与受限图Gr相同的顶点集合,并且还包括受限图Gr中包括的所有边。另外,完整图Gf包括两个方向的边,即包括顶点V1和Vc之间的回边。与受限图Gr相反,这些附加边很可能实现从顶点V1到顶点V2的路径(包括超过三个(唯一)顶点),因为从顶点V1到顶点V2的路径可以包括在顶点V1和Vc之间交替的子路径。因此,完整图Gf可以包括成对顶点V1和V2之间的所有路径,即成对单一属性赋值之间的所有路径,包括受限图Gr定义的固定路径和可变长度的其它路径。此外,完整图Gf使所有成对所有单一属性赋值之间的流通过“包含在异常组(跟踪段类型)中”关系过渡连接。也就是说,如果对于一系列单一属性赋值a1,…,an,每对单一属性赋值ai、ai+1(其中,1≤i<n-1)包含在异常组中,则Gf存在从的流。然而,虽然完整图Gf可能支持生成更准确的距离度量,但构建完整图Gf和计算完整图Gf中的最大流可能需要更多计算资源和/或计算时间。

对于受限图Gr和完整图Gf,边容量f(v1,v2)可以如下面的等式6所示分配。

等式6:

只包括在完整图Gf中的边的边容量如下面的等式7所示同理分配。

等式7:

图9A和图9B为本发明一些实施例提供的为执行由多个计算节点联合执行的应用期间生成的示例性跟踪段构建的以产生用于聚类的距离度量的示例性图的示意图。图9A为受限图,例如为图4所示的示例性跟踪段集合S构建的受限图Gr。图9B为完整图,例如为图4所示的示例性跟踪段集合S构建的受限图Gf

再次参考图8。

如804所示,根因识别模块240计算每个单一属性的每对赋值之间的最大流,即顶点V1和V2之间的最大流,其中,每个顶点表示相应对的不同单一属性赋值。

两个不同的单一属性赋值可以表示为a1和a2,使得a1≠a2。假设表示V1和V2中顶点分别表示这些单一属性赋值a1和a2。根因识别模块240可以计算受限图Gr和/或边容量为f的完整图Gf中从的最大流。两个最大流分别表示为

如806所示,基于受限图Gr或完整图Gf中的最大流,根因识别模块240可以计算(定义)成对单一属性赋值之间的距离d′,如下面的等式8所示。

等式8:

其中,符号G对于受限图设置为Gr,而对于完整图设置为Gf

如808所示,根因识别模块240可以从距离d′中生成(获取)距离度量,因为距离d′本身可能不一定构成距离度量。为了从距离d′中获取距离度量,根因识别模块240可以调整由d′定义的距离以满足三角形不等式。例如,根因识别模块240可以使用弗洛伊德算法计算所有成对单一属性赋值之间的最短路径,产生正式构成距离度量的距离d。

在生成距离度量之后,根因识别模块240可以使用所获得的距离度量采用一个或多个聚类算法,以将跟踪段所记录的单一属性值(赋值)聚类到多个集群(集合)。

如810所示,根因识别模块240可以使用根据受限图Gr和/或完整图Gf计算最大流而获得的距离度量将一个或多个聚类算法应用于所有单一属性的所有单一属性值。

使用距离度量d的一个或多个聚类算法的结果可以包括将跟踪段划分为包括单一属性赋值Bs的多个集群(集合)H1,…,Hm,如下面的等式9所示。

等式9:

在一个或多个聚类算法不产生上述划分结果的情况下,结果可以转换为多个划分结果,如下所示:

-如果对于每个单一属性赋值,划分算法产生一个连续得分,表示每个集群的成员概率,则可以通过将每个单一属性赋值分配给具有最大得分的集群来推断划分。

-如果单一属性赋值未被分类为属于任何群集,则可以认为单一属性值分配赋值是单例集群。

当然,如果需要,生成集群的这些操作取决于一个或多个聚类算法的选择。

如812所示,根因识别模块240可以计算每个集群的异常得分。这可能是必要的,这是因为,由于每个单一属性赋值包含在一个集群中,因此可能并非所有集群都对应于异常检测模块234检测到的异常的根因。因此,为了识别表示检测到的异常的根因的集群,根因识别模块240可以将异常得分分配给每个集群,该异常得分表示所包含的单一属性赋值与检测到的异常的相关性。

根因识别模块240可以使用一个或多个方法、技术和/或算法,根据每个集群的一个或多个特征计算集群的异常得分。

例如,根因识别模块240可以计算异常得分,目的是为包括与具有高异常得分的组(跟踪段类型)相关联的单一属性赋值的集群产生高值。因此,集群的示例性评分函数R*1可以如下面的等式10所示。

等式10:

对于每个集群,根因识别模块240可以采用评分函数R*1来计算异常得分,从而将包括在相应集群中的所有单一属性赋值的异常得分进行平均。因此,当使用评分函数R*1计算时,包含具有高聚合异常得分的单一属性赋值的集群会产生高的总异常得分。

再如,根因识别模块240可以计算异常得分,其被定义为估算每个集群中的每个单一属性赋值对应的根因的影响(即效果、结果)。因此,得分评估异常跟踪段的总分数,可能由每个群集中的每个单一属性赋值对应的根因来解释。因此,集群的示例性评分函数R*2可以如下面的等式11所示。

等式11:

因此,评分函数R*2可以为与可能根因相对应的集群产生更高的异常得分,这些根因可以解释跟踪段中检测到的更多异常。

如814所示,根因识别模块240可以将为集群计算的异常得分(使用评分函数R*1和R*2中的一个或两个)与某个阈值进行比较,并选择异常得分超过阈值的集群。可选地,在同时使用两个评分函数的情况下,通过将由每个评分函数计算的异常得分与相应的阈值进行比较,可以使用不同的阈值来选择集群。

根因识别模块240可以将包括在异常得分超过阈值的的集群中的单一属性赋值识别为根因。此外,在根因识别模块240识别异常评分超过阈值的几个集群的情况下,根因识别模块240可以将具有最高异常得分的集群中包括的单一属性赋值识别为根因。

下面的示例性伪代码摘录2可以由根因识别模块240用于执行过程800。

伪代码摘录2:

输入:每组中的所有跟踪段的异常得分:

输出:疑似根因:

1.计算成对单一属性赋值上的距离度量d(a1,a2)

2.根据距离度量d找到单一属性赋值集群

3.计算每个集群的异常得分

4.将异常得分超过阈值的集群报告为疑似根因

预计在本申请成熟为专利的过程中,将会开发出许多相关系统、方法和计算机程序,而术语“异常检测算法”的范围旨在先验性地包括所有这样的新技术。

本文所使用的术语“约”是指±10%。

术语“包括”、“具有”及其变化形式表示“包括但不限于”。

术语“由……组成”是指“包括并限于”。

除非上下文中另有明确说明,本文使用的“一个”和“所述”包括复数含义。例如,术语“一个化合物”或“至少一个化合物”可以包括多个化合物,包括其混合物。

在本申请中,本发明的各种实施例可以通过范围格式呈现。应当理解,范围格式的描述仅仅为了方便和简洁起见,而不应该被解释为对本发明范围的固定限制。因此,对范围的描述应该被认为是已经具体地公开所有可能的子范围以及所述范围内的个别数值。例如,对于从1到6等范围的描述应该被认为是已具体公开了从1到3、从1到4、从1到5、从2到4、从2到6、从3到6等子范围以及该范围内的单个数字,例如1、2、3、4、5和6。不论范围有多广,这都适用。

当本文指示一个数字范围时,表示包含所指示的范围内的任意所列举的数字(分数或整数)。短语“在第一所指示的数和第二所指示的数之间的范围”以及“从第一所指示的数到第二所指示的数的范围”在本文可互换使用,表示包括第一和第二所指示的数以及二者之间所有的分数和整数。

应当了解,为简洁起见在单独实施例的上下文中描述的本发明的某些特征还可以组合提供于单个实施例中。相反地,为简洁起见在单个实施例的上下文中描述的本发明的各个特征也可以单独地提供或以任何合适的子组合或作为本发明的任何其它实施例提供。在各个实施例的上下文中描述的某些特征不认为是那些实施例的基本特征,除非所述实施例没有这些元素的情况下不起作用。

虽然本发明已经结合其具体实施例描述,但很明显,许多替代方案、修改和变化对本领域技术人员来说是显而易见的。因此,本发明预期涵盖所附权利要求书的精神和广泛范围内的所有此类替代方案、修改和变化。

本说明书中提及的所有出版物、专利和专利说明书都通过引用结合在本说明书中,同样,每个单独的出版物、专利或专利申请也具体且单独地结合在本申请中。另外,本申请中对任何参考的引用或识别不应解释为承认此参考可用作本发明的现有技术。就使用标题而言,不应被解释为必然限制。另外,本申请的任何一份或多份优先权文件的全部内容通过引用结合在本申请中。

37页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:N维错误校正码的高效解码

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!