根因错误的聚类方法、装置、设备及计算机可读存储介质
技术领域
本申请实施例涉及信息
技术领域
,涉及但不限于一种根因错误的聚类方法、装置、设备及计算机可读存储介质。背景技术
信息技术(IT,Internet Technology)系统运行中必然会出现一些异常或故障,如何高效地定位系统异常原因或故障一直是业界讨论的热门话题。尤其是将系统的根因错误都汇总聚类在业界一直是难题。相关技术中,在进行系统错误的汇总或分析时,无法获取到整个系统的根因错误,另外,由于软件模块(节点)之间的依赖关系太复杂,使得在故障树的构建时存在一定困难,而且故障传播关系很难做到全而准,导致依靠故障树进行系统的根因分析或定位时效果不佳,对系统的维护困难。
发明内容
有鉴于此,本申请实施例提供一种根因错误的聚类方法、装置、设备及计算机可读存储介质。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种根因错误的聚类方法,所述方法包括:
获取系统的各个根因错误信息和各个根因错误信息对应的错误路径;
当存在至少两个根因错误信息之间的相似度满足预设条件时,将所述至少两个根因错误信息进行合并得到合并根因错误信息;
基于所述至少两个根因错误信息对应的错误路径确定所述合并根因错误信息对应的错误路径;
根据所述合并根因错误信息对应的错误路径构建至少一棵故障树,以对系统的各个根因错误进行分析。
本申请实施例提供一种根因错误的聚类装置,其特征在于,所述装置包括:
获取模块,用于获取系统的各个根因错误信息和各个根因错误信息对应的错误路径;
合并模块,用于当存在至少两个根因错误信息的相似度满足预设条件时,将所述至少两个根因错误信息进行合并得到合并根因错误信息;
第一确定模块,用于基于所述至少两个根因错误信息分别对应的错误路径确定所述合并根因错误信息对应的错误路径;
第一构建模块,用于根据所述合并根因错误信息对应的错误路径构建至少一棵故障树,以对系统的各个根因错误进行分析。
本申请实施例提供一种根因错误的聚类设备,所述设备至少包括:
处理器;以及
存储器,用于存储可在所述处理器上运行的计算机程序;
其中,所述计算机程序被处理器执行时实现上述根因错误的聚类方法的步骤。
本申请实施例提供一种计算机可读存储介质,所述计算机存储介质中存储有计算机可执行指令,该计算机可执行指令配置为执行上述根因错误的聚类方法的步骤。
本申请实施例提供一种根因错误的聚类方法、装置、设备及计算机可读存储介质,通过将各个根因错误信息之间的相似度满足预设条件的至少两个错误信息进行合并,并基于所述至少两个根因错误信息对应的错误路径确定所述合并根因错误信息对应的错误路径,根据所述合并根因错误信息对应的错误路径构建至少一棵故障树,可以方便高效地对系统中的错误进行根因分析和对根因错误涉及到的路径和节点进行详细汇总展示,从而方便运维人员有针对性地改进系统,进而使得系统获取更好的稳定性和性能。
附图说明
在附图(其不一定是按比例绘制的)中,相似的附图标记可在不同的视图中描述相似的部件。附图以示例而非限制的方式大体示出了本文中所讨论的各个实施例。
图1为本申请实施例提供的根因错误的聚类方法的一种实现流程示意图;
图2为本申请实施提供的在系统正常时的获取的调用关系的示意图;
图3为本申请实施例中提供的在系统异常时获取的调用关系及错误信息的示意图;
图4为本申请实施例提供的计算各个根因错误信息之间的相似度的实现流程示意图;
图5为本申请实施例提供的另一种根因错误的聚类方法的实现流程示意图;
图6为本申请实施例提供的正常访问系统的调用链关系及相关信息;
图7为本申请实施例提供的在系统异常时获取的调用链及错误信息;
图8为本申请实施例提供的表4中根因错误信息对应的错误路径的调用链关系;
图9为本申请实施例提供的根因错误的聚类装置结构示意图;
图10为本申请实施例提供的根因错误的聚类设备的组成结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
如果申请文件中出现“第一\第二\第三”的类似描述则增加以下的说明,在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
为了更好地理解本申请实施例中提供的根因错误的聚类方法、装置、设备及计算机可读存储介质,首先,对相关技术中的根因错误分析方法存在的问题进行分析说明。相关技术中根因分析方法的实现方案主要包括以下几种:
方案一:对IT系统的入口错误进行聚类汇总分析。
目前很多互联网公司主要是对用户请求收到的错误进行聚类分析。该方案对错误进行了聚类,清晰呈现系统所有的入口错误。但是在该方案中,入口错误一般描述的比较宽泛,比如:超时,无法连接,无响应等,该类错误不是系统故障的根因错误,不利于系统错误的定位和修复。
方案二:对IT系统中出错的具体请求进行根因分析。
该方案是IT系统运维中最常见的解决方案,发现系统出错时,对一条或几条出错的请求通过调用链等技术可以定位到根因,但是该方案中,仅仅只对具体请求相关的个别错误进行根因分析,无法获取到整个系统的所有的根因错误。
方案三:构建故障树。
首先构建一个故障树的超集,通过模块调用链获得模块之间的逻辑调用关系,构成一个可能的故障树,这棵树是真正故障树的一个超集。然后对这个超集中的每个枝进行联动分析,进而对这棵故障树进行剪枝,构成最终的故障传播关系。该方案中,由于软件模块之间的依赖关系太复杂,因此故障树的构建非常难。只有故障传播关系比较全而且准的话,根因分析才具有可行性。在实际情况中,故障传播关系很难做到全而准,依靠故障树进行根因分析效果不佳。
基于相关技术所存在的问题,本申请实施例提供一种根因错误的聚类方法,所述方法应用于根因错误的聚类设备。本实施例提供的方法可以通过计算机程序来实现,该计算机程序在执行的时候,完成本实施例提供的根因聚类方法中各个步骤。在一些实施例中,该计算机程序可以被根因错误的聚类设备中的处理器执行。图1为本申请实施例提供的根因错误的聚类方法的一种实现流程示意图,如图1所示,所述方法包括:
步骤S101,根因错误的聚类设备获取系统的各个根因错误信息和各个根因错误信息对应的错误路径。
本申请实施例中,所述系统为IT系统,在IT系统可以包括多个节点,所述多个节点可以分别是独立的设备也可以是集成在一起的设备。在一些实施例中,所述节点也可以是具有基础功能的模块,多个具有基础功能的模块组成具完整功能的IT系统。
本申请实施例中,所述根因错误信息至少包括:根因错误和根因错误所在的节点,本申请实施例中,当存在根因错误时,通常会导致系统的功能发生故障或异常,因此根因错误也可以叫根因故障或根因异常。所述根因错误信息可以表示为:(根因错误所在节点:根因错误),示例性地,根因错误信息表示为:(节点D:errMsg3)。
本申请实施例中,错误路径中包括多个节点。所述错误路径可以通过各个节点的调用关系及各个节点的根因错误确定。示例性地,根因错误errMsg3对应地错误路径为:节点A>节点B>节点D。
本申请实施例中,可以在系统中的各个节点部署探针,该探针用于获取各个节点的根因错误、各个节点之间的调用关系及错误路径。对应地,步骤S101在实现时可以是根因错误的聚类设备通过各个节点部署的探针获取系统中各个根因错误信息和各个根因错误信息对应的错误路径。
本申请实施例中,获取到的各个根因错误信息和各个根因错误信息对应的错误路径可以用一个表格来表示,根因错误信息用key表示,根因错误信息对应的错误路径用value表示,建立根因错误信息与根因错误路径对应的表格。参见表1,如表1所示,包括根因错误信息和对应的错误路径。
表1、根因错误信息及根因错误信息对应的错误路径
序号
Key
Value
1
节点D:errMsg3
节点A>节点B>节点D
2
节点D:errMsg4
节点A>节点Y>节点D
3
节点D:errMsg5
节点E>节点D
4
节点D:errMsg6
节点E>节点D
步骤S102,当存在至少两个根因错误信息之间的相似度满足预设条件时,根因错误的聚类设备将所述至少两个根因错误信息进行合并得到合并根因错误信息。
本申请实施例中,可以通过各个根因错误信息之间的相似度来确定各个根因信息中是否有满足预设条件的至少两个根因错误信息。在实际实现时,可以预先设定相似度阈值,当至少两个根因错误信息之间的相似值小于相似度阈值,则表明该至少两个根因错误信息之间的相似度满足预设条件;当至少两个根因错误信息之间的相似度大于相似度阈值时,则表明该至少两个根因错误信息之间的相似度不满足预设条件。
本申请实施例中,可以通过哈希算法计算各个根因错误信息之间的相似值,再根据各个根因错误信息之间的相似值来确定各个根因错误信息的相似度是否满足预设条件。承接上面的示例,例如,通过哈希算法得到根因错误信息1和根因错误信息2的相似值为2;根因错误信息1和根因错误信息3的相似值为2、根因错误信息2和根因错误信息3的相似值为1设定的相似度阈值为3,此时根因错误信息1、根因错误信息2和根因错误信息3两两之间的相似值都小于相似度阈值,根因错误信息1、根因错误信息2和根因错误信息3也即相似。而根因错误信息4分别与根因错误信息1、根因错误信息2或根因错误信息3之间的相相似值都大于3,也即根因错误信息4分别与根因错误信息1、根因错误信息2或根因错误信息3的相似度并不满足预设条件,即根因错误信息4与根因错误信息1、根因错误信息2或根因错误信息3都不相似。
本申请实施例中,当存在至少两个根因错误信息之间的相似度满足预设条件时,根因错误的聚类设备将所述至少两个根因错误信息进行合并得到合并根因错误信息,承接上面的示例,将根因错误信1为:(节点D:errMsg3)、根因错误信息2为:(节点D,errMsg4)和根因错误信息3(节点D:errMsg5)进行合并,得到合并根因错误信息为:(节点D,errMsg3),当然,这里的合并根因错误信息也可以表示为:(节点D,errMsg4)。
步骤S103,根据错误聚类设备基于所述至少两个根因错误信息对应的错误路径确定所述合并根因错误信息对应的错误路径。
本申请实施例中,所述合并根因错误信息对应的错误路径包括所述至少两个根因错误信息对应的错误路径。承接上面的示例,同样也可以建立合并根因错误信息和合并根因错误信息对应的错误路径的表格,合并根因错误信息也用key表示,合并根因错误信息对应的错误路径也用value表示,合并后的结果用表2表示。
表2、合并根因错误信息及合并根因错误信息对应的错误路径
步骤S104,根因错误的聚类设备根据所述合并根因错误信息对应的错误路径构建至少一棵故障树,以对系统的各个根因错误进行分析。
本申请实施例中,当得到合并根因错误信息后,可以通过合并根因错误信息对应的错误路径构建至少一棵故障树。本申请实施例中,可以根据错误路径入口节点的不同,将合并根因错误信息对应的错误路径转换为树型结构,从而建立至少一棵错误路径的故障树。本申请实施例中,错误路径的入口节点可以根据首先接收到的用户访问请求的数据流来确定入口节点。
承接上面的示例,合并根因错误信息对应的故障树用表3表示。
表3、本申请实施例提供的根因错误信息对应的故障树
从表3中可以看出,不同的根因错误信息分别构建不同的故障树,相似度满足预设条件的根因错误信息构建至少一棵故障树,其中,入口节点包括第一入口节点和第二入口节点,第一入口节点和第二入口节点不同,第一入口节点构建第一故障树,第二入口节点构建第二故障树,第一故障树和第二故障树不同。
本申请实施例提供的根因错误的聚类方法,通过将各个根因错误信息之间的相似度满足预设条件的至少两个错误信息进行合并,并基于所述至少两个根因错误信息对应的错误路径确定所述合并根因错误信息对应的错误路径,根据所述合并根因错误信息对应的错误路径构建至少一棵故障树,可以方便高效地对系统中的错误进行根因分析和对根因错误涉及到的路径和节点进行详细汇总展示,从而方便运维人员有针对性地改进系统,进而使得系统获取更好的稳定性和性能。
在一些实施例中,步骤S101“根因错误的聚类设备获取系统的各个根因错误信息和各个根因错误信息对应的错误路径”可以通过以下步骤实现:
步骤S1011,根因错误的聚类设备获取系统中各个节点的调用关系和错误信息。
本申请实施例中,根因错误的聚类设备可以通过部署在各个节点的探针获取各个节点的调用关系和各个节点是否存在错误信息。探针可以抓取到用户访问的数据流、、各个节点之间的调用关系、各个节点的错误以及错误信息的上下层关系。
本申请实施例中,各个节点之间的调用关系可以是在系统正常时获取的,示例性地,图2为本申请实施提供的在系统正常时的获取的调用关系的示意图,如图2所示,用户访问节点A,节点A调用节点B和节点C,节点B调用节点D,得到各个节点之间的调用关系。对应地,步骤S1011,根因错误的聚类设备获取系统中各个节点的调用关系和错误信息,具体实现时,可以是在系统正常时获取系统中各个节点的调用关系,然后在系统异常时,获取各个节点中是否存在错误信息。在一些实施例中,各个节点之间的调用关系可以是在系统异常时获取的,图3为本申请实施例中提供的在系统异常时获取的调用关系及错误信息的示意图,如图3所示,在系统异常时,同时获取了各个节点的调用关系和节点A、节点B和节点D存在错误信息。
步骤S1012,根因错误的聚类设备根据所述调用关系和所述错误信息确定各个根因错误信息和各个根因错误信息对应的错误路径。
本申请实施例中,通过对调用关系和错误信息进行分析,可以确定各个根因错误信息和各个根因错误信息对应的错误路径,承接上面的示例,通过分析调用关系及各个节点是否存在错误信息可以获取到错误路径:节点A>节点B>节点D,可以分析节点A、节点B和节点D的错误信息得到根因错误信息,例如,节点A和节点C的错误信息表征是节点D的错误导致的,那么节点D的错误信息为根因错误,所述根因错误信息包括根因错误所在的节点和根因错误,示例性地,所述根因错误信息为:(节点D:errMsg3)。
在一些实施例中,在步骤S102之前,所述方法还包括:
步骤S101A,根因错误的聚类设备计算各个根因错误信息之间的相似度。
本申请实施例中,根因错误的聚类设备可以通过预设的哈希算法计算各个根因错误信息之间的相似度,通过哈希算法计算各个根因错误信息之间的相似值,并利用各个根因错误信息之间的相似值来表征各个根因错误信息之间相似度。
步骤S101B,根因错误的聚类设备判断是否存在至少两个根因错误信息之间的相似度满足预设条件。
本申请实施例中,可以设定相似度阈值,在一些实施例中,所述相似度阈值为海明距离,当至少两个根因错误信息之间的相似值小于相似度阈值则表明该至少两个根因错误信息之间的相似度满足预设条件;当至少两个根因错误信息之间的相似值大于相似度阈值时,则表明该至少两个根因错误信息之间的相似度不满足预设条件。本申请实施例中,当存在至少两个根因错误信息之间的相似度满足预设条件时,执行步骤S102。当不存在至少两个根因错误信息的相似度满足预设条件时,根因错误的聚类设备根据根因错误信息集合中各个根因错误对应的错误路径构建故障树。
在一些实施例中,步骤S101A,根因错误的聚类设备计算各个根因错误信息之间的相似度可以通过步骤S101A1至步骤S101A4来实现,图4为本申请实施例提供的计算各个根因错误信息之间的相似度的实现流程示意图,如图4所示,包括:
步骤S101A1,根因错误的聚类设备分别提取各个根因错误信息的关键字。
对各个根因错误信息进行关键字抽取,得到抽取出的多个(关键词,权重)对。例如,key对应有n个根因错误信息,即抽取n个关键词,得到n个(关键词,权重)对,其中n为正整数。
步骤S101A2,根因错误的聚类设备通过预设的哈希(hash)算法分别计算所述各个根因错误信息的关键字对应的哈希值。
本申请实施例中,所述预设的hash算法是simhash算法。对应地步骤S101A2在实现时可以是,通过simhash算法分别计算所述各个根因错误信息的关键字对应的simhash值。对关键字进行hash运算,hash位数可以自行设定,承接上面的示例,hash位数为N位,那么得到n个(hash,权重)对,这里的(hash,权重)对也即得到关键值对应的simhash值,其中,N为正整数。
步骤S101A3,根因错误的聚类设备根据各个哈希值确定所述各个根因错误信息的关键字之间的相似值。
承接上面的示例,步骤S101A3在实现时可以是,根据所述各个根因错误信息的关键字对应的simhash值确定所述各个根因错误信息的关键字之间的相似值。根因错误的聚类设备对(hash,权重)进行位的纵向累加,如果位数为1,则加权重,如果位数为0,则减权重,最后得到N个数字。对这N个数字进行转化,正数为1,负数为0,最终转换为N位1或0的二进制。对N位1或0的二进制进行异或计算,得到N位二进制。确定N位二进制中1的个数,从而确定出各个关键字对应的相似值。
步骤S101A4,根因错误的聚类设备根据所述各个根因错误信息的关键字之间的相似值确定所述各个根因错误信息之间的相似度。
本申请实施例中,可以计算两个关键字对应的相似值来确定两个关键字之间的相似度,从而确定出各个根因错误信息之间的相似度。
本申请实施例提供的方法,通过预设的hash算法来确定各个根因错误信息是否满足预设条件,使得判断更准确,从而使得在进行根因错误信息合并时,得到的合并根因错误信息更准确,进而使得构建的故障树根准确。
在一些实施例中,步骤S104“根因错误的聚类设备根据所述合并根因错误信息对应的错误路径构建至少一棵故障树”可以通过以下步骤来实现:
步骤S1041,根因错误的聚类设备获取所述合并根因错误信息对应的错误路径中的入口节点。
本申请实施例中,可以通过各个节点部署的探针获取是哪个节点接收的用户请求,接收用户请求的节点即为入口节点。在一些实施例中,也可以从错误路径来确定入口节点,示例性地,继续参见表3,key对应的(节点D:errMsg3)(节点D:errMsg3)对应的错误路径包括:节点A>节点B>节点D;节点A>节点Y>节点D;节点E>节点D,确定入口节点包括:节点A和节点E。
步骤S1042,根因错误的聚类设备判断入口节点是否相同。
本申请实施例中,当入口节点相同时,进入步骤S1043。当入口节点不同时,进入步骤S1044。
步骤S1043,根因错误的聚类设备根据所述入口节点对应的错误路径构建一棵故障树。
本申请实施例中,当入口节点相同,而且根因错误所在的节点相同时,可以将合并根因错误信息对应的错误路径进行合并,形成一个合并错误路径,然后根据合并错误路径构建一棵故障树。
步骤S1044,根因错误的聚类设备根据所述入口节点对应的错误路径构建至少两棵故障树。
承接上面的示例,入口节点包括节点A和节点E,由于节点A对应的两个错误路径:节点A>节点B>节点D、节点A>节点Y>节点D,此时可以将该两个错误路径进行合并,得到一颗故障树。节点E对应的错误路径构建一棵故障树,因此,当入口节点不同时,可以构建至少两个故障树。
本申请实施例提供的方法,根据入口节点的不同,将合并根因错误信息对应的错误路径构建不同的故障树,可以得到同一根因错误造成了哪些节点错误,造成了哪些请求出错,清晰获得系统整体的错误情况。
本申请实施例再提供一种根因错误的聚类方法,图5为本申请实施例提供的另一种根因错误的聚类方法的实现流程示意图,如图5所示,所述方法包括:
步骤S501,预先在各个模块(对应其他实施例中的节点)部署探针,依托于模块部署的探针抓取模块之间调用链、错误路径以及根因错误。
在实际实现时,对IT系统的所有模块都部署探针,探针可以抓取到用户访问的数据流、各个模块之间的调用链关系、各个模块错误信息以及错误信息的上下层关系。比如一个IT系统,用户正常访问系统,图6为本申请实施例提供的正常访问系统的调用链关系及相关信息,如图6所示,用户访问模块A,模块A调用模块B和模块C,模块B调用模块D,此时通过这些调用关系能够获取模块之间的调用链。
如果用户访问出错,其中一种可能情况是由于模块D的错误导致了模块B的错误2,模块B的错误导致了模块A的错误,从而导致用户访问出错。图7为本申请实施例提供的系统的调用链及错误信息,如图7所示,图中的errMsg是表明各个模块的错误信息内容。
通过调用链关系及模块是否存在错误信息可以获取到错误路径:模块A>模块B>模块D,并得到根因错误是模块D的errMsg3。
步骤S502,根因错误的聚类设备对根因错误采用simhash算法进行聚类,将类似的根因错误合并。
本申请实施例中,在获取到根因错误信息和根因错误后,可以构建key和value结构,其中key保存的是根因错误及所在的模块(格式为模块名:错误信息),value保存错误路径。对key根因错误采用simhash算法计算其相似度,相似度采用海明距离,海明距离设定小于M即认为相似,进而对key根因错误进行聚类,并将原value中的值以list方式再次存入value。
承接上面的示例,Key保存的是“模块D:errMsg3”,vale保存的是“模块A->模块B->模块D”。当获取了更多的key和对应的value时,对应的信息如下,参见表4。
表4、key和对应的value信息表
序号
Key
Value
1
模块D:errMsg3
模块A->模块B->模块D
2
模块D:errMsg4
模块A->模块Y->模块D
3
模块D:errMsg5
模块E->模块D
4
模块D:errMsg6
模块E->模块D
图8为本申请实施例提供的表4中根因错误信息对应的错误路径的调用链关系,参见图8,从图8中的调用链关系中,可以看出各个模块的错误路径及各个模块的错误信息,以及入口节点信息。
本申请实施例中,对上述key通过simhash计算其相似度,可以通过以下步骤实现:
步骤S1,对key进行关键字抽取,抽取出n个(关键词,权重)对。
步骤S2,对关键字进行hash。
本申请实施例中,hash位数可以自行设定,比如位数为N,那么得到n个(hash,权重)对。
步骤S3,对这些(hash,权重)对进行位的纵向累加,如果位数为1,则加权重,如果位数为0,则减权重,最后得到N个数字
步骤S4,对这N个数字进行转化,正数为1,负数为0,最终转换为N位1或0的二进制。
本申请实施例中,采用海明距离判断相似度:
步骤S5,对两个进行simhash计算后的N为二进制进行异或计算,得到N为二进制
步骤S6,计算上述步骤结果中的N为二进制中1的个数。
本申请实施例中,如果小于设定的海明距离M,则认为相似。
假设通过计算步骤出来的结果是序号1、2、3相似。那么得到的结果如下,原有的序列1、2、3被合并为序列1,即新的key为合并根因错误信息,新的value为原有序列1、2、3的value值的list,即新的value为合并根因错误信息对应的错误路径,建立合并根因错误信息及其对应的错误路径,表5为本申请实施例提供的合并根因错误信息及其对应的错误路径。
表5、本申请实施例提供的合并根因错误信息及其对应的错误路径
步骤S503,根因错误的聚类设备对value中的错误路径进行错误路径故障树的构建,得到故障树。
根据value中错误路径入口模块的不同,将list结构转换为树型结构,从而建立多棵错误路径故障树。每棵错误路径故障树为多叉树,每棵多叉树采用Tree结构体存储。Tree结构体不限具体形式,要求包含父节点、兄弟节点、孩子节点等基本结构,能表达出一个树即可。
表6、本申请实施例提供的合并根因错误信息及其对应的故障树
通过本申请实施例提供的故障树,能够确定出同一根因错误造成了哪些模块错误,造成了哪些请求出错,清晰获得系统整体的错误情况。利用本申请实施例提供的方法不仅能够清晰地确定所有的根因错误,还能够生成错误路径故障树,便于快速定位和修复问题,使得系统获取更好的稳定性和性能。
本申请实施例提供的一种根因错误的聚类的方法,通过对各个组件增加探针获取错误路径和根因错误,然后对根因错误进行聚类,对同一类根因错误的错误路径构建错误路径故障树,从而得到IT系统的聚类后根因错误和各个根因错误对应的错误路径故障树,方便高效地对系统中的所有错误进行根因分析和对根因错误涉及到的路径和模块进行详细汇总展示,从而更便捷有效针对性地改进系统,使得系统获取更好的稳定性和性能。
基于前述的实施例,本申请实施例提供一种根因错误的聚类装置,该装置包括的各模块、以及各模块包括的各单元,可以通过计算机设备中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(CPU,CentralProcessing Unit)、微处理器(MPU,Microprocessor Unit)、数字信号处理器(DSP,DigitalSignal Processing)或现场可编程门阵列(FPGA,Field Programmable Gate Array)等。
本申请实施例再提供一种根因错误的聚类装置,图9为本申请实施例提供的根因错误的聚类装置结构示意图,如图9所示,所述根因错误的聚类装置900包括:
获取模块901,用于获取系统的各个根因错误信息和各个根因错误信息对应的错误路径;
合并模块902,用于当存在至少两个根因错误信息的相似度满足预设条件时,将所述至少两个根因错误信息进行合并得到合并根因错误信息;
第一确定模块903,用于基于所述至少两个根因错误信息分别对应的错误路径确定所述合并根因错误信息对应的错误路径;
第一构建模块904,用于根据所述合并根因错误信息对应的错误路径构建至少一棵故障树,以对系统的各个根因错误进行分析。
在一些实施例中,所述获取模块901包括:
第一获取单元,用于获取系统中各个节点的调用关系和错误信息;
第一确定单元,用于根据所述调用关系和所述错误信息确定各个根因错误信息和各个根因错误信息对应的错误路径。
在一些实施例中,所述根因错误的聚类装置900还包括:
计算模块,用于计算各个根因错误信息之间的相似度;
判断模块,用于判断是否存在至少两个根因错误信息之间的相似度满足预设条件,其中,当存在至少两个根因错误信息之间的相似度满足预设条件时,将所述至少两个根因错误信息进行合并得到合并根因错误信息。
在一些实施例中,所述计算模块,包括:
提取单元,用于分别提取各个根因错误信息的关键字;
计算单元,通过预设的哈希算法分别计算所述各个根因错误信息的关键字对应的哈希值;
第二确定单元,用于根据各个哈希值确定所述各个根因错误信息的关键字之间的相似值;
第三确定单元,用于根据所述各个根因错误信息的关键字之间的相似值,确定所述各个根因错误信息之间的相似度。
在一些实施例中,所述预设的哈希算法至少包括:simhash算法,对应地,所述计算单元,用于通过simhash算法分别计算所述各个根因错误信息的关键字对应的simhash值,对应地,所述第二确定单元,用于根据所述各个根因错误信息的关键字对应的simhash值确定所述各个根因错误信息的关键字之间的相似值。
在一些实施例中,所述根因错误的聚类装置还包括:
第二构建模块,用于当不存在至少两个根因错误信息的相似度满足预设条件时,根据根因错误信息集合中各个根因错误对应的错误路径构建故障树;
在一些实施例中,所述第一构建模块904,包括:
第二获取单元,用于获取所述合并根因错误信息对应的错误路径中的入口节点;
第一构建单元,用于当入口节点相同时,根据所述入口节点对应的错误路径构建一棵故障树;
第二构建单元,用于当入口节点不同时,根据所述入口节点对应的错误路径构建至少两棵故障树
以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
本申请实施例提供的根因错误的聚类装置,通过合并模块902将各个根因错误信息中相似度满足预设条件的至少两个错误信息进行合并,第一确定模块903,基于所述至少两个根因错误信息对应的错误路径确定所述合并根因错误信息对应的错误路径,第一构建模块904根据所述合并根因错误信息对应的错误路径构建至少一棵故障树,可以方便高效地对系统中的错误进行根因分析和对根因错误涉及到的路径和节点进行详细汇总展示,从而方便运维人员有针对性地改进系统,进而使得系统获取更好的稳定性和性能。
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的根因错误的聚类方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read Only Memory)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。
相应地,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现上述实施例中提供的根因错误的聚类方法中的步骤。
本申请实施例提供一种根因错误的聚类设备,图10为本申请实施例提供的根因错误的聚类设备的组成结构示意图,如图10所示,所述根因错误的聚类设备1000包括:一个处理器1001、至少一个通信总线1002、用户接口1003、至少一个外部通信接口1004和存储器1005。其中,通信总线1002配置为实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏,外部通信接口1004可以包括标准的有线接口和无线接口。其中,所述处理器1001配置为执行存储器中存储的根因错误的聚类方法的程序,以实现以上述实施例提供的根因错误的聚类方法中的步骤
以上根因错误的聚类设备和存储介质实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请根因错误的聚类设备和存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请存储介质和设备实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read Only Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台AC执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。