本申请涉及故障检测分析领域,尤其涉及一种微服务的故障定位方法、装置、存储介质及电子设备。
背景技术:
微服务是一种近年越来越流行的软件服务架构,是采用一组服务来构建一个整体应用的方法,每个服务运行在独立的进程中。随着不断发展一个完整的应用中会部署大量的微服务,同时微服务之间存在大量的调用关系,如果系统中某一个微服务实例发生异常,整个系统对外提供的服务会收到牵连影响,可能最终用户不能正常收到服务响应,从而用户体验下降。
因此提供对微服务调用故障检测必不可少,相关技术中已经实现对微服务调用链路的查询以及检测到微服务调用的异常,但对于调用异常不能实现智能分析和快速定位,需要通过个人经验逐一处理。
技术实现要素:
本申请实施例提供了的微服务的故障定位方法、装置、存储介质及电子设备,可以解决相关技术中人工定位微服务调用异常存在的效率较低的问题。所述技术方案如下:
第一方面,本申请实施例提供了一种微服务的故障定位方法,所述方法包括:
检测到微服务调用链发生异常时,根据所述微服务调用链中各个微服务的微服务名和请求方法名生成第一key值;
根据所述第一key值在分析库中查询匹配的异常分析数据;
通过所述显示单元显示所述异常分析数据。
第二方面,本申请实施例提供了一种微服务的故障定位装置,所述微服务的故障定位装置包括:
生成单元,用于检测到微服务调用链发生异常时,根据所述微服务调用链中各个微服务的微服务名和请求方法名生成第一key值;
查询单元,用于根据所述key值在分析库中查询匹配的异常分析数据;
显示单元,用于显示所述异常分析数据。
第三方面,本申请实施例提供一种计算机存储介质,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行上述的方法步骤。
第四方面,本申请实施例提供一种终端,可包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行上述的方法步骤。
本申请一些实施例提供的技术方案带来的有益效果至少包括:
在微服务调用链发生异常时,由于微服务调用链具有多个微服务,根据各个微服务的微服务名和请求方法名生成第一key值,然后在预先的分析库中查询第一key值匹配的异常分析数据,显示异常分析数据,解决了相关技术中通过人工定位微服务调用链发生异常的原因造成的效率较低的问题,本申请实施例可以实现自动检测和定位微服务调用链的异常原因。如果在分析库中未查询到异常分析数据或者该异常数据在分析库中查询到的异常级别或次数较低,则不会立即确认为异常报错,从而减少异常报错量,本申请实施例可以减少微服务调用链异常误报情况。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种网络架构图;
图2是本申请实施例提供的微服务的故障定位方法的流程示意图;
图3是本申请实施例提供的一种装置的结构示意图;
图4是本申请提供的一种装置的另一结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施例方式作进一步地详细描述。
参见图1,为本申请实施例提供的微服务调用链的原理示意图,微服务调用链包括多个微服务,服务使用者根据一定的调用顺序调用多个微服务行程微服务调用链,多个微服务可以部署在同一个主机上,也可以部署在不同的主机上。根据图1所示,一个微服务调用链中各个微服务的调用顺序为:服务1→服务3→服务5→服务6。
下面将结合附图2,对本申请实施例提供的微服务的故障定位方法进行详细介绍。其中,本申请实施例中的微服务的故障定位装置可以是终端。
请参见图2,为本申请实施例提供了一种微服务的故障定位方法的流程示意图。如图2所示,本申请实施例的所述方法可以包括以下步骤:
s201、检测到微服务调用链发生异常时,根据微服务调用链中各个微服务的微服务名和请求方法名生成第一key值。
其中,电子设备在调用微服务调用链中的一个微服务时,如果该微服务在预设时长内未返回调用结果,则确定该微服务调用链发生异常,电子设备在每次进行微服务调用时会生成调用链日志,调用链日志中记载该微服务调用链是否异常。微服务调用链关联多个微服务,多个微服务之间具有特定的调用顺序。微服务名表示微服务的名称,请求方法名包括微服务使用的调用方法的名称,调用方法包括get或post等。电子设备根据微服务调用链中各个微服务名和请求方法名进行哈希运算生成第一key值,第一key值为索引值。
s202、根据第一key值在分析库中查询匹配的异常分析数据。
其中,电子设备预存储或预配置有分析库,分析库中存储有key值和异常分析数据之间的映射关系,异常分析数据表示微服务调用链发生异常的类型,例如:服务实例异常或程序异常。
s203、通过显示单元显示异常分析数据。
在一种可能的实施方式中,所述检测到所述为服务调用链发生异常时,根据所述微服务调用链中各个微服务的服务名和请求方法名生成key值之前,还包括:
获取所述微服务调用链中各个微服务的微服务名和请求方法名;
根据所述微服务名和请求方法名生成第一key值;
获取各个微服务的耗时、报错状态标志位、报错信息、资源消耗信息中的一种或多种生成所述第一key值的属性值;
将所述第一key值和所述属性值进行绑定后存储至知识库中。
进一步的,所述资源消耗信息包括:cpu使用量、内存使用量、io请求量、网络流量中的一种或多种。
进一步的,所述异常的类型包括:多个异常大类,各个异常大类包括多个异常细分类,其中,所述异常大类为:服务实例异常和程序异常。
进一步的,所述检测到微服务调用链发生异常,包括:
根据调用链日志确定微服务调用链发生异常。
进一步的,所述方法还包括:
在所述分析库中未查询到与所述第一key值匹配的异常分析数据时,根据所述异常分析数据的第二key值计算出异常类型;
将所述第二key值、异常大类、异常细分类、详细异常日志、首次发生时间、发生次数和最后发生时间写入到所述分析库中。
进一步的,还包括:
更新所述分析库中所述异常分析数据的发生次数和最后发生时间。
其中,本申请实施例的故障定位方法具体包括以下步骤:
步骤1:采集监控系统检测到的最新的微服务调用链信息,根据微服务调用链中调用的所有微服务名和请求方法名构造一个key值,微服务对应的每个请求方法的耗时、是否报错、报错信息、消耗资源信息(cpu使用量、内存使用量、io调用数、网络流量)构成第一key值对应的属性值,对此第一key值和属性值进行分类存储形成知识库。
步骤2:在上一步采集数据的同时进行分析,过滤调用链日志中存在异常的调用链,采集其中的第二key值,分析出该异常的异常大类、异常细分类。异常类型分为两大类:服务实例异常和程序异常,异常细分类是根据这两大类进行细分,其中服务实例问题细分方式为:系统资源负载过高进行细分(如cpu负载过高,内存负载过高等)、服务异常down掉类型细分(如oom等);程序异常细分根据具体程序报错关键字进行细分。
步骤3:根据当前的key值和计算出的异常类型,对比分析库中相同key值和异常类型,查找是否有对应的异常分析数据,如果不存在则执行步骤4,否则执行第5步。
步骤4:根据异常分析数据的第二key值和计算出的异常类型,将第二key值、异常大类、异常细分类、详细异常日志、首次方式时间、发生次数、最后发生时间作为一组数据写入分析库。
步骤5:更新分析库中查找到相同的异常分析数据的发生次数和最后发生时间。
步骤6:进行自主学习当发生次数大于预设次数时,则生成异常错误报告,并按照异常类型发给相应运维或者开发人员的终端进行处理。
步骤7:若生成异常错误报告,将该异常错误报告存储到知识库中,供后续异常问题分析。
根据以上的实施例,通过微服务架构下的服务器资源和服务间调用链路数据进行全面采集,并通过内置分析学习形成分析库,当出现微服务调用异常时利用分析库来对当前异常进行定性和问题定位。从采集和分析过程中进行自我学习,形成逐渐完善的分析模型,学习内容包括:1、所有微服务调用链的详细调用信息;2、所有微服务相关服务器资源数据:cpu使用量、内存使用量、io读写数据量、网络发送和接收量;3、统计出微服务调用数据:调用总数,调用失败总数、平均响应时间;4、从微服务调用链异常日志中提取异常关键字;5、综合以上信息通过内置分析器形成每个微服务调用链的分析库。
当发现微服务调用链存在异常问题时,在不同时间点结合上一步收集的数据进行相似度对比分析,主要内容包括:1、该微服务调用链在分析库中是否存在匹配;2、如果存在匹配,找出对应分析数据;3、结合上一步获取的分析数据,生成本次问题的分析和定位。从而帮助系统的开发人员或运维人员快速高效处理微服务架构下的服务调用异常问题。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参见图3,其示出了本申请一个示例性实施例提供的微服务的故障定位装置的结构示意图。以下简称生成装置3,装置3可以通过软件、硬件或者两者的结合实现成为终端的全部或一部分。装置3包括:生成单元301、查询单元302和显示单元303。
生成单元301、用于检测到微服务调用链发生异常时,根据所述微服务调用链中各个微服务的微服务名和请求方法名生成第一key值;
查询单元302,用于根据所述第一key值在分析库中查询匹配的异常分析数据;
显示单元303,用于通过所述显示单元显示所述异常分析数据。
在一种可能的实施方式中,获取所述微服务调用链中各个微服务的微服务名和请求方法名;
根据所述微服务名和请求方法名生成第一key值;
获取各个微服务的耗时、报错状态标志位、报错信息、资源消耗信息中的一种或多种生成所述第一key值的属性值;
将所述第一key值和所述属性值进行绑定后存储至知识库中。
在一种可能的实施方式中,所述资源消耗信息包括:cpu使用量、内存使用量、io请求量、网络流量中的一种或多种。
在一种可能的实施方式中,所述异常的类型包括:多个异常大类,各个异常大类包括多个异常细分类,其中,所述异常大类为:服务实例异常和程序异常。
在一种可能的实施方式中,所述检测到微服务调用链发生异常,包括:
根据调用链日志确定微服务调用链发生异常。
在一种可能的实施方式中,装置3还包括:
写入单元,用于在所述分析库中未查询到与所述第一key值匹配的异常分析数据时,根据所述异常分析数据的第二key值计算出异常类型;
将所述第二key值、异常大类、异常细分类、详细异常日志、首次发生时间、发生次数和最后发生时间写入到所述分析库中。
在一种可能的实施方式中,装置3还包括:
更新单元,用于更新所述分析库中所述异常分析数据的发生次数和最后发生时间。
需要说明的是,上述实施例提供的装置3在执行微服务的故障定位方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的微服务的故障定位方法实施例属于同一构思,其体现实现过程详见方法实施例,这里不再赘述。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本申请的装置3在微服务调用链发生异常时,由于微服务调用链具有多个微服务,根据各个微服务的微服务名和请求方法名生成第一key值,然后在预先的分析库中查询第一key值匹配的异常分析数据,显示异常分析数据,解决了相关技术中通过人工定位微服务调用链发生异常的原因造成的效率较低的问题,本申请实施例可以实现自动检测和定位微服务调用链的异常原因。如果在分析库中未查询到异常分析数据或者该异常数据在分析库中查询到的异常级别或次数较低,则不会立即确认为异常报错,从而减少异常报错量,本申请实施例可以减少微服务调用链异常误报情况。
本申请实施例还提供了一种计算机存储介质,所述计算机存储介质可以存储有多条指令,所述指令适于由处理器加载并执行如上述图2所示实施例的方法步骤,具体执行过程可以参见图2所示实施例的具体说明,在此不进行赘述。
本申请还提供了一种计算机程序产品,该计算机程序产品存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上各个实施例所述的微服务的故障定位方法。
图4为本申请实施例提供的一种微服务的故障定位装置的结构示意图,以下简称装置4,装置4可以集成于前述的电子设备,如图4所示,该装置包括:存储器402、处理器401、输入装置403、输出装置404和通信接口。
存储器402可以是独立的物理单元,与处理器401、输入装置403和输出装置8404可以通过总线连接。存储器402、处理器401、收发器403也可以集成在一起,通过硬件实现等。
存储器402用于存储实现以上方法实施例,或者装置实施例各个模块的程序,处理器401调用该程序,执行以上方法实施例的操作。
输入装置402包括但不限于键盘、鼠标、触摸面板、摄像头和麦克风;输出装置包括但限于显示屏。
通信接口用于收发各种类型的消息,通信接口包括但不限于无线接口或有线接口。
可选地,当上述实施例的分布式任务调度方法中的部分或全部通过软件实现时,装置也可以只包括处理器。用于存储程序的存储器位于装置之外,处理器通过电路/电线与存储器连接,用于读取并执行存储器中存储的程序。
处理器可以是中央处理器(centralprocessingunit,cpu),网络处理器(networkprocessor,np)或者cpu和np的组合。
处理器还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specificintegratedcircuit,asic),可编程逻辑器件(programmablelogicdevice,pld)或其组合。上述pld可以是复杂可编程逻辑器件(complexprogrammablelogicdevice,cpld),现场可编程逻辑门阵列(field-programmablegatearray,fpga),通用阵列逻辑(genericarraylogic,gal)或其任意组合。
存储器可以包括易失性存储器(volatilememory),例如存取存储器(random-accessmemory,ram);存储器也可以包括非易失性存储器(non-volatilememory),例如快闪存储器(flashmemory),硬盘(harddiskdrive,hdd)或固态硬盘(solid-statedrive,ssd);存储器还可以包括上述种类的存储器的组合。
其中,处理器401调用存储器402中的程序代码用于执行以下步骤:
检测到微服务调用链发生异常时,根据所述微服务调用链中各个微服务的微服务名和请求方法名生成第一key值;
根据所述第一key值在分析库中查询匹配的异常分析数据;
通过所述显示单元显示所述异常分析数据。
在一种可能的实施方式中,处理器401还用于执行:获取所述微服务调用链中各个微服务的微服务名和请求方法名;
根据所述微服务名和请求方法名生成第一key值;
获取各个微服务的耗时、报错状态标志位、报错信息、资源消耗信息中的一种或多种生成所述第一key值的属性值;
将所述第一key值和所述属性值进行绑定后存储至知识库中。
在一种可能的实施方式中,所述资源消耗信息包括:cpu使用量、内存使用量、io请求量、网络流量中的一种或多种。
在一种可能的实施方式中,所述异常的类型包括:多个异常大类,各个异常大类包括多个异常细分类,其中,所述异常大类为:服务实例异常和程序异常。
在一种可能的实施方式中,所述检测到微服务调用链发生异常,包括:
根据调用链日志确定微服务调用链发生异常。
在一种可能的实施方式中,处理器401还用于执行:在所述分析库中未查询到与所述第一key值匹配的异常分析数据时,根据所述异常分析数据的第二key值计算出异常类型;
将所述第二key值、异常大类、异常细分类、详细异常日志、首次发生时间、发生次数和最后发生时间写入到所述分析库中。
在一种可能的实施方式中,处理器401还用于执行:更新所述分析库中所述异常分析数据的发生次数和最后发生时间。
本申请实施例还提供了一种计算机存储介质,存储有计算机程序,该计算机程序用于执行上述实施例提供的微服务的故障定位方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例提供的微服务的故障定位方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
1.一种微服务的故障定位方法,其特征在于,所述方法包括:
检测到微服务调用链发生异常时,根据所述微服务调用链中各个微服务的微服务名和请求方法名生成第一key值;
根据所述第一key值在分析库中查询匹配的异常分析数据;
通过所述显示单元显示所述异常分析数据。
2.根据权利要求1所述的方法,其特征在于,所述检测到所述为服务调用链发生异常时,根据所述微服务调用链中各个微服务的服务名和请求方法名生成key值之前,还包括:
获取所述微服务调用链中各个微服务的微服务名和请求方法名;
根据所述微服务名和请求方法名生成第一key值;
获取各个微服务的耗时、报错状态标志位、报错信息、资源消耗信息中的一种或多种生成所述第一key值的属性值;
将所述第一key值和所述属性值进行绑定后存储至知识库中。
3.根据权利要求2所述的方法,其特征在于,其特征在于,所述资源消耗信息包括:cpu使用量、内存使用量、io请求量、网络流量中的一种或多种。
4.根据权利要求1所述的方法,其特征在于,所述异常的类型包括:多个异常大类,各个异常大类包括多个异常细分类,其中,所述异常大类为:服务实例异常和程序异常。
5.根据权利要求1所述的方法,其特征在于,所述检测到微服务调用链发生异常,包括:
根据调用链日志确定微服务调用链发生异常。
6.根据权利要求1所述的方法,其特征在于,还包括:
在所述分析库中未查询到与所述第一key值匹配的异常分析数据时,根据所述异常分析数据的第二key值计算出异常类型;
将所述第二key值、异常大类、异常细分类、详细异常日志、首次发生时间、发生次数和最后发生时间写入到所述分析库中。
7.根据权利要求1所述的方法,其特征在于,还包括:
更新所述分析库中所述异常分析数据的发生次数和最后发生时间。
8.一种微服务的故障定位装置,其特征在于,所述装置包括:
生成单元,用于检测到微服务调用链发生异常时,根据所述微服务调用链中各个微服务的微服务名和请求方法名生成第一key值;
查询单元,用于根据所述第一key值在分析库中查询匹配的异常分析数据;
显示单元,用于显示所述异常分析数据。
9.一种计算机存储介质,其特征在于,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行如权利要求1~7任意一项的方法步骤。
10.一种终端,其特征在于,包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行如权利要求1~7任意一项的方法步骤。
技术总结