故障追踪系统、方法、电子设备及可读介质与流程

文档序号:30223609发布日期:2022-05-31 23:37阅读:78来源:国知局
故障追踪系统、方法、电子设备及可读介质与流程

1.本发明涉及数据处理技术领域,特别是涉及一种故障追踪系统、一种故障追踪方法、一种电子设备以及一种计算机可读介质。


背景技术:

2.在容器化应用和微服务方案成为主流技术选型的趋势下,集群系统中的应用越来越多,大量部署的应用和服务之间的调用关系越来越复杂,导致在发生故障时,故障定位与关联日志的追踪难度升级。
3.目前,通常采用在业务链路中进行“埋点”的方法,实现快速定位出错误信息,进行故障分析,但采用日志“埋点”的方式,需要在业务链路上每个节点设置描述信息,“侵入性”较强,不适用于服务架构高频迭代的场景,致使研发人员对服务架构进行升级时,需要投入大量时间,导致升级周期较长,升级成本高。


技术实现要素:

4.本发明实施例是提供一种故障追踪系统、方法、电子设备以及计算机可读存储介质,以解决采用日志“埋点”实现错误信息快速定位的方式,不适用于服务架构高频迭代的场景的问题。
5.本发明实施例公开了一种故障追踪系统,包括jaeger组件、filebeat组件、elasticsearch组件以及故障信息显示模块;其中
6.所述jaeger组件,用于采集调用服务的过程中生成的链路信息,并将所述链路信息存储至所述elasticsearch组件;所述链路信息基于所调用服务对应配置有第一标识字段;
7.所述filebeat组件,用于采集调用服务的过程中生成的日志信息,并将所述日志信息存储至所述elasticsearch组件;所述日志信息基于所调用服务对应配置有第二标识字段;
8.所述故障信息显示模块,用于根据所述elasticsearch组件中的所述链路信息,判断调用服务的过程中是否发生故障;若发生故障,根据所述链路信息中的目标第一标识字段,从所述elasticsearch组件中查找与所述目标第一标识字段对应的目标第二标识字段的日志信息作为故障日志信息,并进行展示。
9.可选地,还包括kafka组件;其中,
10.所述jaeger组件,还用于将所述链路信息传输至所述kafka组件的缓冲队列;
11.所述kafka组件,用于将所述缓冲队列中的所述链路信息写入所述elasticsearch组件进行存储。
12.可选地,
13.所述filebeat组件,还用于将所述日志信息传输至kafka组件的缓冲队列;
14.所述kafka组件,还用于将所述缓冲队列中的所述日志信息写入所述
elasticsearch组件进行存储。
15.可选地,所述链路信息包括http请求响应状态码;
16.所述故障信息显示模块,还用于判断所述http请求响应状态码的码值是否为故障返回值;若所述http请求响应状态码的码值是所述故障返回值,则调用服务的过程中发生故障;若所述http请求响应状态码的码值不是所述故障返回值,则调用服务的过程中未发生故障。
17.可选地,调用服务基于分布式容器集群实现,所述分布式容器集群部署有业务容器和边车容器,所述日志信息包括所述业务容器产生的业务日志信息和所述边车容器产生的代理日志信息。
18.本发明实施例公开了一种故障追踪方法,包括:
19.通过jaeger组件采集调用服务的过程中生成的链路信息,并将所述链路信息存储至elasticsearch组件;所述链路信息基于所调用服务对应配置有第一标识字段;
20.通过filebeat组件采集调用服务的过程中生成的日志信息,并将所述日志信息存储至所述elasticsearch组件;所述日志信息基于所调用服务对应配置有第二标识字段;
21.通过故障信息显示模块根据所述elasticsearch组件中的所述链路信息,判断调用服务的过程中是否发生故障;若发生故障,根据所述链路信息中的目标第一标识字段,从所述elasticsearch组件中查找与所述目标第一标识字段对应的目标第二标识字段的日志信息作为故障日志信息,并进行展示。
22.可选地,在所述通过jaeger组件采集调用服务的过程中生成的链路信息之后,还包括:
23.通过所述jaeger组件将所述链路信息传输至kafka组件的缓冲队列;
24.通过所述kafka组件将所述缓冲队列中的所述链路信息写入所述elasticsearch组件进行存储。
25.可选地,在所述通过filebeat组件采集调用服务的过程中生成的日志信息之后,还包括:
26.通过所述filebeat组件将所述日志信息传输至所述kafka组件的缓冲队列;
27.通过所述kafka组件将所述缓冲队列中的所述日志信息写入所述elasticsearch组件进行存储。
28.可选地,所述链路信息包括http请求响应状态码,所述通过故障信息显示模块根据所述elasticsearch组件中的所述链路信息,判断调用服务的过程中是否发生故障,包括:
29.通过故障信息显示模块判断所述http请求响应状态码的码值是否为故障返回值;若所述http请求响应状态码的码值是所述故障返回值,则调用服务的过程中发生故障;若所述http请求响应状态码的码值不是所述故障返回值,则调用服务的过程中未发生故障。
30.可选地,调用服务基于分布式容器集群实现,所述分布式容器集群部署有业务容器和边车容器,所述日志信息包括所述业务容器产生的业务日志信息和所述边车容器产生的代理日志信息。
31.本发明实施例还公开了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口以及所述存储器通过所述通信总线完成相互间的通
信;
32.所述存储器,用于存放计算机程序;
33.所述处理器,用于执行存储器上所存放的程序时,实现如本发明实施例所述的方法。
34.本发明实施例还公开了一个或多个计算机可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如本发明实施例所述的方法。
35.本发明实施例包括以下优点:通过将链路信息与日志信息汇合至elasticsearch组件,为后续快速定位问题和进行分析排错提供基础,便于根据故障快速定位关联的故障日志信息。
36.基于链路信息与日志信息上的标识字段,在根据链路信息确定其对应的调用服务的过程中发生故障后,可以直接根据链路信息上的第一标识字段快速精准地定位到调用服务对应的故障日志信息,极大提升故障日志信息追踪效率,降低了开发维护人员的工作量,有助于实现系统故障的快速响应。
37.另外,本发明实现故障追踪的方法,仅对链路信息与日志信息配置标识字段,并不用在链路上的每个节点设置描述信息,“侵入性”较小,对于需高频迭代的系统环境有着较好适应性,便于开发人员对服务架构进行升级,相比于采用“埋点”的方式,在对服务架构进行升级过程中,可以缩短升级周期,降低升级成本。
附图说明
38.图1是本发明实施例中提供的一种故障追踪系统的结构框图;
39.图2是本发明实施例中提供的一种故障追踪功能实现的原理示意图;
40.图3是本发明实施例中提供的一种故障追踪信息交互的流程示意图;
41.图4是本发明实施例中提供的一种故障日志信息展示的示意图;
42.图5是本发明实施例中提供的一种故障追踪方法的步骤流程图;
43.图6是本发明实施例中提供的一种电子设备的框图;
44.图7是本发明实施例中提供的一种计算机可读介质的示意图。
具体实施方式
45.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
46.参照图1,示出了本发明实施例中提供的一种故障追踪系统的结构框图,故障追踪系统包括jaeger组件、filebeat组件、elasticsearch组件以及故障信息显示模块;其中,所述jaeger组件,用于采集调用服务的过程中生成的链路信息,并将所述链路信息存储至所述elasticsearch组件;所述链路信息基于所调用服务对应配置有第一标识字段;所述filebeat组件,用于采集调用服务的过程中生成的日志信息,并将所述日志信息存储至所述elasticsearch组件;所述日志信息基于所调用服务对应配置有第二标识字段;所述故障信息显示模块,用于根据所述elasticsearch组件中的所述链路信息,判断调用服务的过程中是否发生故障;若发生故障,根据所述链路信息中的目标第一标识字段,从所述elasticsearch组件中查找与所述目标第一标识字段对应的目标第二标识字段的日志信息
作为故障日志信息,并进行展示。
47.其中,故障追踪系统以服务网格工具istio为基础系统架构,配置jaeger组件、fliebeat组件、elasticsearch组件、以及故障信息显示模块(identified log demonstration,ild)。
48.jaeger组件是uber推出的一款开源分布式追踪系统,兼容opentracing api。用于记录请求范围内的信息,jaeger组件包括jaeger-client模块(未在图1中标出)、jaeger agent模块、jaeger collector模块以及jaeger query模块;
49.filebeat组件是一个用于转发和集中日志数据的轻量级日志采集器,通过增量的方式收集日志内容。
50.具体地,通过jaeger组件采集调用服务(service)的过程中生成的链路信息,具体通过jaeger-client模块把采集到的链路信息发送给jaeger agent模块,然后由jaeger agent模块将链路信息发送给jaeger collector模块,jaeger collector模块会对链路信息进行一些校验,比如时间范围是否合法等,最终将链路信息存储至elasticsearch组件。且在jaeger组件采集链路信息的过程中,会为链路信息配置所调用服务对应的第一标识字段(identification field,简称idf),第一标识字段可以为在采集链路信息的过程中附加上去的羽量级标识字段,也可以指定链路信息中某一字段作为第一标识字段。
51.通过filebeat组件采集调用服务的过程中生成的日志信息,并将所述日志信息存储至elasticsearch组件;且在filebeat组件采集日志信息的过程中,基于所调用服务为日志信息配置第二标识字段;第二标识字段可以为在采集日志信息的过程中附加上去的羽量级标识字段,也可以指定链路信息中某一字段作为第二标识字段。
52.需要说明的是,对应同一调用服务的第一标识字段和第二标识字段可以相同,或存在映射关系。
53.在elasticsearch组件存储有链路信息和日志信息后,可以通过故障信息显示模块去筛查elasticsearch组件中的链路信息,判断链路信息对应的调用服务的过程中是否发生故障,若发生故障,进行实时预警,同时,根据链路信息中的目标第一标识字段,从elasticsearch组件中查找与目标第一标识字段对应的目标第二标识字段的日志信息作为故障日志信息,并将故障日志信息上传至客户端的界面进行展示,以便开发维护人员根据故障日志信息快速确定故障问题根源。
54.另外,开发维护人员还可以在客户端通过jaeger query模块进行全链路查询,查询elasticsearch组件的链路信息和日志信息。
55.需要说明的是,本发明实施例中的附图中,是将jaeger组件和filebeat组件采集的链路信息和日志信息先传输至kafka组件,然后再通过kafka组件将链路信息和日志信息存储至elasticsearch组件,而在实际应用中,可以直接将jaeger组件和filebeat组件采集的链路信息和日志信息传输至elasticsearch组件,当然,还可以采用其他方式将jaeger组件和filebeat组件采集的链路信息和日志信息传输至elasticsearch组件,对此,本发明实施例中不加以局限。
56.本发明实施例中,通过将链路信息与日志信息汇合至elasticsearch组件,为后续快速定位问题和进行分析排错提供基础,便于根据故障快速定位关联的故障日志信息,实现对故障的“快速响应”。
57.基于链路信息与日志信息上的标识字段,在根据链路信息确定其对应的调用服务的过程中发生故障后,可以直接根据链路信息上的第一标识字段快速精准地定位到调用服务对应的故障日志信息,极大提升故障日志信息追踪效率,降低了开发维护人员的工作量,有助于实现系统故障的快速响应。
58.另外,本发明实现故障追踪的方法,仅对链路信息与日志信息配置标识字段,并不用在链路上的每个节点设置描述信息,“侵入性”较小,对于需高频迭代的系统环境有着较好适应性,便于开发人员对服务架构进行升级,相比于采用“埋点”的方式,在对服务架构进行升级过程中,可以缩短升级周期,降低升级成本。
59.在本发明一实施例中,故障追踪系统,还包括kafka组件;其中,所述jaeger组件,还用于将所述链路信息传输至所述kafka组件的缓冲队列;所述kafka组件,用于将所述缓冲队列中的所述链路信息写入所述elasticsearch组件进行存储。
60.具体地,kafka组件是一种高吞吐量的分布式发布订阅消息系统,具有高吞吐,低延迟的特点。为了提供良好的性能,加大吞吐,我们在elasticsearch组件前增加了kafka组件,在jaeger组件采集到链路信息后,可以将链路信息分类缓存在kafka组件中缓冲队列,然后再将kafka组件缓冲队列中的链路信息存储至elasticsearch组件。
61.在本发明一实施例中,所述filebeat组件,还用于将所述日志信息传输至kafka组件的缓冲队列;所述kafka组件,还用于将所述缓冲队列中的所述日志信息写入所述elasticsearch组件进行存储。
62.具体地,在filebeat组件采集到日志信息后,可以将日志信息分类缓存在kafka组件中缓冲队列,然后再将kafka组件缓冲队列中的日志信息存储至elasticsearch组件。
63.在本发明一实施例中,所述链路信息包括http请求响应状态码;所述故障信息显示模块,还用于判断所述http请求响应状态码的码值是否为故障返回值;若所述http请求响应状态码的码值是所述故障返回值,则调用服务的过程中发生故障;若所述http请求响应状态码的码值不是所述故障返回值,则调用服务的过程中未发生故障。
64.其中,在向服务器发出请求时,服务器会返回一个http请求响应状态码,例如http请求响应状态码的码值可以为200-请求成功、301-资源(网页等)被永久转移到其它url、404-请求的资源(网页等)不存在、500-内部服务器错误。
65.故障返回值可以为4xx、5xx(x为0-9中任一数字),当然在实际应用中,可以根据实际情况设置故障返回值,本发明实施例对此不加以局限。
66.具体地,在elasticsearch组件存储有链路信息和日志信息后,可以通过故障信息显示模块,判断链路信息中的http请求响应状态码的码值是否为故障返回值;若http请求响应状态码的码值是故障返回值,说明调用服务的过程中发生故障;若http请求响应状态码的码值不是故障返回值,则调用服务的过程中未发生故障。
67.在本发明一实施例中,调用服务基于分布式容器集群实现,所述分布式容器集群部署有业务容器和边车容器,所述日志信息包括所述业务容器产生的业务日志信息和所述边车容器产生的代理日志信息。
68.其中,在一个pod中可以包括一个或多个容器,例如可以包括业务容器和边车容器;业务容器为business,边车容器为envoy;业务日志信息为business log,由业务容器产生;代理日志信息为istio proxy log,由边车容器产生。
69.具体地,istio作为服务网格工具,嵌套在由分布式容器集群(kubernetes cluster)部署的容器化编排之上,用于提供负载均衡,服务到服务认证,监控等等功能,具体通过istio纳管在pod上生成业务日志信息并附加羽量级第二标识字段,并且通过envoy纳管代理日志信息。
70.需要说明的是,本发明实施例中,以网格istio治理的微服务架构作为示例,但在实际应用中,还可以采用其它架构,例如单体、垂直、分布式、soa(面向服务架构)等架构,本发明实施例中对此不加以局限。
71.为了更好理解本发明实施例,下述将结合附图进行示例性说明:
72.参照图2,示出了本发明实施例中提供的一种故障追踪功能实现的原理示意图,如图可知,istio包括控制面和数据面,控制面包括pilot组件、mixer组件、istio-auth组件,其中pilot组件负责提供发现和服务管理,用于和数据面进行通讯;mixer组件用于收集遥测信息;istio-auth组件用于身份和凭证管理;pod中的envoy为数据面,是一个高性能的代理服务器,提供负载均衡,健康检查等功能。
73.jaeger组件为一个全链路追踪系统,实现opentracing规范,包括jaeger client模块、jaeger agent模块、jaeger collector模块。
74.jaeger client模块:为不同语言实现符合opentracing的sdk。应用程序通过api写入数据,把链路信息(http status code、server headers、identification field.etc)按照应用程序制定的采样策略传递给jaeger-agent模块。
75.jaeger agent模块:一个监听在udp端口上接收span数据的网络守护进程,它会将数据(链路信息)批量发送给collector模块。agent模块将client模块和collector模块解耦,屏蔽了collector模块的细节。
76.jaeger collector模块:接收jaeger-agent模块发送来的数据,然后将数据写入kafka组件中的缓冲队列。
77.filebeat组件作为pod的一个sidecar,用于收集日志信息,用于转发和集中日志信息的轻量级传送程序。工作方式如下:启动filebeat组件时,它将启动一个或多个输入(input 1和input 2等),这些输入将在为日志信息指定的位置中查找。对于filebeat组件所找到的每个日志信息(system.log、wifi.log以及error.log等),filebeat组件都会启动收集器。每个harvester都读取一个日志信息以获取新内容,并将新日志信息发送到处理程序(spooler),spooler会汇总事件并将汇总的日志信息发送到您为filebeat配置的输出组件,以将业务日志信息(business log)和代理日志信息(istio proxy log)输入至kafka组件中的缓冲队列。
78.kafka组件是一种高吞吐量的分布式发布订阅消息系统,具有高吞吐,低延迟的特点。filebeat组件采集的日志信息和jaeger组件采集的链路信息的存储都是elasticsearch组件,为了提供良好的性能,加大吞吐,我们在elasticsearch组件前增加了kafka组件,然后通过kafka组件将日志信息和链路信息输入至elasticsearch组件。
79.故障信息显示模块(identified log demonstration,简称ild),用于根据elasticsearch组件中的链路信息的http请求响应状态码的码值是否为故障返回值,确定是否发生故障,若发生故障,从elasticsearch组件中提取与链路信息中的目标第一标识字段对应的目标第二标识字段的日志信息作为故障日志信息,进行展示。
80.参照图3,示出了本发明实施例中提供的一种故障追踪信息交互的流程示意图,如图可知,在系统运行,即响应调用服务请求,再多调用服务的过程中,会产生链路信息、pod日志(业务日志信息)和proxy日志(代理日志信息);
81.jaeger组件采集系统运行产生的链路信息(记录链路),然后将链路信息存储至elasticsearch组件;filebeat组件则采集系统运行产生的日志信息(采集日志),然后将日志信息存储至elasticsearch组件;elasticsearch组件作为链路信息与日志信息的“汇合池”;
82.故障信息显示模块(ild模块),用于监测elasticsearch组件中的链路信息(监测链路故障),判断链路信息中的http请求响应状态码的码值是否为故障返回值,若否,说明调用服务的过程中未发生故障,继续监测链路信息;若是,说明调用服务的过程中发生故障,获取链路信息中的目标第一标识字段(调用故障idf),从elasticsearch组件中提取目标第一标识字段对应的目标第二标识字段的日志信息作为故障日志信息(调取关联日志),对故障日志信息进行展示。
83.参照图4,示出了本发明实施例中提供的一种故障日志信息展示的示意图,如图,可以根据起始时间、pod、hearder去搜索对应的日志信息和链路信息,pod为业务负载实例,为实际业务承载的容器,可以由1到多个容器组成。header为业务调用中http协议中header部分的内容,内容为配置的idf标识(第一标识特征)。
84.展示的链路信息(spans链路)包括时间轴、spans id、请求状态(http请求响应状态码)、协议、服务、版本以及url等,此时http请求响应状态码的码字为503,服务器不能处理http请求,可能是临时超载或者是服务器进行维护,说明发生故障,因此在最下方展示链路信息对应的故障日志信息(istio proxy log和business log)。
85.本发明实施例中,通过将链路信息与日志信息汇合至elasticsearch组件,为后续快速定位问题和进行分析排错提供基础,便于根据故障快速定位关联的故障日志信息。
86.基于链路信息与日志信息上的标识字段,在根据链路信息确定其对应的调用服务的过程中发生故障后,可以直接根据链路信息上的第一标识字段快速精准地定位到调用服务对应的故障日志信息,极大提升故障日志信息追踪效率,降低了开发维护人员的工作量,有助于实现系统故障的快速响应。
87.另外,本发明实现故障追踪的方法,仅对链路信息与日志信息配置标识字段,并不用在链路上的每个节点设置描述信息,“侵入性”较小,对于需高频迭代的系统环境有着较好适应性,便于开发人员对服务架构进行升级,相比于采用“埋点”的方式,在对服务架构进行升级过程中,可以缩短升级周期,降低升级成本。
88.参照图5,示出了本发明实施例中提供的一种故障追踪方法的步骤流程图,具体包括:
89.步骤501:通过jaeger组件采集调用服务的过程中生成的链路信息,并将所述链路信息存储至elasticsearch组件;所述链路信息基于所调用服务对应配置有第一标识字段;
90.步骤502:通过filebeat组件采集调用服务的过程中生成的日志信息,并将所述日志信息存储至所述elasticsearch组件;所述日志信息基于所调用服务对应配置有第二标识字段;
91.步骤503:通过故障信息显示模块根据所述elasticsearch组件中的所述链路信
integrated circuit,简称asic)、现场可编程门阵列(field-programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
109.如图7所示,在本发明提供的又一实施例中,还提供了一种计算机可读存储介质701,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中所述的故障追踪方法。
110.在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中所述的故障追踪方法。
111.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solid state disk(ssd))等。
112.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性地包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
113.本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
114.以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1