一种基于OpenTracing的链路跟踪方法与流程

文档序号:21541979发布日期:2020-07-17 17:44阅读:411来源:国知局
一种基于OpenTracing的链路跟踪方法与流程

本发明属于软件技术领域,涉及链路监控平台、opentracing标准、探针技术,具体说是一种基于opentracing的链路跟踪方法。



背景技术:

对于实施了内外网物理隔离的企业,其对外服务通常会使用特定的运营商通道,通过安全接入网关代理服务请求,这就给应用性能问题及故障排查增加了复杂性。为了能够高效排查故障及追踪性能问题,需要研究一种技术来跟踪请求访问路径,从用户操作到移动端设备发起网络请求,再到安全接入平台、应用前置服务、信息内网应用服务并返回响应的全过程,各环节应能标识各自的请求源自哪个用户请求操作,对于一个用户请求对应多个后端应用的,要能够跟踪分支请求调用链路,从而构建用户访问请求完整拓扑信息。现有技术中,存在异构环境多服务系统遇到故障及性能排查困难、耗时长等相关问题。

根据用户请求链路拓扑信息、各环节监测指标就能够快速进行问题定位,分析问题位于运营商apn通道、网络、信息内网中的哪个网络环境,排查安全接入平台、防火墙等设备问题,以及中间件、数据库或程序缺陷问题、接口问题,实现纳管终端、通道、应用情况的总体运行情况展现与分析,为业务功能使用情况分析、应用性能优化等提供数据支撑,从而提升应用的运行稳定性和性能。



技术实现要素:

针对现有技术存在的问题,本发明的目的是提供一种基于opentracing的链路跟踪方法。通过扩展opentracing的标准协议,把链路(trace)中的多个跨度(span)分类聚合到追踪段(tracesegment)中,每次上报数据都以追踪段为单位,并生成三段特殊标记符号。在数据展示侧中根据标记顺序重新组装并展示出一次链路调用过程,使得开发人员能够方便的定制追踪系统的实现。

本发明的目的通过以下技术方案实现:

一种基于opentracing的链路跟踪方法,其特征在于:该方法通过扩展opentracing的标准协议,把链路中的多个跨度分类聚合到追踪段中,每次上报数据都以追踪段为单位,并生成三段特殊标记符号;在数据展示侧中根据标记顺序重新组装并展示出一次链路调用过程,定制出追踪系统;包括以下步骤:

(1)客户端发起请求:客户端访问带有探针的服务器对外暴露的服务信息;

(2)探针服务器拦截请求:在各个组件侧部署定制化的探针,当组件收到用户请求时,探针将调用链等信息写到符合opentracing的请求头中;

(3)链路监控平台根据请求形成链路拓扑:链路监控平台在接收到数据后,按照链路标识构建成一条链路拓扑。

进一步的,步骤(1)中客户端探针在感知到客户端应用启动时,发送客户端信息到链路监控平台,生成链路标识;

进一步的,步骤(2)具体包括:

(2-1)在捕获到用户的网络请求时,生成跨度信息,分类聚合成追踪端数据并发送到链路监控平台,然后将链路标识、追踪段等信息写到符合opentracing规则的请求头中并进行请求转发;

(2-2)安全接入平台在接收到客户端请求时,会将本次请求的代理请求日志记录下来并保存到客户端文件中。客户端探针定时读取安全接入平台日志文件,把日志发送到链路监控平台;

(2-3)应用前置服务在接收到网络请求后,会根据链路监控平台提供的日志格式记录下请求头中的链路标识、追踪段信息,并通过kafka把日志发送到链路监控平台;

(2-4)在捕获到用户的网络请求时,服务端探针解析请求头中的链路标识、追踪段信息,生成自己的跨度信息,分类聚合成追踪段数据并发送到链路监控平台;在捕获到服务发出的网络请求时,探针将链路标识、追踪段等信息写到符合opentracing规则的请求头中,并将请求转发出去.

进一步的,步骤(3)中链路监控平台把接收到的追踪段数据进行分析后,如图2所示从中拆分出服务指标信息,并把追踪段数据持久化到数据库中。在接收到查询链路跟踪的请求后,把追踪段数据从数据库中取出并根据链路标识重组成链路拓扑,从而实现链路跟踪。

本发明通过扩展opentracing的标准协议,把链路(trace)中的多个跨度(span)分类聚合到追踪段(tracesegment)中,每次上报数据都以追踪段为单位,并生成三段特殊标记符号。在数据展示侧中根据标记顺序重新组装并展示出一次链路调用过程,使得开发人员能够方便的定制追踪系统的实现。

本发明解决了异构环境多服务系统遇到故障及性能排查困难、耗时长等相关问题。为业务功能使用情况分析、应用性能优化等提供数据支撑,从而提升应用的运行稳定性和性能。

附图说明

图1为本发明的方法流程图;

图2为经过扩展后按时间顺序呈现的调用链。

具体实施方式

一种基于opentracing的链路跟踪方法,通过扩展opentracing的标准协议,把链路(trace)中的多个跨度(span)分类聚合到追踪段(tracesegment)中,每次上报数据都以追踪段为单位,并生成三段特殊标记符号。在数据展示侧中根据标记顺序重新组装并展示出一次链路调用过程,使得开发人员能够方便的定制追踪系统的实现。如图1所示,包括:

(1)客户端发起请求:客户端访问带有探针的服务器对外暴露的服务信息。

(2)探针服务器拦截请求:在各个组件侧部署定制化的探针,当组件收到用户请求时,探针将调用链等信息写到符合opentracing的请求头中,并将请求信息发送给链路监控平台,每个调用链由多个扩展的tracesegment对象中,segment包含跨度(span)。span和span的关系称为reference。

opentracing把一次分布式链路跟踪(distributedtrace)分为多个跨度(span),我们在此基础上增加了追踪段(tracesegment)的概念。一个追踪段是一次分布式链路跟踪链路的一段,是用来用于记录所在线程的链路数据,每个追踪段中包含多个跨度。这样就可以解决跨进程和跨线程的调用链路跟踪的问题。

如图2所示是经过扩展后按时间顺序呈现的调用链。

对于语义规则中的无实际意义的跨度,我们把他扩展为五种类型的跨度,分为两大类共五种,有具体操作的跨度:入口跨度(用于记录服务端的链路信息)、本地跨度(用于本地方法的链路信息)、出口跨度(用于记录消费端的链路信息)和无具体操作的跨度:无操作入口跨度、无操作出口跨度。

以下是对上图各种类型组件的追踪信息采集方案的具体解释。

(2-1)移动应用追踪信息采集:预先在移动应用中安装链路监控平台提供的sdk探针,用户在使用应用时,探针捕获到网络请求并在其中添加特殊的请求头,同时把采集到到的数据构建成跨度,并把跨度数组分类聚合成追踪段,发送到链路监控平台。

(2-2)安全接入平台追踪信息采集:安全接入平台作为内外网物理隔离的最重要一环,一般体现为安全接入网关代理,每次的的请求代理都会在移动终端中保存日志,这些日志被预先安装在移动应用上的sdk探针读取并发送到链路监控平台。

(2-3)应用前置服务追踪信息采集:应用前置服务与安全接入平台不同的是,它被信息内网应用服务的运维人员维护,可以记录每次请求代理的日志数据,使用链路监控平台提供的日志格式配置,可以记录请求头中的追踪段信息,通过安装在应用前置服务中的kafka把日志发送到链路监控平台。

(2-4)信息内网应用服务追踪信息采集:目前大部分的组件服务集成都是通过网络来进行传输数据,预先安装链路监控平台提供的服务端探针可以捕获服务端接收的网络请求,通过解析请求头中的跨度信息,结合捕获到的请求类型,生成跨度数组并分类聚合成追踪段发送到链路监控平台。探针同时可以捕获到服务端发送出的网络请求,并添加请求头数据并进行正常转发。这些请求的目标可能是下一个信息内网应用服务,也有可能是数据库、中间件等,通过安装的服务端探针,可以捕获到这些服务接收的网络请求,并按照以上过程进行数据的发送和请求的转发;

(4)链路监控平台根据请求形成链路拓扑:链路监控平台在接收到安全接入平台、应用前置服务的日志数据后,分别对日志进行分析后,重构成跨度数组并分类聚合成追踪段并持久化到数据库中。在接收到移动应用、信息内网应用服务发送的追踪段数据后,持久化到数据库。在接到查询链路拓扑的请求后,从数据库中取出相应的追踪段数据,按照链路标识构建成一条链路拓扑。

本发明解决了异构环境多服务系统遇到故障及性能排查困难、耗时长等相关问题。为业务功能使用情况分析、应用性能优化等提供数据支撑,从而提升应用的运行稳定性和性能。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1