CN115705255A - 学习因果关系 - Google Patents
学习因果关系 Download PDFInfo
- Publication number
- CN115705255A CN115705255A CN202210914726.0A CN202210914726A CN115705255A CN 115705255 A CN115705255 A CN 115705255A CN 202210914726 A CN202210914726 A CN 202210914726A CN 115705255 A CN115705255 A CN 115705255A
- Authority
- CN
- China
- Prior art keywords
- error
- application
- log data
- computer
- microservices
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/29—Graphical models, e.g. Bayesian networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N7/00—Computing arrangements based on specific mathematical models
- G06N7/01—Probabilistic graphical models, e.g. probabilistic networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0709—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0766—Error or fault reporting or storing
- G06F11/0775—Content or structure details of the error report, e.g. specific table structure, specific error fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0766—Error or fault reporting or storing
- G06F11/0781—Error filtering or prioritizing based on a policy defined by the user or on a policy defined by a hardware/software module, e.g. according to a severity level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/079—Root cause analysis, i.e. error or fault diagnosis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0793—Remedial or corrective actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/22—Matching criteria, e.g. proximity measures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2413—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
- G06F18/24147—Distances to closest patterns, e.g. nearest neighbour classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/02—Knowledge representation; Symbolic representation
- G06N5/022—Knowledge engineering; Knowledge acquisition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/86—Event-based monitoring
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Evolutionary Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Mathematical Analysis (AREA)
- Algebra (AREA)
- Computational Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供了一种计算机实现的方法,其包括:学习两个或更多个应用微服务之间的因果关系,以及应用所学习的因果关系以动态地定位应用故障。收集与选择性注入的错误相对应的第一微服务错误日志数据。基于所收集的第一微服务错误日志数据,生成所学习的因果图。收集与所检测到的应用相对应的第二微服务错误日志数据,并使用所学习的因果图和第二微服务错误日志数据建立祖先矩阵。利用祖先矩阵识别错误的源,并且与所识别的错误源相关联的微服务也受到识别。还提供了一种计算机***和计算机程序产品。
Description
技术领域
本公开的实施例涉及用于利用因果干预来经由主动因果学习而推断应用微服务之间的因果图并利用所学习的因果图来执行故障定位的***、计算机程序产品和计算机实现的方法。
背景技术
在本领域理解,单体应用是独立于其他应用的自包含应用。微服务或微服务架构通常是指一种计算机环境,在该计算机环境中,应用基于功能定义而被构建为一套模块化组件或服务,并且每一个应用运行它自己的进程并通过轻量级机制进行通信。在某些微服务架构中,数据被存储在服务外部,并因此,服务是无状态的,并且这些服务或组件通常被称为“原子服务”。每个原子服务是用于独立执行模块化服务的轻量级组件;每个原子服务支持特定任务,并使用所定义的接口(诸如应用编程接口(API))来与其他服务通信。微服务架构支持并实现混合网络中的可扩展性。
通常,微服务是一种架构方法,通常是云原生的,其中单个应用由多个松散耦合且可独立部署的较小组件或服务(被称为微服务)组成。微服务通常(但不一定)使它们自己的栈(包括数据库和数据模型)通过表述性状态转移(REST)应用程序接口(API)的组合来彼此通信,并且微服务由商业实体组织。工业微服务应用具有数百个或更多的微服务,其中一些微服务具有依赖关系。随着应用微服务数量增加,微服务之间的依赖关系也越来越复杂。应用的微服务的拓扑可以是固定的,但通常是未知的。
微服务依赖关系的复杂性以及通常未知的微服务拓扑导致故障定位的复杂性和低效。开发可以执行应用微服务的故障定位的***、计算机程序产品和计算机实现的方法会是重大的进步。在具体的示例性实施例中,该***、计算机程序产品和计算机实现的方法可在生产环境中以最小的观测数据来操作。
发明内容
实施例包括一种用于学习应用微服务之间的因果关系并动态地利用所学习的因果关系以用于故障定位的***、计算机程序产品和方法。本发明内容被提供为以简化形式介绍在以下具体实施方式中进一步描述的代表性概念的选择。本发明内容并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于以任何方式限制所要求保护的主题的范围。
在一方面,一种计算机***被配备有:处理器,其可操作地耦合到存储器;以及人工智能(AI)平台,其与处理器和存储器通信。AI平台包括预发布(staging)管理器,并且生产管理器和引导器可操作地耦合到AI平台。预发布管理器被配置为学习两个或更多个应用微服务之间的因果关系。收集与一个或多个选择性注入的错误相对应的第一微服务错误日志数据,并且基于所收集的第一微服务错误日志数据生成所学习的因果图。所学习的因果图表示受选择性错误注入影响的应用微服务的依赖性。可操作地耦合到预发布管理器的生产管理器被配置为动态地定位应用错误的源。收集与应用错误相对应的第二微服务错误日志数据,并且基于所学习的因果图和所收集的第二微服务错误日志数据来建立祖先矩阵。利用祖先矩阵来识别错误的源。可操作地耦合到生产管理器的引导器被配置为识别与所识别的错误源相关联的微服务。
在另一方面,提供了一种用于学习两个或更多个应用微服务之间的因果关系的计算机实现的方法。收集与一个或多个选择性注入的错误相对应的第一微服务错误日志数据,并基于所收集的第一微服务错误日志数据生成所学习的因果图。所学习的因果图表示受选择性错误注入影响的应用微服务的依赖性。动态地定位应用错误的源,该定位表现为收集与应用错误相对应的第二微服务错误日志数据以及基于所学习的因果图和所收集的第二微服务错误日志数据建立祖先矩阵。利用祖先矩阵以识别错误源和与所标识的错误源相关联的微服务。
在又一方面,提供一种计算机程序产品。该计算机程序产品包括计算机可读存储介质,该计算机可读存储介质包含有程序代码。程序代码可由处理器执行以学习两个或更多个应用微服务之间的因果关系。提供用于收集与一个或多个选择性注入的错误相对应的第一微服务错误日志数据并基于所收集的第一微服务错误日志数据生成所学习的因果图的程序代码。所学习的因果图表示受选择性错误注入影响的应用微服务的依赖性。进一步提供用于动态地定位应用错误的源的程序代码。收集与应用错误相对应的第二微服务错误日志数据,并基于所学习的因果图和所收集的第二微服务错误日志数据来建立祖先矩阵。利用祖先矩阵以识别错误的源和与所识别的错误源相关联的微服务。
在进一步的方面,提供了一种用于训练人工智能模型的计算机实现的方法。收集与一个或多个选择性注入的微服务故障相对应的第一错误日志数据,并基于所收集的错误日志数据(在实施例中被称为第一错误日志数据)学习因果图。因果图表示受影响的应用微服务的依赖性。动态地定位应用故障,其包括收集与应用故障的检测相对应的第二错误日志数据。利用第二错误日志数据和所学习的因果图以识别应用故障的源。
在又进一步的方面,一种计算机***被配备有:处理器,其可操作地耦合到存储器;以及人工智能(AI)平台,其与处理器和存储器通信。AI平台包括预发布管理器。提供生产管理器,并且生产管理器可操作地耦合到AI平台。预发布管理器被配置为训练AI模型。收集与一个或多个选择性注入的微服务故障相对应的第一错误日志数据,并基于所收集的第一错误日志数据学习因果图。因果图表示受影响的应用微服务的依赖性。可操作地耦合到预发布管理器的生产管理器被配置为动态地定位应用故障。收集与应用故障的检测相对应的第二错误日志数据。利用第二错误日志数据和所学习的因果图来识别应用故障的源。
根据以下结合附图对示例性实施例的详细描述,这些和其他特征和优点将变得显而易见,附图描述并示出了附加方面的各种***、子***、设备、装置、模型、过程和方法。
附图说明
在此所引用的附图形成说明书的一部分,并且通过引用被结合。除非另外指明,否则附图中所示的特征意味着仅说明一些实施例,而不是所有实施例的说明。
图1示出在预发布环境中支持和启用主动学习以学习因果图并在生产环境中利用所学习的因果图来定位应用故障的计算机***的示意图。
图2示出描绘如图1所示和描述的AI平台工具及其相关联的应用程序接口(API)的框图。
图3示出用于学习微服务之间的因果关系的流程图。
图4示出描绘示例性干预模式的框图。
图5示出描述示例性干预矩阵的框图。
图6示出使用来自图3的输出的传递简约(transitive reduction)因果图以用于生产环境中的故障定位的流程图。
图7示出描绘用于实现以上关于图1至图6描述的***和过程的基于云的支持***的计算机***/服务器的实例的框图。
图8示出描绘云计算机环境的框图。
图9示出描绘由云计算环境提供的一组功能抽象模型层的框图。
具体实施方式
将容易理解的是,如在本文的附图中一般描述和示出的这些示例性实施例的组件可以按各种不同的配置来安排和设计。因此,如在本说明书和附图中呈现的,在此描述的***、计算机程序产品和方法以及其他方面的实施例的以下详细描述并不旨在限制所要求保护的实施例的范围,而是仅表示所选择的实施例。
贯穿本说明书提及“所选实施例”、“一个实施例”、或“实施例”意味着结合该实施例所描述的特定特征、结构、或特性被包括在至少一个实施例中。因此,在整个本说明书中的各个地方出现的短语“所选实施例”、“在实施例中”或“在实施例中”不一定是指相同的实施例。应当理解,各个实施例可以彼此组合,并且实施例可以用于彼此修改。
通过参考附图,将最好地理解示出的实施例,其中,相同的部分在全文中以相同的标号表示。以下描述仅旨在举例,并且简单地说明与本文所要求保护的实施例一致的设备、***、和过程的某些所选实施例。
云计算机是经由互联网对计算资源的按需访问,这些计算资源诸如是应用、服务器(包括物理服务器和虚拟服务器)、数据存储、开发工具、以及被托管在远程数据中心处并由云服务提供商管理的网络能力。软件即服务(SaaS)(也被称为基于云的软件或云应用)是被托管在云中并可经由网络浏览器、客户机或应用程序接口(API)访问的应用软件的示例。云计算的细节在图8中示出和描述。微服务或微服务架构是云原生架构方法,其中单个应用由许多松散耦合且可独立部署的组件或服务组成。然而,许多云应用遭受有限的可观测性,这使得难以定位一个或多个应用微服务中的故障。
如本文所示出和描述的,干预式因果学习被应用于部署前环境(在本文中也被称为预发布环境)中的一个或多个云应用,该部署前环境通常用于软件测试以在应用部署之前评估质量。预发布环境为测试和评估以减轻生产期间的错误提供场所,并因此在本文中被称为部署前环境。预发布环境充当用于学习与应用微服务相关联的因果模型的场所。生产环境描述其中应用出于其预期目的而运行的设置。更具体地,生产环境是发生应用执行的实时设置。如下面所示和描述的,生产环境监视错误日志数据,并利用从预发布环境学习的因果模型来以最小的观测数据准确且高效地定位应用故障。
因果模型可被描述为映射因果和影响关系的节点和边的图,例如因果图。因果图是有向无环图(DAG),其中两个节点之间的边对因果关系编码。在有向图中,只有边是箭头,而无环是其中没有反馈环路的图。因此,DAG是仅具有用于边的箭头并且没有反馈环路的图,即,没有节点是它自己的祖先或它自己的后代。例如,X是Y的直接原因,例如,X→Y,以使得强制X取特定值影响Y的实现。在因果图中,边上的箭头表示父节点对子节点的直接影响。没有父节点的节点被称为根或源节点。没有子节点的节点被称为终端。路径或链是相邻边的序列。在因果图中,有向路径表示从起始节点到结束节点(例如。从父节点到终端节点)的因果路径,以及在实施例中,在根节点与终端节点之间的一个或多个中间节点。因此,DAG表示完整的因果结构,因为所有依赖源由因果链接来解释。
如本文所示和描述的,提供了一种计算机***、方法和计算机程序产品,以采用故障注入来学习微服务之间的因果关系,并利用实时地学习的因果关系以及应用错误日志数据来识别和定位如针对一个或多个应用微服务的应用错误源。许多云应用采用多个微服务。工业微服务应用具有数百个或更多的微服务和它们之间的复杂的依赖关系。应用微服务的拓扑是固定的,但通常是未知的。这些应用具有有限的可观测性,使得在对应的微服务或多个微服务中的故障的定位困难。本文所示出和描述的***、方法和计算机程序产品使用错误日志数据形式的观测数据来识别微服务之间的隐藏因果图或真正因果边的子集。因果模型是表示个体***或群体内的因果关系的数学模型。如本文所示和描述的,提供了计算机***、计算机程序产品和计算机实现的方法,以使用部署前故障注射经由干预式因果学习来学习准确的因果图,并且使用学习图来执行高效和精确的故障定位。
参考图1,描绘了平台计算***(100)的示意图。在示例性实施例中,***(100)包括或结合人工智能(AI)平台(150)。如图所示,提供了通过网络连接(105)与多个计算设备(180)、(182)、(184)、(186)、(188)和(190)通信的服务器(110)。服务器(110)被配置有通过总线(114)与存储器(116)通信的处理单元(在本文中也称为处理器)(112)。服务器(110)被示为具有AI平台(150),其用于通过网络(105)从计算设备(180)、(182)、(184)、(186)、(188)和(190)中的一者或多者进行认知计算,包括自然语言处理(NLP)和机器学习(ML)。更具体地,计算设备(180)、(182)、(184)、(186)、(188)和(190)经由一个或多个有线和/或无线数据通信链路彼此通信和与其他设备或组件通信,其中,每个通信链路可包括导线、路由器、交换机、发射机、接收机等中的一者或多者。在该联网布置中,服务器(110)和网络连接(105)启用通信检测、识别和解析。服务器(110)的其他实施例可以与除了本文所描绘的那些之外的组件、***、子***和/或设备一起使用。
如本文所示,AI平台(150)被配置有工具,以在预发布环境中支持主动学***台(150)的一部分,但是应当理解,在实施例中,工具(152)、(154)和(156)中的任何一个或组合不必是AI平台(150)或AI操作的部分。在示例性实施例中,筹划管理器(152)是AI平台(150)的一部分,生产管理器(154)和/或引导器(156)各自是非AI的,即,生产管理器(154)和/或引导器(156)可操作地耦合到处理器(112)和AI平台(150),并且在不使用人工智能的情况下执行生产管理器(154)和/或引导器(156)的功能。
人工智能(AI)涉及针对与人类相关的计算机和计算机行为的计算机科学领域。AI是指当机器基于信息能够做出决定时的智能,这使得在给定主题中成功的机会最大化。更具体地,AI能够从数据集中学习以解决问题并提供相关推荐。例如,在AI计算机***领域中,自然语言***(诸如IBM人工智能计算机***或其他自然语言询问应答***)基于***获得的知识来处理自然语言。为了处理自然语言,可以用从数据库或知识库导出的数据来训练***。
作为AI的子集的机器学习(ML)利用算法从数据中学习并基于该数据创建前瞻。AI是指当机器基于信息能够做出决定时的智能,这使得在给定主题中成功的机会最大化。更具体地,AI能够从数据集中学习以解决问题并提供相关推荐。认知计算是计算机科学和认知科学的混合。认知计算利用使用最小数据、视觉识别和自然语言处理的自教学算法来解决问题和优化人类过程。
AI的核心和相关推理在于相似性的概念。理解自然语言和对象的过程需要从关系角度推理,这可以是具有挑战性的。结构(包括静态结构和动态结构)规定针对给定的确定输入的确定输出或动作。更具体地,所确定的输出或动作是基于结构内的明确或固有的关系。依赖足够的数据集以用于建立那些结构。
如本文所示,AI平台(150)被配置为从一个或多个源接收输入(102)。例如,AI平台(150)可以通过网络(105)从多个计算设备(180)、(182)、(184)、(186)、(188)和(190)中的一个或多个接收输入(例如,基于微服务的应用)。此外,如本文所示,AI平台(150)可操作地耦合到知识库(160)。尽管在图1中示出一个知识库(160),但是应当理解,可以采用***(100)的变体以支持两个或更多个知识库与AI平台(150)通信。
根据示例性实施例,AI平台(150)被配置为学***台(150)内。预发布管理器(152)被配置为将一个或多个错误选择性地注入应用微服务中,收集对应的应用日志数据,使错误日志数据经历过滤器或过滤过程以识别与所注入的一个或多个错误相对应的日志数据,并利用错误日志数据生成因果图,该因果图被存储在对应的知识库(160)中。在示例性实施例中,因果图是AI模型,在本文中也被称为经训练的AI模型。在图3中示出并描述了创建因果图以被存储在知识库(160)中的过程。因果学习的初始方面涉及向应用微服务中的错误注入。由预发布管理器将错误注入应用微服务中(152)。错误可以被单独注入,例如,一次一个微服务,或者被注入微服务集合中,例如,一次两个或更多个微服务。在实施例中,可以随机地注入错误。类似地,在实施例中,错误注入可以遵循模式。错误注入针对创建与应用微服务的功能相关联的问题。例如,错误注入可以是采用阻塞特定微服务、减慢微服务的可操作性、或以其他方式使得微服务对于应用不可用的形式。
错误日志是由应用、操作***或服务器在操作时遇到的错误的记录。例如,错误日志中的一些常见条目包括表损坏和配置损坏。错误日志可以捕获大量信息,在实施例中这可以包括相关或不相关的数据。预发布管理器(152)通过使日志数据经历预处理以识别与所注入的错误相对应或关联的错误日志来解决这个方面。在示例性实施例中,预发布管理器(152)过滤日志数据以提取与所注入的(一个或多个)错误相关联的特定消息文本。过滤器的示例可以是但不限于错误日志中的一个或多个关键字或者关键字组合的形式。过滤器的应用提供了对相关的日志数据(在本文中也被称为错误日志数据)的关注。预发布管理器(152)收集或以其他方式识别或获得在预处理之后保留的错误日志以学习应用微服务之间的因果关系,在本文中也称为因果学习。在图3至图5中详细示出和描述了因果学习的细节。因果学习有效地计算经受所注入的故障的微服务与每个相关的微服务之间的对应性,以确定哪些微服务受到或曾经受到故障注入的影响。更具体地,因果学习识别微服务之间的定向连接。在示例性实施例中,因果学习创建采用在DAG中表示的微服务的集合的形式的输出,所表示的微服务的集合与发出或以其他方式捕获或记录一个或多个错误的日志数据相关。因此,预发布管理器从错误日志数据中生成应用微服务的因果图。
预发布管理器(152)采用微服务的集合的输出来生成或以其他方式构建对应的因果图,例如DAG。更具体地,从微服务的集合中选择性地移除两个微服务之间的有向边。在示例性实施例中,选择性的去除通过传递简约来滤出一个或多个边的选择。在图3中示出和描述选择性的去除的细节。从在微服务的集合中保留的微服务的集合中生成DAG,或者在实施例中重新生成DAG。因此,从受影响的微服务的缩减集合(在实施例中,其是应用微服务的子集)中生成微服务的因果图。
如本文所示,示出知识库(160)具有被配置为接收和存储所生成的因果图的库(162)。尽管仅示出了一个库,但是在实施例中,知识库(160)可以包括一个或多个附加库。作为示例,库(162)被示为具有多个应用,每个应用具有第一错误日志和对应的因果图。如在此作为示例所示的,库(162)被示为具有三个应用,包括应用0(1640)、应用1(1641)和应用N(164N)。尽管仅示出了三个应用,但是,数量是用于说明的目的,不应被认为是限制性的。每个应用具有对应的第一错误日志(在此被示为日志0(1660)、日志1(1661)和日志N(166N))以及对应的因果图(在此被示为图0(1680)、图1(1681)、以及图N(168N))。
用户流被称为由原型用户在应用上完成任务所采取的路径。用户流带着用户从他们的进入点通过一组步骤朝着成功的结果和最终动作,诸如购买产品。混杂是在数据生成模型方面定义的因果概念。混杂因子是影响因变量和自变量两者的变量。如本文所示和描述的,预发布管理器(152)通过从错误日志数据中推断因果图来解决未观察到的由于用户流引起的混杂。
预发布管理器(152)(其在图1中被示为AI平台(150)的一部分,但在替换示例性实施例中不是基于AI的或者不是AI平台(150)的一部分)被配置为生成应用微服务之间的因果图。因果效应意味着基于已经发生或正在发生的某事,某事已经发生或正在发生。关于微服务,第一微服务A上的错误可能导致第二微服务B中的错误。这可以在从A到B的有向边中表示,例如然而,如果微服务B没有从微服务A上的错误接收或经历错误,则没有从A到B的有向边。
预发布管理器(152)及其从与选择性错误注入相关联的错误日志中生成因果图的功能离线地运行。在实施例中,与应用相关联的并且由预发布管理器(152)生成的错误日志数据在本文中被称为第一错误日志数据。提供生产管理器(154)以支持在线处理,并且更具体地,定位错误源。在实施例中,生产管理器(154)可操作地耦合到AI平台(150)。类似地,在实施例中,生产管理器(154)及其功能作为动态组件实时地发生。类似于与预发布管理器的功能相关联的预发布环境(152),由生产管理器收集与应用处理和执行相关联的错误日志数据(154)。在实施例中,与生产管理器(154)相关联的错误日志数据在本文被称为第二错误日志数据。如本文中作为示例所示的,第二错误日志数据被存储在知识库(160)中并且在本文中被示为(1700)、(1701)和(170N),每个第二错误日志数据与对应的应用(1640)、(1641)和(164N)的处理相关联。第一和第二错误日志数据之间的差异在于生成错误日志数据的方式。预发布管理器(152)离线地工作,并且故意将一个或多个错误注入应用微服务中,第一错误日志数据提供对(一个或多个)错误注入的(一个或多个)影响的记录。而生产管理器(154)在线地工作,并且所生成的第二错误日志数据提供对(一个或多个)应用处理错误的影响的记录。因此,预发布管理器(152)人为地创建(一个或多个)微服务故障,生产管理器(154)对在应用处理和执行期间检测到的应用错误作出响应。
由生产管理器(154)收集的错误日志数据实时地发生。生产管理器(154)利用所收集的第二错误日志数据来计算作为故障的主体的微服务与其他应用微服务之间的对应性,并且利用与第一错误日志数据相关联的并被存储在知识库(160)中的对应的因果图来生成祖先矩阵。关于应用0(1640),所计算的对应性在本文中被示为(1720)。在图3中示出并描述了生成祖先矩阵的过程的详情。作为示例,使用对应的因果图(1680)对应用0(1640)的评估生成祖先矩阵(1740)。使用祖先矩阵(1740)和所计算的对应性(1720),生产管理器(154)采用度量函数来评估字符串之间的相似性以相对于由生产管理器(154)计算的对应性(例如(1720))比较祖先矩阵(例如(1740))。在实施例中,度量函数是汉明距离或余弦相似度。在图6中示出和描述故障定位的细节。在示例性实施例中,度量函数产生故障的估计位置,并产生可能故障位置的前k列表,其中,k是可配置的值。因此,生产管理器(154)在所学习的因果图上应用故障定位,并且采用阈值化距离来估计或以其他方式识别故障位置。
引导器(156)在此被示为可操作地耦合到生产管理器(154)。引导器(156)基于评估来识别或推荐一个或多个有故障的微服务作为所检测到的错误的源。在示例性实施例中,引导器(156)将一个或多个有故障的微服务传送到主题专家(SME)以用于补救。
如本文所示,预发布管理器(152)学习因果关系,并将所学习的因果关系的表示(在本文中被称为因果图)存储在知识库(160)中。与知识库(160)通信的生产管理器(154)使用所学习的因果图和第二日志数据来确定针对给定的应用故障的可能故障位置的前k列表。在实施例中,引导器(156)将可能的应用程序故障位置(例如,微服务)存储在知识库(160)中。如在本文作为示例所示出的,应用(1640)被示出为具有可能的故障位置(1760,0)、(1760,1)、...(1760,k)。本文所示的故障位置是针对应用0(1640)的。虽然未示出,但是在实施例中,应用1(1641)和/或应用N(164N)可具有可能故障位置的列表或组。另一方面,引导器(156)可被配置为不进一步用可能故障位置的前k列表填充知识库(160)。
在一些说明性实施例中,服务器(110)可以是可从纽约阿蒙克的国际商业机器公司获得的IBM ***,该***用下文描述的说明性实施例的机制扩充。预发布管理器(152)、生产管理器(154)和引导器(156)(被统称为工具)被示为在服务器(110)的AI平台(150)中体现或集成在其中。在实施例中,预发布管理器(152)被体现在AI平台(150)中,生产管理器(154)和引导器(156)可操作地耦合到AI平台(150)。在另一个实施例中,这些工具可以在通过网络(105)连接到服务器(110)的单独的计算***(例如,服务器190)中实现。无论在何处体现,这些工具用于支持识别应用微服务的因果对,并利用所识别的因果对来动态地定位故障。
可以利用AI平台(150)的信息处理***的类型的范围从小型手持式设备(诸如手持式计算机/移动电话(180))到大型机***(诸如大型计算机(182))。手持式计算机(180)的示例包括个人数字助理(PDA)、个人娱乐设备(诸如MP4播放器)、便携式电视和CD播放器。信息处理***的其他示例包括笔、或平板计算机(184)、膝上型或笔记本计算机(186)、个人计算机***(188)和服务器(190)。如图所示,可使用计算机网络(105)将各种信息处理***联网在一起。可用于互连各种信息处理***的计算机网络(105)的类型包括局域网(LAN)、无线局域网(WLAN)、互联网、公共交换电话网(PSTN)、其他无线网络、和可用于互连信息处理***的任何其他网络拓扑。许多信息处理***包括非易失性数据存储,诸如硬盘驱动器和/或非易失性存储器。一些信息处理***可使用单独的非易失性数据存储,例如,服务器(190)利用非易失性数据存储(190A),大型计算机(182)利用非易失性数据存储(182A)。非易失性数据存储(182A)可以是在各种信息处理***外部的组件或者可以在信息处理***之一的内部。
用于支持AI平台(150)的信息处理***可以采取许多形式,其中一些形式在图1中示出。例如,信息处理***可以采取桌上型、服务器、便携式、膝上型、笔记本或其他形状因素计算机或数据处理***的形式。此外,信息处理***可以采取其他形式的因素,例如个人数字助理(PDA)、游戏设备、ATM机、便携式电话设备、通信设备、或包括处理器和存储器的其他设备。此外,信息处理***可以体现北桥/南桥控制器架构,尽管将理解也可以采用其他架构。
应用程序接口(API)在本领域中被理解为在两个或更多个应用之间中介的软件。关于在图1中示出和描述的(AI)平台(150),可以利用一个或多个API来支持工具(152)、(154)和(156)中的一个或多个及其相关联的功能。参照图2,提供了示出工具(152)、(154)和(156)及其相关联的API的框图(200)。如图所示,多个工具被嵌入在(AI)平台(205)内,这些工具包括与API0(212)相关联的预发布管理器(252)、与API1(222)相关联的生产管理器(254)、以及与API2(232)相关联的引导器(256)。每个API可以用一种或多种语言和接口规范来实现。
如图所示,API0(212)被配置为支持将错误选择性地注入(一个或多个)应用微服务中并处理对应的错误日志(在本文中也被称为第一错误日志数据)以生成或以其他方式学习因果图的离线任务。API1(222)提供对用于收集与应用错误相对应的所有微服务错误日志数据(在本文中也被称为第二错误日志数据)并基于所学习的因果图建立祖先矩阵的在线任务的功能支持。API2(232)提供对故障定位的功能支持,在实施例中,故障定位包括应用度量函数以评估字符串之间的相似性并利用该评估以及相关联的祖先矩阵来识别微服务的子集,例如前k,其是或可能是所检测到的错误的源。如图所示,API(212)、(222)和(232)中的每一个可操作地耦合到API编排器(260)(也被称为编排层),其在本领域中被理解为充当将单独的API透明地线程在一起的抽象层。在实施例中,单独的API的功能可以被接合或组合。在另一个实施例中,单独的API的功能可以进一步被划分成附加的API。因此,本文所示的API的配置不应当被认为是限制性的。因此,如本文所示的,工具的功能可以由其相应的API体现或支持。
参照图3,提供示出用于学习微服务之间的因果关系的过程的流程图(300)。学习因果关系的初始方面包括通过选择性的和受控制的故障注入来识别应用微服务。如本文所示,变量STotal表示应用微服务的数量(302)。对于所表示的微服务中的每一个微服务,例如,从S=1至STotal,选择性地注入错误,并且收集对应的日志数据(304)。在实施例中,注入错误可以是阻止、移除或延迟微服务。在步骤(304)处的选择性错误注入可以单独地或组合地应用于微服务,例如,两个或更多个微服务可以是故障注入的主体。在本领域中应理解,存在各种故障或错误可被应用于微服务。在实施例中,随机选择在步骤(304)处的错误注入的形式或类型,以应用于一个或多个微服务。类似地,在示例性实施例中,在步骤(304)处的故障注入由错误注入的模式来控制或支持。因此,学习应用微服务之间的因果关系的初始方面涉及针对一个或多个微服务的选择性错误注入。
错误传播是指在计算的给定阶段从在前一阶段的错误中出现误差的一部分的方式的术语。在微服务架构中,更具体地,在微服务之间的依赖关系中,在一个微服务中引入的错误可以将不确定性扩展到一个或多个相关的微服务中。当注入错误时,收集对应的应用日志数据。在本领域中应理解,日志数据是自动产生的并且加时间戳的事件文档。关于应用和它的嵌入的微服务,更具体地,关于(一个或多个)微服务错误注入,日志数据识别所注入的错误对尚未直接经受错误注入的其他应用微服务的直接或间接影响。在实施例中,日志数据是记录与一个或多个微服务的功能相关联的消息的日志文件,该一个或多个微服务包括受经故障注入的(一个或多个)微服务影响的一个或多个微服务以及在实施例中未受所注入的故障影响的一个或多个微服务。在示例性实施例中,日志文件被用于与所注入的故障相关联的错误跟踪。因此,错误注入人为地在应用微服务架构中创建问题,并且日志文件记录与所注入的错误相关的一个或多个微服务的日志数据。
在本领域中应理解,日志文件包括包含文本和对应的时间戳的多个消息。某些消息或消息内容可包含关于所注入的错误的不相关或无关信息。例如,日志数据可以包括特定微服务可能不能响应于被注入不同应用微服务中的故障来处理请求的消息,例如,错误消息。为了寻址日志文件,在实施例中是寻址大量的日志数据,对在步骤(304)中收集的日志文件和对应的日志数据进行处理或预处理以滤出(例如移除)与所注入的(一个或多个)错误不相关的日志数据(306)。在实施例中,一个或多个定义的关键字被应用于日志文件作为过滤器以提取相关的或有用的日志数据,在一个实施例中,其返回所有错误日志。在示例性实施例中,原始日志数据的子集在过滤步骤之后保留,并且与日志数据的子集相关的微服务是因果学习的主题。在步骤(306)之后,采用通过干预模式的因果学习来识别作为在预处理(308)中幸存的日志数据的主体的微服务之间的定向连接。在图4和图5中示出和描述因果学习的细节。在实施例中,因果学习是采用因果推理的一种机器学习。在步骤(308),因果学习包括:基于干预模式和对应的干预矩阵来学习微服务之间的相关性得分,以及使用传递简约来表示所学习的因果图。在步骤(308)处的相关性得分评估识别作为故障的主体的微服务s′与从日志数据的子集中识别的(一个或多个)微服务之间的对应性的强度。如图4所示和所描述的,相关性得分相对于可配置的阈值来评估。来自步骤(308)的评估生成DAG形式的输出,该DAG包括超过相关性得分评估的一组边,其中,每个边表示作为故障的主体的微服务和受影响的微服务(310)。在示例性实施例中,如本文所示的,在步骤(310)中生成的图经受传递简约以选择性地移除一个或多个边,并生成因果图(312)。传递简约是对有向图的边移除操作,其保留了该图的一些重要特性和结构。传递简约用于保留所学习的因果图的重要结构特性,并建立所学习的因果图的祖先以用于定位故障服务。下面详细示出和描述了传递简约的细节。因此,利用与故障注入相关联的日志数据作为源以生成因果图。
参照图4,提供了示出示例性干预模式的框图(400)。向量v(s′)是微服务s′的干预模式向量,其中s′是作为所注入的故障的主体的微服务。在实施例中并如在此作为示例所描述的,故障注入的方面可以是阻止微服务执行其预期功能的形式。向量v(s′)t表示应用中的其他微服务如何在时间仓t受到被阻止的微服务s′的影响。如在该实例中所示的,向量中的条目采用位形式0和1。在实施例中,向量中的0的条目指示微服务不受被阻止的微服务影响,并且向量中的1的条目指示微服务受到影响,例如,经历错误。类似地,在实施例中,向量条目的表示可以被反转,这样,条目表示不应当被认为是限制性的。本文所示的向量针对在时间仓t上被故障注入的微服务s′,并且记录应用微服务对故障注入的反应。利用多个向量以生成对应的干预矩阵C。在图5中示出并描述了示例性干预矩阵。在示例性实施例中,如下评估微服务s′与所有其他微服务之间的相关性的强度:
corr(s′,s)=v(s′)TC[:,s]/T
≈E[错误日志的I(干预s′)计数]
其中,corr(s′,s)是微服务s′和微服务s的相关性得分,v(s′)是微服务s′的干预模式向量,v(s′)T是向量v(s′)的转置,并且C[:,s]是干预矩阵C中的微服务s的列。因此,基于对应性评估来评估与被故障注入的微服务s′相关的一组微服务S,以选择性地填充和形成所生成的因果图,其中该组微服务S是经处理的错误日志的主体并发出一个或多个错误。
参考图5,提供了示出示例性干预矩阵(510)的框图(500)。如图所示,干预矩阵C(s′)针对被故障注入的微服务s′。如在该示例中所示的,存在五个微服务。这些微服务之一s′被注入错误或故障,并且剩余的四个微服务s0、s1、s2和s3受到所注入的错误影响或不受其影响。如在此作为示例所示的,在时间段t=1,在(520)处示出微服务s0有两个错误,在(522)处示出微服务s1有一个错误,并且分别在(524)和(526)处示出微服务s2和s3中的每一个没有错误。示出干预矩阵C包括多个时间段(530),在此也被称为时间仓T。因此,C(s′)是由多个干预模式向量形成的干预矩阵,其中,干预矩阵指示受到故障注入微服务s′影响的所有微服务的反应。
对于具有表示微服务的个体节点和表示节点之间的祖先关系的定向边的DAG,在步骤(310)处的因果学习包括:针对DAG中的具有故障注入的节点估计祖先边(312)。如图1中所示和所描述的,相关性评估在生产环境中发生并由生产管理器管理(154)。以下伪代码展示与微服务的依赖性相关联的祖先边的相关性的估计:
其中,C是示出受被注入到微服务s′中的故障影响的其他微服务(例如,s0、s1、s2和s3)的干预矩阵,如图5中所示,并且E是在应用处理期间发出错误的微服务之间的有向边的元组集合。干预矩阵是干预模式向量v(s′)的汇编。如本文中所示的,学习微服务s′与s之间的相关性得分,并将其相对于用于相关性得分的阈值τ进行评估,该阈值τ在一个实施例中是可调的阈值。例如,如果相关性得分corr(s′,s)>τ,则它指示微服务s′和微服务s具有强相关性。传递简约是有向图上的边移除操作,其保留了图的一些重要特性和结构。在步骤(312)处来自祖先边估计的输出是因果图。如本文所示的向一个或多个选择的微服务进行错误注入的过程被称为部署前故障注入阶段。在实施例中,在理论上保证在本文中所示的所学习的因果图中的因果边的集合仅包含具有高概率的因果关系的真实因果边的集合或子集。因此,基于通过使用一个或多个故障注入而收集的日志数据信息来生成因果图。
通过执行传递简约(314)以确保仅有保留祖先的真实因果边的子集在表示中,根据各种故障注入估计的祖先边被组合成简洁表示。有向图G的传递简约是具有相同数量的顶点和最小数量的边的另一个有向图G′,以使得对于所有顶点对,G中的顶点之间的路径当且仅当这种路径在G′中存在时退出。以下伪代码展示了如应用于因果图E的传递简约:
其中,G表示(a,b)从有向边的集合E中移除的微服务的重新生成的因果图。在实施例中,本文所示出和描述的步骤可以离线执行。因此,传递简约用于识别表示与被故障注入的微服务s′相关的微服务的子集的依赖性的所学习的因果图的简洁表示。
参照图6,提供说明使用来自图3的输出的传递简约因果图以用于生产环境中的故障定位的流程图(600)。在示例性实施例中,实时地执行本文所描述的故障定位。检测未知干预的微服务的错误(602),并且收集与所检测到的错误相对应的所有日志数据(在本文中也被称为第二日志数据)(604)。在示例性实施例中,第二日志数据的收集实时地发生。在第二错误日志收集之后,利用来自预发布环境的所学习的传递简约因果图G来定位故障(606)。以下伪代码展示了估计有故障的微服务的位置(608):
其中,GT是所学习的因果图G的传递简约。在伪码中所示的相关性评估使用相同的函数,例如,1{·}。例如,如果corr=[0.8 0.1 0.1 0.9 0.1 0.2...]∈ZN×1,并且τ=0.3,则1{0.8>.3}=1并且1{0.1<.3}=0。基于该示例,1{corr}=[1 0 0 1 0 0...]∈ZN×1。距离评估Dist(s)利用相关矩阵A来测量行之间的距离。在实施例中,相关矩阵A的行各自具有位形式的条目,其中1表示微服务在所学习的因果图中具有祖先,并且0表示相反,例如,在所学习的因果图中没有祖先。距离评估表示其中两条对应的数据不同的点的数量。在实施例中,距离评估可以采用汉明距离或余弦相似度的形式。在示例性实施例中,度量函数产生故障的估计位置,并产生可能故障位置的前k列表,其中,k是可配置的值。因此,如本文所示的,基于所学习的因果图G建立相关矩阵A,并且使用距离评估来估计故障的位置。
在图3和图6中示出和描述的过程示出了故障被有计划地或非计划地注入单个微服务中的场景。在实施例中,这些过程可以被扩展为成对地或在微服务的子集中注入故障。类似地,在实施例中,在图6中示出和描述的过程可被扩展到全因果图,而不是传递简约图。如本文所示的,故障定位包括:基于所学习的因果图G建立祖先矩阵A,以及使用距离评估来估计故障的位置。在示例性实施例中,可以从故障定位过程中产生多个估计故障位置,例如前k个。因此,日志数据被累积和处理为用于使用部署前故障注入***来学习因果图G的源,然后,因果图G被实时用于动态和有效地执行故障定位。
本文所描述的***、方法和计算机程序产品的某些示例性实施例以自动的、基本上或完全无监督的方式产生高质量的因果对的集合。示例性实施例还涉及使用因果对以用于进一步处理、表示为因果知识图、以及用于决策支持或预测性分析。
分别用图1和图2所示的工具和API以及图3和图6所示的过程来示出和描述识别和验证因果对的各方面。功能性工具(152)、(154)和(156)的各方面及其相关联的功能可以被体现在处于单个位置的计算机***/服务器中,或者在实施例中,可以被配置在共享计算资源的基于云的***中。参考图7,提供了示出计算机***/服务器(702)(在下文中被称为主机(702))的示例的框图(700),该计算机***/服务器(702)与基于云的支持***通信以实现上面参考图3和图6描述的过程。主机(702)可与许多其他通用或专用计算***环境或配置一起操作。可适合与主机(702)一起使用的众所周知的计算***、环境和/或配置的示例包括但不限于个人计算机***、服务器计算机***、瘦客户机、厚客户机、手持式或膝上型设备、多处理器***、基于微处理器的***、机顶盒、可编程消费电子产品、网络PC、微型计算机***、大型计算机***、以及包括以上***、设备及其等效物中的任一者的文件***(例如,分布式存储环境和分布式云计算环境)。
可以在由计算机***执行的计算机***可执行指令(诸如程序模块)的一般上下文中描述主机(702)。一般地,程序模块可包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。主机(702)可以在分布式云计算环境(710)中实现,其中任务由通过通信网络链接的远程处理设备执行。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机***存储介质中。
如图7所示,示出采用通用计算设备形式的主机(702)。主机(702)的组件可以包括但不限于一个或多个处理器或处理单元(704)()例如硬件处理器)、***存储器(706)以及将包括***存储器(706)的各种***组件耦合到处理单元(704)的总线(708)。总线(708)表示若干类型的总线结构中的任何一种或多种,包括存储器总线或存储器控制器、***总线、加速图形端口、以及使用各种总线架构中的任一种的处理器或局部总线。作为示例而非限制,这种体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线、以及***组件互连(PCI)总线。主机(702)通常包括各种计算机***可读介质。这种介质可以是可由主机(702)访问的任何可用介质,并且它包括易失性和非易失性介质、可移除和不可移除介质。
***存储器(706)可包括采用易失性存储器形式的计算机***可读介质,诸如随机存取存储器(RAM)(730)和/或高速缓存存储器(732)。仅作为示例,存储***(734)可被提供用于从不可移除的非易失性磁介质(未示出,通常被称为“硬盘驱动器”)读取和向其写入。尽管未示出,可以提供用于从可移除的非易失性磁盘(例如,“软盘”)读取或向其写入的磁盘驱动器,以及用于从可移除的非易失性光盘(如CD-ROM、DVD-ROM或其他光学介质)读取或向其写入的光盘驱动器。在这种情况下,每一个可以通过一个或多个数据介质接口连接到总线(708)。
具有一组(至少一个)程序模块(742)的程序/实用程序(740)可以被存储在***存储器(706)中,作为示例而非限制,以及操作***、一个或多个应用程序、其他程序模块和程序数据。操作***、一个或多个应用程序、其他程序模块和程序数据中的每一个或它们的一些组合可以包括网络环境的实现。程序模块(742)通常执行各实施例的功能和/或方法以支持和启用通过选择性故障注入的主动学习以用于因果图生成,并且利用主动学习的输出进行动态故障定位。例如,该组程序模块(742)可包括如图1中所描述的工具(152)、(154)和(156)。
主机(702)还可与一个或多个外部设备(714)(例如键盘、定点设备等)、显示器(724)、使得用户能够与主机(702)交互的一个或多个设备、和/或使得主机(702)能够与一个或多个其他计算设备通信的任何设备(例如,网卡、调制解调器等)通信。这种通信可以经由输入/输出(I/O)接口(722)发生。此外,主机(702)可以经由网络适配器(720)与一个或多个网络(诸如局域网(LAN)、通用广域网(WAN)和/或公共网络(例如,互联网)的)通信。如所描绘的,网络适配器(720)经由总线(708)与主机(702)的其他组件通信。在实施例中,分布式文件***(未示出)的多个节点经由I/O接口(722)或者经由网络适配器(720)与主机(702)通信。应当理解,虽然未示出,但是其他硬件和/或软件组件可以与主机(702)结合使用。示例包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器和数据归档存储***等。
在本文档中,术语“计算机程序介质”、“计算机可用介质”和“计算机可读介质”用于泛指诸如***存储器(706)(包括RAM(730)、高速缓存(732)和存储***(734)(诸如可移除存储驱动器和安装在硬盘驱动器中的硬盘))的介质。
计算机程序(也称为计算机控制逻辑)被存储在***存储器(706)中。计算机程序还可以经由通信接口(诸如网络适配器(720))来接收。这种计算机程序在运行时使得计算机***能够执行如本文所讨论的本实施例的特征。具体地,计算机程序在运行时使处理单元(704)能够执行计算机***的特征。因此,这种计算机程序表示计算机***的控制器。
在实施例中,主机(702)是云计算环境的节点。如本领域中已知的,云计算是一种服务交付模型,用于实现对共享的可配置计算资源(例如,网络、网络带宽、服务器、处理、存储器、存储、应用、VM和服务)池的方便、按需的网络访问,可配置计算资源可以以最小的管理成本或与服务提供商进行最少的交互来快速供应和释放。这种云模式可以包括至少五个特性、至少三个服务模型和至少四个部署模型。这种特性的实例如下:
按需自助式服务:云的消费者可以单方面自动地按需提供计算能力(诸如服务器时间和网络存储),而无需与服务提供者进行人工交互。
广泛的网络接入:能力在网络上可用并通过促进异构的瘦或厚客户端平台(例如,移动电话、膝上型计算机和PDA)的使用的标准机制来接入。
资源池:提供商的计算资源被归入资源池以使用多租户模型来服务多个消费者,其中不同的物理和虚拟资源根据需求被动态地分配和再分配。一般情况下,消费者不能控制或不知道所提供的资源的确切位置,但是可以在较高抽象程度上指定位置(例如国家、州或数据中心),因此具有位置无关性。
迅速弹性:可以迅速且有弹性地(在一些情况下自动地)提供能力以快速向外扩展并被迅速释放以快速缩小。对于消费者,可用于提供的能力通常看起来是无限的,并可以在任何时间以任何数量购买。
可测量的服务:云***通过利用在适于服务类型(例如,存储、处理、带宽和活动用户账户)的某一抽象程度的计量能力,自动地控制和优化资源使用。可以监视、控制和报告资源使用情况,为所利用的服务的提供者和消费者双方提供透明度。
服务模型如下:
软件即服务(SaaS):向消费者提供的能力是使用提供者在云基础架构上运行的应用。可通过诸如网络浏览器的瘦客户机接口(例如,基于网络的电子邮件)来从各种客户机设备访问应用。除了有限的特定于用户的应用配置设置以外,消费者既不管理也不控制包括网络、服务器、操作***、存储、或甚至单个应用能力等的底层云基础架构。
平台即服务(PaaS):向消费者提供的能力是在云基础架构上部署消费者创建或获得的应用,这些应用是使用由提供商支持的编程语言和工具创建的。消费者既不管理也不控制包括网络、服务器、操作***或存储的底层云基础架构,但对其部署的应用具有控制权,对应用托管环境配置可能也具有控制权。
基础架构即服务(IaaS):向消费者提供的能力是提供消费者能够在其中部署并运行包括操作***和应用的任意软件的处理、存储、网络和其它基础计算资源。消费者既不管理也不控制底层云基础架构,但对操作***、存储、所部署的应用具有控制权,对所选择的网络组件(例如,主机防火墙)可能具有有限的控制权。
部署模型如下:
私有云:云基础架构单独为某个组织运行。它可以由该组织或第三方管理,并且可以存在于该组织内部或外部。
共同体云:云基础架构被若干组织共享,并支持具有共同利害关系(例如,任务、安全要求、政策和合规考虑)的特定共同体。它可以由该组织或第三方管理,并且可以存在于该组织内部或外部。
公共云:云基础架构可用于一般公众或大型产业群,并由销售云服务的组织拥有。
混合云:云基础架构由两个或更多云(私有云、共同体云或公共云)组成,这些云依然是独特实体,但是通过使数据和应用能够移植的标准化技术或私有技术(例如,用于云之间的负载平衡的云突发)绑定在一起。
云计算环境是面向服务的,特点集中在无状态性、低耦合性、模块性和语义的互操作性。计算的核心是包括互连节点网络的基础架构。
现在参考图8,示出了说明性云计算网络(800)。云计算网络(800)包括具有云消费者所使用的本地计算设备可以与其通信的一个或多个云计算节点(810)的云计算环境(850)。这些本地计算设备的示例包括但不限于个人数字助理(PDA)或蜂窝电话(854A)、台式计算机(854B)、膝上型计算机(854C)、和/或汽车计算机***(854N)。云计算节点(810)内的各个节点可进一步彼此通信。它们可以被物理地或虚拟地分组(未示出)在一个或多个网络中,诸如如上所描述的私有云、共同体云、公共云或混合云、或其组合。这允许云计算环境(800)提供基础架构即服务、平台即服务和/或软件即服务,而云消费者不需要为其在本地计算设备上维护资源。应当理解,图8中所示的计算设备(854A-N)的类型仅仅是说明性的,云计算环境(850)可在任何类型的网络和/或网络可寻址连接(例如,使用网络浏览器)上与任何类型的计算机化设备通信。
现在参见图9,示出了由图8的云计算网络提供的一组功能抽象层(900)。应当预先理解,图9所示的组件、层和功能旨在仅仅是说明性的,并且实施例不限于此。如所描绘的,提供了以下层和相应的功能:硬件和软件层(910)、虚拟化层(920)、管理层(930)和工作负载层(940)。
硬件和软件层(910)包括硬件和软件组件。硬件组件的示例包括:大型机,在一个示例中是***;基于RISC(精简指令集计算机)架构的服务器,在一个示例中是IBM***;IBM***;IBM***;存储设备;网络和联网组件。软件组件的示例包括网络应用服务器软件,在一个示例中是IBM应用服务器软件;以及数据库软件,在一个示例中是IBM数据库软件。(IBM、zSeries、pSeries、xSeries、BladeCenter、WebSphere和DB2是在全球许多司法辖区中注册的国际商业机器公司的商标)。
虚拟化层(920)提供抽象层,从该抽象层可以提供虚拟实体的以下示例:虚拟服务器;虚拟存储;虚拟网络,包括虚拟专用网络;虚拟应用程序和操作***;以及虚拟客户端。
在一个示例中,管理层(930)可以提供以下功能:资源供应、计量和定价、用户门户、服务水平管理、以及SLA计划和履行。资源供应功能提供用于在云计算环境内执行任务的计算资源和其他资源的动态获取。计量和定价功能提供对在云计算环境中使用资源的成本跟踪,并为这些资源的消耗提供账单或***。在一个示例中,这些资源可以包括应用软件许可。安全功能为云消费者和任务提供身份验证,并为数据和其他资源提供保护。用户门户功能为消费者和***管理员提供对云计算环境的访问。服务水平管理功能提供云计算资源分配和管理,以满足所需的服务水平。服务水平协议(SLA)计划和履行功能提供对根据SLA针对其预测未来需求的云计算资源的预安排和采购。
工作负载层(940)提供可以利用云计算环境的功能的示例。在该层中,可提供的工作负载和功能的示例包括但不限于:地图绘制和导航;软件开发及生命周期管理;虚拟教室的教学提供;数据分析处理;交易处理;以及因果知识识别和提取。
虽然已经示出和描述了本实施例的特定实施例,但是,对于本领域技术人员来说将显而易见的是,基于本文的教导,可以在不脱离实施例及其更广泛的方面的情况下进行改变和修改。因此,所附的权利要求在其范围内包括在实施例的真实精神和范围内的所有这种改变和修改。此外,应当理解,实施例仅由所附的权利要求限定。本领域技术人员将理解,如果意在特定数量的所引入的权利要求元素,则这种意图将在权利要求中明确地叙述,并且在没有这种叙述的情况下,不存在这样的限制。作为非限制性示例,为了帮助理解,以下所附的权利要求包含了介绍性短语“至少一个”和“一个或多个”的使用以介绍权利要求元素。然而,这种短语的使用不应被解释为暗示通过不定冠词“一”或“一个”引入权利要求元素将包含这种引入的权利要求元素的任何特定权利要求限制为仅包含一个这种元素的实施例,即使当相同的权利要求包括引入性短语“一个或多个”或“至少一个”以及不定冠词(诸如“一”或“一个”)时;这同样适用于定冠词在权利要求中的使用。如在本文中使用的,术语“和/或”是指任一个或两者(或任何组合或所有所指代的术语或表达),例如,“A、B和/或C”涵盖单独A、单独B、单独C、A和B、A和C、B和C、以及A、B和C。
本实施例可以是***、方法和/或计算机程序产品。此外,本实施例的所选择的方面可以采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)、或者组合软件和/或硬件方面的实施例的形式,在本文中可以统称为“电路”、“模块”或“***”。此外,本实施例的方面可以采取计算机程序产品的形式,该计算机程序产品体现在其上具有用于使处理器执行本实施例的方面的计算机可读程序指令的(一个或多个)计算机可读存储介质中。由此体现,所公开的***、方法和/或计算机程序产品可操作以提供对识别和验证因果对的改进。
计算机可读存储介质可以是可保持并存储由指令执行设备使用的指令的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备、或前述存储设备的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、诸如在上面记录有指令的打孔卡或凹槽中的凸起结构的机械编码设备、以及上述设备的任何适当的组合。如本文所使用的计算机可读存储介质不应被解释为是暂时性信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤线缆的光脉冲)、或通过导线传输的电信号。
本文描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络(例如互联网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本实施例的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据、或者以一种或多种编程语言(包括面向对象的编程语言,例如Smalltalk、C++等)和过程编程语言(例如“C”编程语言或类似的编程语言)的任意组合编写的源代码或目标代码。计算机可读程序指令可以完全在用户的计算机上执行、部分在用户的计算机上执行、作为独立的软件包执行、部分在用户的计算机上并且部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种场景下,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者可以连接到外部计算机(例如,使用互联网服务提供商通过互联网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化,以便执行本实施例的方面。
在此参考根据本发明实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述本发明的各方面。将理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机可读程序指令来实现。
这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,以使得经由计算机或其他可编程数据处理装置的处理器而执行的指令创建用于实现流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,其可以引导计算机、可编程数据处理装置和/或其他设备以特定方式工作,已使得在其中存储有指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图的一个或多个框中指定的功能/动作的各方面的指令。
计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使一系列操作步骤将在计算机、其他可编程装置或其他设备上执行,以产生计算机实现的过程,以使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图的一个或多个框中指定的功能/动作。
附图中的流程图和框图示出了根据本发明的各种实施例的***、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个框可以表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方案中,框中所注明的功能可不按图中所注明的次序发生。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作或执行专用硬件和计算机指令的组合的专用的基于硬件的***来实现。
应当理解,尽管为了说明的目的在此已经描述了特定实施例,但是,在不脱离实施例的精神和范围的情况下可以进行各种修改。具体地,识别和验证因果对可以由不同的计算平台或跨多个设备执行。此外,数据存储和/或语料库可以是本地化的、远程的、或跨多个***分散的。因此,实施例的保护范围仅由所附的权利要求及其等同物限定。
Claims (21)
1.一种计算机***,包括:
计算机处理器,其可操作地耦合到存储器;
与所述计算机处理器和存储器通信的人工智能AI平台,所述AI平台包括:
预发布管理器,其被配置为学习两个或更多个应用微服务之间的因果关系,所述学习包括:
收集与一个或多个选择性注入的错误相对应的第一微服务错误日志数据;以及
基于所收集的第一微服务错误日志数据,生成所学习的因果图,所述所学习的因果图表示受所述选择性错误注入影响的应用微服务的依赖性;
生产管理器,其可操作地耦合到所述预发布管理器,所述生产管理器被配置为动态地定位应用错误的源,所述定位包括:
收集与所述应用错误相对应的第二微服务错误日志数据;
基于所述所学习的因果图和所收集的第二微服务错误日志数据,建立祖先矩阵;以及
利用所述祖先矩阵来识别所述错误的所述源;以及
引导器,其可操作地耦合到所述生产管理器,被配置为识别与所识别的错误源相关联的微服务。
2.根据权利要求1所述的计算机***,其中,两个或更多个应用微服务之间的所述因果关系的学习还包括:所述预发布管理器过滤所收集的第一微服务错误日志数据以选择性地移除第一错误日志数据的子集。
3.根据权利要求1所述的计算机***,其中,应用微服务之间的所述因果关系的学习和所述因果图的生成离线发生。
4.根据权利要求1所述的计算机***,其中,故障定位实时在线发生。
5.根据权利要求1所述的计算机***,还包括:所述预发布管理器,所述预发布管理器被配置为将传递简约应用于所述所学习的因果图。
6.根据权利要求1所述的计算机***,其中,利用所述祖先矩阵包括:所述生产管理器识别所述错误的多个潜在源,并且所述计算机***进一步包括:所述生产管理器,其被配置为应用距离度量以估计所述错误源,其中,所述距离度量包括汉明距离或余弦相似度。
7.一种计算机实现的方法,包括:
学习两个或更多个应用微服务之间的因果关系,其包括:
收集与一个或多个选择性注入的错误相对应的第一微服务错误日志数据;以及
基于所收集的第一微服务错误日志数据,生成所学习的因果图,所述所学习的因果图表示受所述选择性错误注入影响的微服务的依赖性;以及
动态地定位应用错误的源,其包括:
收集与所述应用错误相对应的第二微服务错误日志数据;
基于所述所学习的因果图和所收集的第二微服务错误日志数据,建立祖先矩阵;以及
利用所述祖先矩阵来识别所述错误的所述源;以及
识别与所识别的错误源相关联的微服务。
8.根据权利要求7所述的方法,其中,学习两个或更多个应用微服务之间的因果关系还包括:过滤所收集的第一微服务日志数据以选择性地移除第一错误日志数据的子集。
9.根据权利要求7所述的方法,其中,学习两个或更多个应用微服务之间的因果关系和生成所述因果图离线发生。
10.根据权利要求7所述的方法,其中,故障定位实时在线发生。
11.根据权利要求7所述的方法,还包括:将传递简约应用于所述所学习的因果图。
12.根据权利要求7所述的方法,其中,利用所述祖先矩阵识别所述错误的多个潜在源,并且所述方法还包括:应用距离度量以估计所述误差源,其中,所述距离度量包括汉明距离或余弦相似度。
13.一种计算机实现的方法,包括:
训练人工智能AI模型,其包括:
收集与一个或多个选择性注入的微服务故障相对应的第一错误日志数据;以及
基于所收集的第一错误日志数据,学习因果图,所述因果图表示受影响的应用微服务的依赖性;以及
动态地定位应用故障,其包括:
收集与所述应用故障的检测相对应的第二错误日志数据;
利用所述第二错误日志数据和所学习的因果图来识别所述应用故障的源。
14.根据权利要求13所述的方法,其中,训练所述AI模型离线发生,并且定位所述应用故障实时发生。
15.根据权利要求13所述的方法,其中,动态地定位所述应用故障还包括:应用基于距离的阈值化以估计一个或多个可能应用故障的源。
16.根据权利要求13所述的方法,其中,训练所述AI模型还包括:控制故障注入,以及在接收到所述故障注入时估计所述微服务的祖先边。
17.根据权利要求16所述的方法,其中,训练所述AI模型还包括:将传递简约应用于所述所学习的因果图,所述传递简约组合来自两个或更多个被控制的故障注入的所估计的祖先边。
18.一种计算机实现的***,包括:
计算机处理器,其可操作地耦合到存储器;
与所述计算机处理器和存储器通信的人工智能AI平台,所述AI平台包括:
预发布管理器,其被配置为训练AI模型,所述训练包括:
收集与一个或多个选择性注入的微服务故障相对应的第一错误日志数据;以及
基于所收集的第一错误日志数据,学习因果图,所述因果图表示受影响的应用微服务的依赖性;以及
生产管理器,其可操作地耦合到所述预发布管理器,被配置为动态地定位应用故障,所述定位包括:
收集与所述应用故障的检测相对应的第二错误日志数据;以及
利用所述第二错误日志数据和所学习的因果图来识别所述应用故障的源。
19.根据权利要求18所述的计算机***,还包括:所述生产管理器,其被配置为应用基于距离的阈值化以估计一个或多个可能应用故障的源。
20.一种计算机程序产品,包括;
计算机可读存储设备;以及
在所述计算机可读存储设备内体现的程序代码,所述程序代码可由所述处理器执行以执行权利要求7至17中任一项的方法的步骤。
21.一种计算机可读存储介质,包括计算机程序代码,所述计算机程序代码在由信息处理***执行时执行权利要求7至17中任一项的方法的步骤。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/393,130 US20230040564A1 (en) | 2021-08-03 | 2021-08-03 | Learning Causal Relationships |
US17/393130 | 2021-08-03 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115705255A true CN115705255A (zh) | 2023-02-17 |
Family
ID=85152490
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210914726.0A Pending CN115705255A (zh) | 2021-08-03 | 2022-08-01 | 学习因果关系 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230040564A1 (zh) |
JP (1) | JP2023022831A (zh) |
CN (1) | CN115705255A (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022072081A1 (en) * | 2020-09-30 | 2022-04-07 | Arris Enterprises Llc | Infrastructure monitoring system |
CN116307274B (zh) * | 2023-05-18 | 2023-08-18 | 北京航空航天大学 | 一种考虑因果干预的城市区域能耗预测方法 |
-
2021
- 2021-08-03 US US17/393,130 patent/US20230040564A1/en active Pending
-
2022
- 2022-08-01 CN CN202210914726.0A patent/CN115705255A/zh active Pending
- 2022-08-03 JP JP2022123687A patent/JP2023022831A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230040564A1 (en) | 2023-02-09 |
JP2023022831A (ja) | 2023-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20170123965A1 (en) | Automated test generation for multi-interface enterprise virtualization management environment | |
AU2021273796B2 (en) | Dynamic automation of selection of pipeline artifacts | |
US20210081831A1 (en) | Automatically Determining Poisonous Attacks on Neural Networks | |
JP6689955B2 (ja) | 破損ネットワーク接続の機械学習に基づく識別 | |
US20200293970A1 (en) | Minimizing Compliance Risk Using Machine Learning Techniques | |
CN115705255A (zh) | 学习因果关系 | |
US10552306B2 (en) | Automated test generation for multi-interface and multi-platform enterprise virtualization management environment | |
WO2022009009A1 (en) | Printed circuit board assembly defect detection | |
CN114667507A (zh) | 使用基于应用的剖析的机器学习工作负载的弹性执行 | |
US11972382B2 (en) | Root cause identification and analysis | |
AU2020422535B2 (en) | Searching conversation logs of virtual agent dialog system for contrastive temporal patterns | |
US20230092274A1 (en) | Training example generation to create new intents for chatbots | |
US20220050728A1 (en) | Dynamic data driven orchestration of workloads | |
US12015691B2 (en) | Security as a service for machine learning | |
US20210036974A1 (en) | Generating process flow models using unstructure conversation bots | |
US11205092B2 (en) | Clustering simulation failures for triage and debugging | |
US11714855B2 (en) | Virtual dialog system performance assessment and enrichment | |
WO2022022572A1 (en) | Calculating developer time during development process | |
US12001785B2 (en) | Mining multi-party collaboration platforms to create triaging trees and playbooks | |
US11294759B2 (en) | Detection of failure conditions and restoration of deployed models in a computing environment | |
US10521751B2 (en) | Using customer profiling and analytics to understand, rank, score, and visualize best practices | |
US11811520B2 (en) | Making security recommendations | |
US20210311814A1 (en) | Pattern recognition for proactive treatment of non-contiguous growing defects | |
US20230024397A1 (en) | Classification of mouse dynamics data using uniform resource locator category mapping | |
US11335076B1 (en) | Virtual reality-based device configuration |
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 |