穿透式运营的调用链日志系统及方法与流程

文档序号:33288868发布日期:2023-02-28 17:41阅读:44来源:国知局
穿透式运营的调用链日志系统及方法与流程

1.本发明涉及计算机技术领域,具体地,涉及一种穿透式运营的调用链日志系统及方法。


背景技术:

2.随着互联网技术的不断发展,分布式、微服务、云计算等技术理念的推广,应用系统的复杂程度也在不断的演化,用户的一次操作可能会涉及到多个服务、多个系统协同处理,这些服务可能在不同的机器、不同的集群,甚至是不同的地区。多个服务之间相互调用形成的链路关系,称之为调用链。
3.公开号为cn112579406a的发明专利,公开了一种日志调用链生成方法和装置,该方法的一具体实施方式包括:根据应用所处设备的标识和当前时间戳,生成识别码;监听所述识别码在各个应用模块之间的传递顺序;提取各个应用模块中与所述识别码对应的日志,按照所述传递顺序对所提取的日志进行排列组合,得到日志调用链。该实施方式利用识别码自动对各个日志服务器中的日志进行提取,且根据识别码在应用模块之间的传递顺序进行日志排序,以此实现日志调用链的自动生成,为日志集中归档、异常日志定位提供了基础。
4.在日益复杂的系统中,特别是平台级的系统中,运营人员需要及时发现业务故障,快速定位问题,涉及分布式、微服务等架构的系统,发现业务故障后,快速定位问题较难,需要对大量业务日志进行故障分析。也需要对服务性能进行分析、统计分析、审计分析等。还需要定期对系统用户行为进行审计分析、统计分析。此时就需要系统内的数据支持,需要调用链的数据、业务数据、用户行为数据等。
5.相关技术中,发现业务故障和快速定位问题使用分布式调用链数据来帮助定位,但是在现有的分布式调用链方案中,有数据量大、数据无业务属性、不能和业务关联、不能统计和审计用户行为等缺陷。用户行为分析技术中又不能够实现业务链路的查看,不能和业务故障进行关联,不能对服务进行性能分析等缺陷。


技术实现要素:

6.针对现有技术中的缺陷,本发明提供一种穿透式运营的调用链日志系统及方法。
7.根据本发明提供的一种穿透式运营的调用链日志系统,所述方案如下:
8.第一方面,提供了一种穿透式运营的调用链日志系统,所述系统包括:
9.链路信息模块:在服务请求的入口处,分配一个全局唯一的调用链路id;记录服务在整个链路中位置的链路位置id,链路位置id中会记录上游链路位置和本服务位置;
10.服务日志信息模块:为业务服务分配日志id,并记录业务的相关信息;
11.链路信息传递模块:完成服务之间的相互调用,并传递调用链路信息;
12.日志记录模块:把记录的数据以日志的形式单独记录在一个文件中。
13.优选的,所述链路信息模块串联调用链链路,使链路能够以完整的树形结构串联。
14.优选的,所述服务日志信息模块中记录业务的相关信息包括:记录业务服务执行状态的状态信息、用户信息的用户id、服务执行的开始时间和结束时间,以及用来描述业务的其他信息。
15.优选的,所述链路信息传递模块包括:在服务入口处分配一个全局唯一的调用链路id,生成一个记录服务在链路中位置的链路位置id;第一个服务调用第二个服务时,传递给第二个服务调用链路信息:调用链路id,第二个服务的链路位置id;第二个服务接收到第一个服务传递来的链路信息后,把接收到的调用链路id作为自己服务的调用链路id,把接收到的链路位置id作为自己服务的链路位置id。
16.优选的,所述日志记录模块中内容使用键值对的形式,以json格式记录;每个服务或更详细的事件记录一条日志,每条日志以换行符作为结束。
17.第二方面,提供了一种穿透式运营的调用链日志方法,所述方法包括:
18.步骤s1:在系统入口服务处检查是否有传递来的用调用链链路id和链路位置id;
19.步骤s2:开始服务,记录服务日志信息;在服务未结束时,将服务日志信息缓存在内存中,等待服务服务结束,记录服务其他信息;
20.步骤s3:若当前服务在执行过程中调用了其他的服务,则为当前服务分配链路位置id,然后和调用链路id一起传递给下一个服务;
21.步骤s4:服务执行结束,记录服务开始时间至服务结束时间内的相关服务信息,并补充其他服务信息;
22.步骤s5:日志输出,服务执行结束,检查调用链日志是否完整。
23.优选的,所述步骤s1包括:若系统入口服务处检查有传递来的用调用链链路id和链路位置id,就继承现有的链路信息,把接收到的调用链链路id和链路位置id作为自身的调用链链路id和链路位置id;
24.若系统入口服务处检查没有传递来的用调用链链路id和链路位置id,就生成调用链链路id和链路位置id。
25.优选的,所述步骤s2中服务日志信息包括:服务日志的日志id、开始时间、服务名、服务所属项目,以及服务所属应用在内的相关服务信息。
26.优选的,所述步骤s4中相关服务信息包括:服务结束时间、服务是否执行成功以及计算服务耗时。
27.优选的,所述步骤s5包括:检查调用链日志是否完整,如果完整,输出到日志文件中;
28.如果不完整,缺失的信息能够补充则补充完整,输出到日志文件中,如果不能补充,记录异常日志。
29.与现有技术相比,本发明具有如下的有益效果:
30.1、本发明提供了一种调用链记录方式,记录调用链信息,方便运营人员快速发现问题、定位问题;记录服务信息,方便分析服务性能;记录业务信息,方便业务审计、统计分析;
31.2、本发明把调用链日志和系统日志结合,实现了一种调用链日志数据多种用途,可以用作系统性能分析、服务审计分析、服务统计分析、用户审计分析、用户统计分析等分析,可以实现系统的穿透式运营。
附图说明
32.通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
33.图1为本发明整体流程示意图;
34.图2为链路位置id传递示意图;
35.图3为链路内容示意图。
具体实施方式
36.下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
37.本发明实施例提供了一种穿透式运营的调用链日志系统,参照图1所示,该系统包括:调用链链路信息模块、服务日志信息模块、链路信息传递模块以及日志记录模块。其中,调用链链路信息模块生成链路信息,由链路信息传递模块在不同的服务之间传递;传递到一个服务中后,数据传输到服务日志信息模块,就会在调用链链路信息的基础上添加业务信息,然后把数据发送给日志记录模块,进行日志记录、输出到文件。
38.具体地,参照表1所示,链路信息模块,包括:在服务请求的入口处,为此次请求分配一个全局唯一的调用链路id;记录服务在整个链路中位置的链路位置id,链路位置id中会记录上游链路位置和本服务位置。调用链日志信息中,调用链路id、链路位置id会随着服务的调用进行传递。调用链日志链路信息用于串联调用链链路,使链路能够以完整的树形结构串联。其中,在服务入口处,为每次请求分配一个全局唯一的调用链路id。一个服务的多次请求是会分配多个调用链路id的。
39.表1
[0040][0041][0042]
参照表2所示,服务日志信息模块,包括:为服务分配服务日志id,记录后形成服务日志,记录业务服务执行状态的状态信息;记录用户信息的用户id;记录服务执行的开始时间和结束时间;以及用来描述业务的其他信息。其中服务可以为业务服务、程序服务、数据服务等所有类型的服务。
[0043]
表2
[0044][0045]
链路信息传递模块,包括:在服务入口处分配一个全局唯一的调用链路id,生成一个记录服务在链路中位置的链路位置id;第一个服务调用第二个服务时,会传递给第二个服务调用链路信息:调用链路id,第二个服务的链路位置id;第二个服务接收到第一个服务传递来的链路信息后,把接收到的调用链路id作为自己服务的调用链路id,把接收到的链路位置id作为自己服务的链路位置id。
[0046]
参照图2所示,链路位置id传递:(1)、入口服务a,链路位置id为【1】,调用服务b时,生成服务b的链路位置id【1.1】传递给服务b。
[0047]
(2)、服务a调用服务b后,又调用了服务c,服务c是服务a调用,并跟随服务b后调用的,生成链路位置id【1.2】传递给服务c。
[0048]
(3)、服务c接收到后,使用【1.2】作为本服务的链路位置id,并以此传递下去。
[0049]
日志记录模块,包括:把记录的数据以日志的形式单独记录在一个文件中;内容使用键值对的形式,以json格式记录;每个服务或更详细的事件记录一条日志,每条日志以换行符作为结束。日志示例:
[0050]
{"endtime":"20201027105506736","project":"eplat","traceid":"6556cc9c4e61448b9586ceaddf40077c","spanid":"1.1.1.1","status":"0","logid":"0201","cost":48,"starttime":"20201027105506688","app":"operation"}。
[0051]
本发明还提供了一种穿透式运营的调用链日志方法,该方法实现步骤如下:
[0052]
1)、在系统入口服务处检查是否有传递来的用调用链链路id和链路位置id,如果有的话,就继承现有的链路信息,把接收到的调用链链路id和链路位置id作为自身的调用链链路id和链路位置id;如果没有的话,就生成调用链链路id和链路位置id。
[0053]
2)、服务开始,记录服务日志信息。记录服务日志的日志id、开始时间、服务名、服务所属项目、服务所属应用等服务信息。服务未结束,以上信息缓存在内存中,等待服务服务结束,记录服务其他信息。
[0054]
3)、如果服务在执行过程中调用了其他的服务,则为服务分配链路位置id,然后和调用链路id一起传递给下一个服务。
[0055]
4)、服务执行结束,记录服务结束时间、服务是否执行成功、计算服务耗时(服务开始时间-服务结束时间),并补充其他服务信息。
[0056]
5)、日志输出,服务执行结束,检查调用链日志是否完整,如果完整,输出到日志文件中;如果不完整,缺失的信息能够补充则补充完整,输出到日志文件中,如果不能补充,记录异常日志。
[0057]
接下来,对本发明进行更为具体的说明。
[0058]
本发明实施例中需求包括:1、实现服务跟踪,能够查询一次请求都经历了哪些方法、哪些服务、调用了哪些数据库;是否有异常,异常信息捕获。
[0059]
2、实现服务分析、用户行为审计,能够通过数据查询到高频服务、异常服务、慢服务等服务分析;能够查询用户登录列表、用户访问记录等用户审计分析。
[0060]
其中以用户登录行为为例,调用链日志实现方法如下:
[0061]
第一步:在系统http层,接收到请求后,为本次请求生成16位的唯一调用链链路id,并生成链路位置id【1】。
[0062]
第二步:接收第一步生成的调用链链路id和链路位置id【1】,开始服务日志id为【0000】的http请求服务,并记录http请求服务所属的项目、应用信息、开始时间。
[0063]
第三步:http请求接收后,会调用服务日志id为【0001】的用户登录服务,在http请求调用用户登录服务前,为用户登录服务生成链路位置id【1.1】,并和第一步生成的调用链链路id一起传递给服务日志id为【0001】的用户登录服务。
[0064]
第四步:接收第三步传来的调用链链路id和链路位置id【1.1】,用户登录服务开始,用户登录服务同样记录服务所属项目、应用、开始时间等信息;并调用了两个服务:先调用服务日志id为【0002】的统一认证服务;后调用服务日志id为【0003】的安全认证服务。同样,在服务调用前为服务分配链路位置id【1.1.1】和【1.1.2】。
[0065]
第五步:服务日志id为【0002】的统一认证服务,接收到第四步传来的调用链链路id和链路位置id【1.1.1】;同样记录服务所属俩目、应用、开始时间。服务执行结束后,根据执行的结果,记录执行状态是否成功,并记录结束时间,计算并记录服务耗时。记录信息后,检查调用链日志信息,如果有未记录的信息,补充记录;然后输出到日志文件,形成一条日志记录。服务日志id为【0003】的安全认证服务采用同样的处理方式。
[0066]
第六步:服务日志id为【0002】的统一认证服务和服务日志di为【0003】的安全认证服务结束后,主线程继续执行服务日志id为【0001】的用户登录服务,用户登录服务结束时,记录服务的结束时间,计算并记录服务耗时;记录信息后,检查调用链日志信息,如果有未记录的信息,补充记录;然后输出到日志文件,形成一条日志记录。
[0067]
第七步:服务日志id为【0001】的用户登录服务执行结束后,主线程继续执行http请求服务,同样结束后记录服务的结束时间,计算并记录服务耗时;记录信息后,检查调用链日志信息,如果有未记录的信息,补充记录;然后输出到日志文件,形成一条日志记录。至此一条服务请求结束。链路内容如图3所示,日志内容如下:
[0068]
{"endtime":"2021-10-27 10:55:06.736","project":"eplat","traceid":"6556cc9c4e61448b9586ceaddf40077c","spanid":"1.1.1","status":"0","logid":"0002","cost":48,"starttime":"2021-10-27 10:55:06.688","app":"operation"}
[0069]
{"endtime":"2021-10-27 10:55:06.757","project":"eplat","traceid":"6556cc9c4e61448b9586ceaddf40077c","spanid":"1.1.2","status":"0","logid":"0003","cost":20,"starttime":"2021-10-27 10:55:06.737","app":"operation"}
[0070]
{"endtime":"2021-10-27 10:55:06.772","project":"eplat","traceid":"6556cc9c4e61448b9586ceaddf40077c","spanid":"1.1","status":"0","logid":"0001","cost":105,"starttime":"2021-10-27 10:55:06.667","app":"operation"}
[0071]
{"endtime":"2021-10-27 10:55:06.773","project":"eplat","traceid":"6556cc9c4e61448b9586ceaddf40077c","spanid":"1","status":"0","logid":"0000","cost":110,"starttime":"2021-10-27 10:55:06.663","app":"operation"}。
[0072]
本发明实施例提供了一种穿透式运营的调用链日志系统及方法,记录调用链信息,方便运营人员快速发现问题、定位问题;记录服务信息,方便分析服务性能;记录业务信息,方便业务审计、统计分析;且本发明把调用链日志和系统日志结合,实现了一种调用链日志数据多种用途,可以用作系统性能分析、服务审计分析、服务统计分析、用户审计分析、用户统计分析等分析,可以实现系统的穿透式运营。
[0073]
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
[0074]
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本技术的实施例和实施例中的特征可以任意相互组合。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1