基于网络报文的全链路追踪方法及系统与流程
- 国知局
- 2025-01-10 13:16:55
本发明涉及分布式系统、应用性能管理,具体地,涉及基于网络报文的全链路追踪的方法及系统。
背景技术:
1、全链路追踪是当下分布式系统排查定位问题的重要手段之一。分布式系统下每一个用户请求需要调用多个子系统才能返回最终结果,如果某个用户请求失败了,或者某个请求耗时比较高,那么需要定位是哪个子系统出问题了。全链路追踪就是一种解决此类问题的有效手段。
2、当前全链路追踪已经有了一些解决方案,譬如:基于客户端埋点、基于java字节码注入,基于日志收集等。基于客户端埋点需要对链路上的所有服务都进行改造才能进行完整的数据采集,投入工作量大,完成时间周期长,有些系统甚至完全不可能改造。基于java字节码注入的方式仅支持java应用,但当前分布式系统大多是多语言混合的,该方法很难做到全链路覆盖。基于日志收集依赖当前日志信息的输出,很难保证日志中存在所需的关联信息。同时这些方法都依赖于全局的关联id才能得到完整的全链路记录,这需要在全系统进行统一改造后才可能实现。
3、专利文献cn109359094b(申请号:cn201810877216.4)公开了一种分布式系统日志全链路追踪方法及装置。所述方法包括:s1,创建配置文件配置系统,按以下流程执行:配置集群服务器;配置集群依赖关系;配置数据逻辑关系;s2,通过应用程序读取并解析配置文件获取关键信息;s3,根据关键信息获取系统数据的生命历程。所述装置包括系统配置单元,信息获取单元和集群遍历单元。把数据日志全链路追踪抽象成三个配置文件,通过相应应用程序读取并解析这些配置文件即可获取每个集群对应的服务器信息、系统的上下游顺序和系统数据间逻辑关系这些关键信息,可以实现在无代码埋点,一键式获取一条系统数据的生命历程,并定位线上或者测试过程中遇到的问题。
技术实现思路
1、针对现有技术中的缺陷,本发明的目的是提供一种基于网络报文的全链路追踪方法及系统。
2、根据本发明提供的一种基于网络报文的全链路追踪方法,包括:
3、步骤s1:在网络环境中通过旁路设备进行数据包捕获生成单独span记录;
4、步骤s2:触发全链路查询生成全链路trace记录。
5、优选地,所述步骤s1包括:
6、步骤s1.1:在网络环境中通过旁路设备通过tap方法采集各段网络流量;
7、步骤s1.2:将采集到的各段网络流量进行协议解码和交易关联得到交易记录;
8、步骤s1.3:将交易记录进行格式转换得到opentelemetry/opentracing格式的span记录。
9、优选地,所述步骤s1.2中交易关联通过网状结构表示;其中,所述网状结构包括点和边,每个点表示每个子系统;每条边表示两个子系统存在相互调用关系。
10、优选地,所述交易记录使用biz_id,trans_id,duration,ret_code,req内容,resp内容表示;
11、其中,所述biz_id表示全局用户请求的业务id;
12、所述trans_id表示单段关联字段;
13、所述duration表示单段响应时间;
14、所述ret_code表示响应码,用于表示请求是否成功;
15、所述req内容和resp内容分别表示请求和响应,并且包含请求响应中的全部业务信息。
16、优选地,所述span记录使用name,traceid,spanid,starttime,endtime,parent,status,links,events,attributes表示;
17、其中,所述name表示名称,用于描述当前段的含义;
18、所述traceid表示用户请求的全局id;
19、所述spanid表示单段span的唯一id;
20、所述starttime和所述endtime分别表示起始时间和结束时间;
21、所述parent表示当前span的父节点;
22、所述status表示请求状态;
23、所述links表示和其他span记录的之间的相互关系;
24、所述events表示单段记录内部发生的事件;
25、所述attributes表示span记录相关联的属性,用户描述span的特征。
26、根据本发明提供的一种基于网络报文的全链路追踪系统,包括:
27、模块m1:在网络环境中通过旁路设备进行数据包捕获生成单独span记录;
28、模块m2:触发全链路查询生成全链路trace记录。
29、优选地,所述模块m1包括:
30、模块m1.1:在网络环境中通过旁路设备通过tap方法采集各段网络流量;
31、模块m1.2:将采集到的各段网络流量进行协议解码和交易关联得到交易记录;
32、模块m1.3:将交易记录进行格式转换得到opentelemetry/opentracing格式的span记录。
33、优选地,所述模块m1.2中交易关联通过网状结构表示;其中,所述网状结构包括点和边,每个点表示每个子系统;每条边表示两个子系统存在相互调用关系。
34、优选地,所述交易记录使用biz_id,trans_id,duration,ret_code,req内容,resp内容表示;
35、其中,所述biz_id表示全局用户请求的业务id;
36、所述trans_id表示单段关联字段;
37、所述duration表示单段响应时间;
38、所述ret_code表示响应码,用于表示请求是否成功;
39、所述req内容和resp内容分别表示请求和响应,并且包含请求响应中的全部业务信息。
40、优选地,所述span记录使用name,traceid,spanid,starttime,endtime,parent,status,links,events,attributes表示;
41、其中,所述name表示名称,用于描述当前段的含义;
42、所述traceid表示用户请求的全局id;
43、所述spanid表示单段span的唯一id;
44、所述starttime和所述endtime分别表示起始时间和结束时间;
45、所述parent表示当前span的父节点;
46、所述status表示请求状态;
47、所述links表示和其他span记录的之间的相互关系;
48、所述events表示单段记录内部发生的事件;
49、所述attributes表示span记录相关联的属性,用户描述span的特征。
50、与现有技术相比,本发明具有如下的有益效果:
51、1、本发明基于旁路的网络数据包采集,通过解码可以获取完整的请求参数和响应数据,从而在完全不改动现有系统的情况下解决数据采集的问题;
52、2、本发明通过配置单段请求响应的关联逻辑,以及多段关联逻辑可以将记录输出为标准的opentelemetry/opentracing格式,可以实现存在新旧子系统的混合系统;
53、3、本发明通过并行深度遍历算法查找和关联全部子系统的追踪记录,可以有效解决不存在全局关联id的问题。
本文地址:https://www.jishuxx.com/zhuanli/20250110/352113.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表