CN111277643A - 一种http链路跟踪记录方法及系统 - Google Patents

一种http链路跟踪记录方法及系统 Download PDF

Info

Publication number
CN111277643A
CN111277643A CN202010056136.XA CN202010056136A CN111277643A CN 111277643 A CN111277643 A CN 111277643A CN 202010056136 A CN202010056136 A CN 202010056136A CN 111277643 A CN111277643 A CN 111277643A
Authority
CN
China
Prior art keywords
tracking
http
request
web interface
trace
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202010056136.XA
Other languages
English (en)
Other versions
CN111277643B (zh
Inventor
周志文
钟喜标
朱宇翔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Mapgoo Technology Co ltd
Original Assignee
Shenzhen Mapgoo Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Mapgoo Technology Co ltd filed Critical Shenzhen Mapgoo Technology Co ltd
Priority to CN202010056136.XA priority Critical patent/CN111277643B/zh
Publication of CN111277643A publication Critical patent/CN111277643A/zh
Application granted granted Critical
Publication of CN111277643B publication Critical patent/CN111277643B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • H04L67/025Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • H04L63/0236Filtering by address, protocol, port number or service, e.g. IP-address or URL
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/146Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/55Push-based network services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or context
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明实施例公开了一种http链路跟踪记录方法及系统,方法包括:检测到客户端发起http请求,起始调用端根据预先设置的规则决定是否需要产生调用链跟踪上下文;若需要产生调用链跟踪上下文,则产生一个唯一的分布式跟踪ID,并记录http请求对应的请求数据,继续执行业务代码逻辑;获取业务代码处理的返回结果,将返回结果填充到跟踪上下文中,获取跟踪上下文的信息推送至跟踪组件服务端进行异步处理保存;根据分布式跟踪ID,将跟踪过程采用的跟踪参数返回至起始调用端。本发明实施例在链路跟踪记录的过程中,同时记录了各个链路环节的最终实际使用的参数和当时的处理结果,为后期调试提供了真实参数和对比样本。

Description

一种http链路跟踪记录方法及系统
技术领域
本发明涉及通讯技术领域,尤其涉及一种http链路跟踪记录方法及系统。
背景技术
目前的Http通讯链路记录技术,根据使用的广泛程度,可以分为以下几种常见的组件:
一是cat,需要代码埋点,支持全局统计,但不支持trace查询,代码侵入性强,文档比较混乱,网上资料比较少;
二是zipKin,拦截请求,发送(HTTP,mq)数据到zipkin存储,使用的是http请求向zipkin上报信息,耗性能。可以使用rabbitMQ的方式异步来做,数据分析比较简单。
三是pinpoint,完全无侵入代码,仅需修改启动方式,界面完善,功能细致。
四是skywalking,完全无侵入代码,界面完善,支持应用拓扑图及单个调用链查询。
但是不管采用哪一种模式,以上方法都存在明显的各自的缺点,这些方法的实施,都有一些预设的前提条件,要么需要在原有代码有大量埋点代码修改,要么需要使用对应语言做项目重构开发,要么需要使用支持该组件的技术框架开发。这些都是一些比较耗人力和物力的方法,在现有老项目及老的开发语言的环境面前,是无法预测大量风险的。
目前由于业务拓展,项目及组件之间的通讯越来越多,各业务接口之前调用内部的平台http接口的链路越来越长,如业务接口调用数据组件接口,再调用设备上下行指令接口,设备收到指令后再调用设备接口等等,这些场景经常发生,对于设备端与平台端的链路跟踪目前属于空白领域,完全无法快速定义的整个操作的流程。
目前市面上采用的链路跟踪大多采用开源链接,引用第三的类库和工具类特别多,属于重量级的框架组件,而且需要部署的软件较多。且大部是新型的框架代码和新型的开发语言,对于像C#这种语言支持的链路跟踪十分适合的框架很少,像上面提到的后两种组件属于java项目比较适合使用的,但对C#不一定能快速应用。
因此现有技术还有待于进一步发展。
发明内容
针对上述技术问题,本发明实施例提供了一种http链路跟踪记录方法及系统,能够解决现有技术中链路跟踪方法采用开源链接,采用开源链接,引用第三类库和工具多较多,不能快速适用于多种语言的技术问题。
本发明实施例的第一方面提供一种http链路跟踪记录方法,应用于web接口程序,包括:
检测到客户端发起http请求,起始调用端根据预先设置的规则决定是否需要产生调用链跟踪上下文;
若需要产生调用链跟踪上下文,则产生一个唯一的分布式跟踪ID,并记录http请求对应的请求数据,继续执行业务代码逻辑;
获取业务代码处理的返回结果,将返回结果填充到跟踪上下文中,获取跟踪上下文的信息推送至跟踪组件服务端进行异步处理保存;
根据分布式跟踪ID,将跟踪过程采用的跟踪参数返回至起始调用端。
可选地,所述检测到客户端发起http请求,起始调用端根据预先设置的规则决定是否需要产生调用链跟踪上下文,包括:
预先在web程序中引入http链路跟踪记录组件的sdk包;
预先在sdk包中添加拦截器注册和过滤器注册的代码,并配置http链路跟踪记录组件的服务端地址和web接口程序的跟踪ID。
可选地,所述检测到客户端发起http请求,起始调用端根据预先设置的规则决定是否需要产生调用链跟踪上下文,包括:
检测到客户端发起http请求,进入第一个被调用的web接口时,拦截器捕捉到http请求;
拦截器根据预先设置的规则判定是否需要产生调用链跟踪上下文。
可选地,所述若第一个被调用的web接口还在继续请求其它web接口时,所述若需要产生调用链跟踪上下文,则产生一个唯一的分布式跟踪ID,并记录http请求对应的请求数据,继续执行业务代码逻辑后,还包括:
将第一个被调用的web接口对应的接口信息通过http头集合的方式传递给下一个web接口。
可选地,所述根据分布式跟踪ID,将跟踪过程采用的跟踪参数返回至起始调用端后,还包括:
当web接口程序发起调试数据,将调试信息以及上一次的分布式跟踪ID设置到http头;
当第一个被调用的web接口检测到调试信息以及上一次的分布式跟踪ID时,则从http链路跟踪记录组件中拉取第一个被调用的web接口请求的参数及处理结果,将当前的参数覆盖为参数;
Web接口程序产生本次请求的跟踪上下文信息并记录。
本发明实施例第二方面提供了一种http链路跟踪记录系统,所述系统包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现以下步骤:
检测到客户端发起http请求,起始调用端根据预先设置的规则决定是否需要产生调用链跟踪上下文;
若需要产生调用链跟踪上下文,则产生一个唯一的分布式跟踪ID,并记录http请求对应的请求数据,继续执行业务代码逻辑;
获取业务代码处理的返回结果,将返回结果填充到跟踪上下文中,获取跟踪上下文的信息推送至跟踪组件服务端进行异步处理保存;
根据分布式跟踪ID,将跟踪过程采用的跟踪参数返回至起始调用端。
可选地,所述计算机程序被所述处理器执行时还实现以下步骤:
预先在web程序中引入http链路跟踪记录组件的sdk包;
预先在sdk包中添加拦截器注册和过滤器注册的代码,并配置http链路跟踪记录组件的服务端地址和web接口程序的跟踪ID。
可选地,所述计算机程序被所述处理器执行时还实现以下步骤:
检测到客户端发起http请求,起始调用端根据预先设置的规则决定是否需要产生调用链跟踪上下文,包括:
检测到客户端发起http请求,进入第一个被调用的web接口时,拦截器捕捉到http请求;
拦截器根据预先设置的规则判定是否需要产生调用链跟踪上下文。
可选地,若第一个被调用的web接口还在继续请求其它web接口时,所述计算机程序被所述处理器执行时还实现以下步骤:
将第一个被调用的web接口对应的接口信息通过http头集合的方式传递给下一个web接口。
本发明实施例第三方面提供了一种非易失性计算机可读存储介质,其特征在于,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行上述的http链路跟踪记录方法。
本发明实施例提供的技术方案中,实检测到客户端发起http请求,起始调用端根据预先设置的规则决定是否需要产生调用链跟踪上下文;若需要产生调用链跟踪上下文,则产生一个唯一的分布式跟踪ID,并记录http请求对应的请求数据,继续执行业务代码逻辑;获取业务代码处理的返回结果,将返回结果填充到跟踪上下文中,获取跟踪上下文的信息推送至跟踪组件服务端进行异步处理保存;根据分布式跟踪ID,将跟踪过程采用的跟踪参数返回至起始调用端。因此相对于现有技术,本发明实施例在链路跟踪记录的过程中,同时记录了各个链路环节的最终实际使用的参数和当时的处理结果,为后期调试提供了真实参数和对比样本,实现方法简单,维护成本低,跟踪管控简单,后期修改代码的工作量少。
附图说明
图1为本发明实施例中一种http链路跟踪记录方法的一实施例的流程示意图;
图2为本发明实施例中一种http链路跟踪记录系统的另一实施例的硬件结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
以下结合附图对本发明实施例进行详细的描述。
请参阅图1,图1为本发明实施例中一种http链路跟踪记录方法的一个实施例的流程示意图。本发明实施例的一种http链路跟踪记录方法应用于web接口程序,如图1所示,包括:
步骤S100、检测到客户端发起http请求,起始调用端根据预先设置的规则决定是否需要产生调用链跟踪上下文,若需要,则执行步骤S200,若不需要,则执行步骤S500;
步骤S200、产生一个唯一的分布式跟踪ID,并记录http请求对应的请求数据,继续执行业务代码逻辑;
步骤S300、获取业务代码处理的返回结果,将返回结果填充到跟踪上下文中,获取跟踪上下文的信息推送至跟踪组件服务端进行异步处理保存;
步骤S400、根据分布式跟踪ID,将跟踪过程采用的跟踪参数返回至起始调用端;
步骤S500、不执行任何操作。
具体地,本发明实施例是通过插件的形式主动进行数据采集,不需要被记录的代码组件做任何过多的设置或者安装软件,只是通过拦截器识别被请求的接口的入口参数,添加记录的基本跟踪数据,业务代码执行后,再通过过滤器抓取到返回的结果集,组装成一个跟踪数据包,根据插件的配置项,进行持久化后,后期可通过传递调试参数,从采集sdk加载之前出现问题的参数,提供一种可在非生产环境调试生产环境错误问题的解决途径,以便快速查找代码及数据的问题,这也是本记录主要的功能特点。sdk软件开发工具包是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等创建应用软件的开发工具的集合。
检测到客户端发起http请求,起始调用端根据预先设置的规则决定是否需要产生调用链跟踪上下文,如果需要则产生一个唯一的TraceID,TraceID分布式跟踪ID,是利用雪花算法生成的分页式全局唯一ID。并记录该请求的接收到的各种参数,请求的开始时间等;然后接口程序继续执行业务代码逻辑,其中要注意的是,此时最后在结果过滤器获取到业务代码处理的返回结果,将结果的数据填充到跟踪上下文中,同时获取结束时间,用于计算业务程序处理的时间,最终将跟踪上下文的基本信息推送给跟踪组件服务端进行异步处理保存,过滤器也被本次产生的TraceID以响应头的方式返回给起始调用端。
由于不单单是记录链路的调用过程,还要方便后期复现此跟踪的调用过程,所以每个服务接口的入口参数肯定是要记录的。在记录时先会根据请求的方法的类型获取参数,这里主要分为两种,一种是http参数url的Query;以及post的流数据参数,另一种是数据库和各种缓存参数。响应数据则是业务逻辑代码处理后的结果和操作数据库后各种结果,参数和响应结果获取成功后推送给跟踪系统做异步持久化。
进一步地,检测到客户端发起http请求,起始调用端根据预先设置的规则决定是否需要产生调用链跟踪上下文,包括:
预先在web程序中引入http链路跟踪记录组件的sdk包;
预先在sdk包中添加拦截器注册和过滤器注册的代码,并配置http链路跟踪记录组件的服务端地址和web接口程序的跟踪ID。
具体地,预先在web程序项目中引入本组件的sdk包,启动的地方添加拦截器注册和过滤器注册的代码,同时在项目配置本组件的服务端地址和本接口程序的spanID,用于记录跟踪的各种数据。
由于需要采集各种记录数据,因为需要在业务代码和相关操作数据的工具组件添加埋点代码,目前可根据需要根据的需求在web服务入口和出口添加http参数和结果拦截器和过滤器的注册,而对于数据库,则可在数据库工具组件中入口和出口添加采集sdk的,缓存和队列工具组件类似。由于此类数据大部分是采用公共组件的形式,改动量并不会很大,根本只要把公共组件修改完毕后,然后所有业务服务接口的代码引用带埋点的公共组件即可。对于某一类完全不需要跟踪的业务系统可直接继续不带埋点的公共组件即可。
可调试链路跟踪记录组成部分:分别有业务系统和跟踪系统;
其中业务系统包括有业务代码、调用期货业务接口、链路采集sdk,链路sdk主要作用是记录数据和对比数据,最终上传数据给跟踪系统;
跟踪系统接收采集的数据存储过缓存队列中,并定时持久化到数据库中,同时对数据做基本分析及前端展现。
跟踪中间件sdk要解决的第一个非常重要的问题就是调用链参数(traceID和父spanID)向下级服务接口的传递。在调用下级服务接口时,有些调用是不需要跟踪的,比如调用工具接口、稳定性很强的接口,所以我们设计了若干级开关处理:机器级开关(跳掉某个域名、IP的跟踪)、应用级开关(某个应用的跟踪)、接口级开关(跳掉某个接口的跟踪)、数据类型(跳过文件流数据)、功能类(某类功能)。
进一步地,检测到客户端发起http请求,起始调用端根据预先设置的规则决定是否需要产生调用链跟踪上下文,包括:
检测到客户端发起http请求,进入第一个被调用的web接口时,拦截器捕捉到http请求;
拦截器根据预先设置的规则判定是否需要产生调用链跟踪上下文。
具体地,当一个请求从一个发起端开始,进入第一个被调用的web接口时,会先被拦截器捕捉到,然后会根据预先设置的规则决定是否要产生调用链跟踪上下文。
进一步地,若第一个被调用的web接口还在继续请求其它web接口时,所述若需要产生调用链跟踪上下文,则产生一个唯一的分布式跟踪ID,并记录http请求对应的请求数据,继续执行业务代码逻辑后,还包括:
将第一个被调用的web接口对应的接口信息通过http头集合的方式传递给下一个web接口。
具体实施时,第一个被调用的程序如果还在继续请求其它功能的web接口,会将当前接口相关的TraceID和spanID等基本信息通过http头集合的方式传递给下一个web接口,方便下一个程序获取上级调用者的基本信息,以便记录上级的跟踪信息。
进一步地,根据分布式跟踪ID,将跟踪过程采用的跟踪参数返回至起始调用端后,还包括:
当web接口程序发起调试数据,将调试信息以及上一次的分布式跟踪ID设置到http头;
当第一个被调用的web接口检测到调试信息以及上一次的分布式跟踪ID时,则从http链路跟踪记录组件中拉取第一个被调用的web接口请求的参数及处理结果,将当前的参数覆盖为参数;
Web接口程序产生本次请求的跟踪上下文信息并记录。
具体实施时,如何使用已经产生的记录数据调试:调用端接收到接口响应的数据时,可以获取一个TraceID,我们可以根据TraceID去跟踪服务端查询此跟踪ID相关的链路请求数据,也可以拿来复现此跟踪的链路请求过程,具体实施如下:
我们使用web端发起调试数据时,会通过http请求头集合的方式,将isDebug和OldtraceID设置到http头,在发起调用第一个接口的动作时,第一个接口在获取到以上两个参数时,会从跟踪组件中根据traceID和当前spanID从服务端拉取当时此接口请求的参数和处理结果,同时将当前的参数覆盖为拉取到的参数,以便重现当前的请求动作,程序也会继续产生本次请求的跟踪上下文信息,以便记录本次请求跟踪信息,最终和上次跟踪信息做一个对比;如果此接口中也在继续请求其它功能的web接口,也会将当前接口程序相关的调试信息isDebug和OldrtraceID,TraceID和spanID等基本信息通过http头集合的方式传递给下一个web接口,下一个程序也会拉取历史请求的参数和结果,进行相关的跟踪记录和历史数据做对比。
每个服务接口的参数调试:根据被调试的traceID进行调试时,可直接在本地用开发工具打开代码启动调试模式,然后由客户端发起带isDebug和oldTraceID的接口请求,IDE工具接收到请求后,先从跟踪系统根据oldTraceID获取线上历史的请求参数,并在拦截器改写请求参数,然后交给业务逻辑代码执行,在此过程中组件也会继续从跟踪系统获取此过程的各种参数和结果,以便给中间的调用过程改写参数,每步都会记录对应的历史结果和当前结果的对比,最终将复现过程上传到服务端进行异步技术久,我们可在IDE单步调试直接查看调试的结果,也可以在跟踪系统用图文并茂的方式查看调试的结果。
由以上方法实施例可知,因此通过本发明实现的http接口调用链路记录方法,降低了被记录web接口记录链路的难度,因为不再依赖过多的第三方组件,只需要引用一个公共组件sdk,然后将拦截器和过滤器注册到业务接口代码中即可,当注册了http链路跟踪技术的接口收到请求后,会根据sdk配置决定是否产生跟踪的上下文对象。如果此时需要记录链路,则会记录请求的相关数据,然后在等业务代码执行后,在过滤器获取处理的结果,根据调试配置开关决定是否记录参数及结果的内容到持久库,同时更新跟踪的上下文件对象数据,最后将上下文件对象数据写入到http包头,以便下个web接口能获取上级的跟踪数据。这里的关键点是引入记录组件简单,非常轻量,代码修改工作量少,且支持链路过程中所产生的入口参数和出口结果,在后面根据需要可传入调试参数和调用的traceID,即可复现此链路的调用过程。
本发明提供了一种http链路跟踪记录方法,相对于其它的链路跟踪记录方法,链路跟踪记录的过程中,同时记录了各个链路环节的最终给方法实际使用的参数和当时的处理结果,为后期调试提供了真实参数和对比样本;
提供了各个环境同个软件节点的问题对比,例如A环境执行的结果跟踪参数,可在B环境进行完整参数的问题复现,以验证两者的代码逻辑是否一致;同时在线上环境出现问题时,也可将线上参数快速应用到本地开发工具中进行调试复现,大大加快找错的速度;
通过开发语言自身的http上下文信息来传递跟踪上下文的有效信息,不需要再依赖跟踪sdk的自定义的上下文对象来存储数据;
数据采集简易性,不需要考虑过多的第三组件或重量级的代码框架,集成成本较低。
在一些其他的技术方案中,当链路的跟踪不要求全部链部的情况,可以通过减少部分数据的采集埋点,例如操作缓存的入口和出口数据不关注或调试时可以不需要采集。但对于http相关的接口数据绝对要实现,因为这是最基本的数据,否则其它类型的数据采集的关键链路也不完整。
相对于传统方法,本发明所提出的方法具有以下有益效果:
一是实现方法简单,虽然前期需要投入人员进行跟踪系统的开发,但是跟踪系统可以在开源系统的基础上做二次开发,减少非主要的功能的成本,让团队的业务集中在采集数据sdk的开发和业务代码集成上,也不要将整个项目代码做过多的重构改造;
二是维护成本极低。只要将跟踪系统主要接口定义清楚,后期数据采集sdk可在原来的基础上增加对其它数据源的采集适配器即可,并不需要修改核心代码,大大降低了开发的复杂度;
三是跟踪管控简单,对于不需要再跟踪的业务系统,可直接通过服务端配置管理,关闭对应模块即可,相关各个环境的采集即刻不会再上报数据;
四是分离距离系统容易,由于对现有业务功能的代码改造非常少,若不想要使用本方法跟踪链路,后期修改代码的工作量极少。
上面对本发明实施例中的http链路跟踪记录方法进行了描述,下面对本发明实施例中的http链路跟踪记录系统进行描述,请参阅图2,图2是本发明实施例中一种http链路跟踪记录系统的另一实施例的硬件结构示意图,如图2所示,系统10包括:存储器101、处理器102及存储在存储器上并可在处理器上运行的计算机程序,计算机程序被处理器101执行时实现以下步骤:
检测到客户端发起http请求,起始调用端根据预先设置的规则决定是否需要产生调用链跟踪上下文;
若需要产生调用链跟踪上下文,则产生一个唯一的分布式跟踪ID,并记录http请求对应的请求数据,继续执行业务代码逻辑;
获取业务代码处理的返回结果,将返回结果填充到跟踪上下文中,获取跟踪上下文的信息推送至跟踪组件服务端进行异步处理保存;
根据分布式跟踪ID,将跟踪过程采用的跟踪参数返回至起始调用端。
具体的实施步骤与方法实施例相同,此处不再赘述。
可选地,计算机程序被处理器101执行时还实现以下步骤:
预先在web程序中引入http链路跟踪记录组件的sdk包;
预先在sdk包中添加拦截器注册和过滤器注册的代码,并配置http链路跟踪记录组件的服务端地址和web接口程序的跟踪ID。
具体的实施步骤与方法实施例相同,此处不再赘述。
可选地,计算机程序被处理器101执行时还实现以下步骤:
检测到客户端发起http请求,起始调用端根据预先设置的规则决定是否需要产生调用链跟踪上下文,包括:
检测到客户端发起http请求,进入第一个被调用的web接口时,拦截器捕捉到http请求;
拦截器根据预先设置的规则判定是否需要产生调用链跟踪上下文。
具体的实施步骤与方法实施例相同,此处不再赘述。
可选地,若第一个被调用的web接口还在继续请求其它web接口时,计算机程序被处理器101执行时还实现以下步骤:
将第一个被调用的web接口对应的接口信息通过http头集合的方式传递给下一个web接口。
具体的实施步骤与方法实施例相同,此处不再赘述。
可选地,计算机程序被处理器101执行时还实现以下步骤:
当web接口程序发起调试数据,将调试信息以及上一次的分布式跟踪ID设置到http头;
当第一个被调用的web接口检测到调试信息以及上一次的分布式跟踪ID时,则从http链路跟踪记录组件中拉取第一个被调用的web接口请求的参数及处理结果,将当前的参数覆盖为参数;
Web接口程序产生本次请求的跟踪上下文信息并记录。
具体的实施步骤与方法实施例相同,此处不再赘述。
本发明实施例提供了一种非易失性计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,例如,执行以上描述的图1中的方法步骤S100至步骤S500。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种http链路跟踪记录方法,应用于web接口程序,其特征在于,包括:
检测到客户端发起http请求,起始调用端根据预先设置的规则决定是否需要产生调用链跟踪上下文;
若需要产生调用链跟踪上下文,则产生一个唯一的分布式跟踪ID,并记录http请求对应的请求数据,继续执行业务代码逻辑;
获取业务代码处理的返回结果,将返回结果填充到跟踪上下文中,获取跟踪上下文的信息推送至跟踪组件服务端进行异步处理保存;
根据分布式跟踪ID,将跟踪过程采用的跟踪参数返回至起始调用端。
2.根据权利要求1所述的http链路跟踪记录方法,其特征在于,所述检测到客户端发起http请求,起始调用端根据预先设置的规则决定是否需要产生调用链跟踪上下文,包括:
预先在web程序中引入http链路跟踪记录组件的sdk包;
预先在sdk包中添加拦截器注册和过滤器注册的代码,并配置http链路跟踪记录组件的服务端地址和web接口程序的跟踪ID。
3.根据权利要求2所述的http链路跟踪记录方法,其特征在于,所述检测到客户端发起http请求,起始调用端根据预先设置的规则决定是否需要产生调用链跟踪上下文,包括:
检测到客户端发起http请求,进入第一个被调用的web接口时,拦截器捕捉到http请求;
拦截器根据预先设置的规则判定是否需要产生调用链跟踪上下文。
4.根据权利要求3所述的http链路跟踪记录方法,其特征在于,若第一个被调用的web接口还在继续请求其它web接口时,所述若需要产生调用链跟踪上下文,则产生一个唯一的分布式跟踪ID,并记录http请求对应的请求数据,继续执行业务代码逻辑后,还包括:
将第一个被调用的web接口对应的接口信息通过http头集合的方式传递给下一个web接口。
5.根据权利要求4所述的http链路跟踪记录方法,其特征在于,所述根据分布式跟踪ID,将跟踪过程采用的跟踪参数返回至起始调用端后,还包括:
当web接口程序发起调试数据,将调试信息以及上一次的分布式跟踪ID设置到http头;
当第一个被调用的web接口检测到调试信息以及上一次的分布式跟踪ID时,则从http链路跟踪记录组件中拉取第一个被调用的web接口请求的参数及处理结果,将当前的参数覆盖为参数;
Web接口程序产生本次请求的跟踪上下文信息并记录。
6.一种http链路跟踪记录系统,其特征在于,所述系统包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现以下步骤:
检测到客户端发起http请求,起始调用端根据预先设置的规则决定是否需要产生调用链跟踪上下文;
若需要产生调用链跟踪上下文,则产生一个唯一的分布式跟踪ID,并记录http请求对应的请求数据,继续执行业务代码逻辑;
获取业务代码处理的返回结果,将返回结果填充到跟踪上下文中,获取跟踪上下文的信息推送至跟踪组件服务端进行异步处理保存;
根据分布式跟踪ID,将跟踪过程采用的跟踪参数返回至起始调用端。
7.根据权利要求6所述的http链路跟踪记录系统,其特征在于,所述计算机程序被所述处理器执行时还实现以下步骤:
预先在web程序中引入http链路跟踪记录组件的sdk包;
预先在sdk包中添加拦截器注册和过滤器注册的代码,并配置http链路跟踪记录组件的服务端地址和web接口程序的跟踪ID。
8.根据权利要求7所述的http链路跟踪记录系统,其特征在于,所述计算机程序被所述处理器执行时还实现以下步骤:
检测到客户端发起http请求,起始调用端根据预先设置的规则决定是否需要产生调用链跟踪上下文,包括:
检测到客户端发起http请求,进入第一个被调用的web接口时,拦截器捕捉到http请求;
拦截器根据预先设置的规则判定是否需要产生调用链跟踪上下文。
9.根据权利要求8所述的http链路跟踪记录系统,其特征在于,若第一个被调用的web接口还在继续请求其它web接口时,所述计算机程序被所述处理器执行时还实现以下步骤:
将第一个被调用的web接口对应的接口信息通过http头集合的方式传递给下一个web接口。
10.一种非易失性计算机可读存储介质,其特征在于,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行权利要求1-5任一项所述的http链路跟踪记录方法。
CN202010056136.XA 2020-01-18 2020-01-18 一种http链路跟踪记录方法及系统 Active CN111277643B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010056136.XA CN111277643B (zh) 2020-01-18 2020-01-18 一种http链路跟踪记录方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010056136.XA CN111277643B (zh) 2020-01-18 2020-01-18 一种http链路跟踪记录方法及系统

Publications (2)

Publication Number Publication Date
CN111277643A true CN111277643A (zh) 2020-06-12
CN111277643B CN111277643B (zh) 2023-07-28

Family

ID=71003038

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010056136.XA Active CN111277643B (zh) 2020-01-18 2020-01-18 一种http链路跟踪记录方法及系统

Country Status (1)

Country Link
CN (1) CN111277643B (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111865978A (zh) * 2020-07-20 2020-10-30 深圳乐信软件技术有限公司 一种微服务的请求标识更新方法、装置、设备及介质
CN111913789A (zh) * 2020-06-29 2020-11-10 浪潮通用软件有限公司 一种支持微服务架构的程序跟踪方法及设备、介质
CN112118286A (zh) * 2020-08-04 2020-12-22 紫光云(南京)数字技术有限公司 基于mdc多线程链路追踪方法、装置及计算机可读存储介质
CN112311811A (zh) * 2020-11-16 2021-02-02 深圳市欢太科技有限公司 全链路跟踪方法、装置、存储介质以及服务器
CN112437155A (zh) * 2020-11-20 2021-03-02 北京健康之家科技有限公司 服务数据的处理方法、装置以及服务端设备
CN112565194A (zh) * 2020-11-09 2021-03-26 广东华兴银行股份有限公司 一种交易链路跟踪方法、电子设备及存储介质
CN112861053A (zh) * 2021-01-18 2021-05-28 北京致远互联软件股份有限公司 一种任务系统调用链路的表单跟踪系统
CN112883379A (zh) * 2021-01-13 2021-06-01 深圳开源互联网安全技术有限公司 基于IAST的Node.js数据流跟踪方法及系统
CN113064790A (zh) * 2021-03-15 2021-07-02 上海浦东发展银行股份有限公司 基于配置中心的调用链数据采集系统、方法及存储介质
CN113254112A (zh) * 2021-04-29 2021-08-13 杭州天谷信息科技有限公司 一种请求和接口的关联方法及系统
CN113407458A (zh) * 2021-07-09 2021-09-17 广州博冠信息科技有限公司 接口的测试方法、装置、电子设备及计算机可读介质
CN113794705A (zh) * 2021-09-02 2021-12-14 百融至信(北京)征信有限公司 基于TTL的多header链路灰度发布方法及系统
CN114547524A (zh) * 2022-03-07 2022-05-27 无锡雪浪数制科技有限公司 一种同步http接口数据的方法、设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101848477A (zh) * 2009-03-24 2010-09-29 亚信科技(中国)有限公司 一种故障诊断方法及系统
CN102595002A (zh) * 2011-01-13 2012-07-18 中兴通讯股份有限公司 一种增值业务流程在线调测的装置和方法
US20160173486A1 (en) * 2014-12-12 2016-06-16 Medidata Solutions, Inc. Method and system for automating submission of issue reports
CN106502874A (zh) * 2016-10-26 2017-03-15 南京途牛科技有限公司 一种调用链跟踪方法
CN108228322A (zh) * 2016-12-12 2018-06-29 阿里巴巴集团控股有限公司 一种分布式链路跟踪、分析方法及服务器、全局调度器
CN109117397A (zh) * 2017-06-23 2019-01-01 瑞萨电子株式会社 半导体装置和追踪数据存储方法
CN109831351A (zh) * 2018-12-29 2019-05-31 深圳云天励飞技术有限公司 链路跟踪方法、装置、终端及存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101848477A (zh) * 2009-03-24 2010-09-29 亚信科技(中国)有限公司 一种故障诊断方法及系统
CN102595002A (zh) * 2011-01-13 2012-07-18 中兴通讯股份有限公司 一种增值业务流程在线调测的装置和方法
US20160173486A1 (en) * 2014-12-12 2016-06-16 Medidata Solutions, Inc. Method and system for automating submission of issue reports
CN106502874A (zh) * 2016-10-26 2017-03-15 南京途牛科技有限公司 一种调用链跟踪方法
CN108228322A (zh) * 2016-12-12 2018-06-29 阿里巴巴集团控股有限公司 一种分布式链路跟踪、分析方法及服务器、全局调度器
CN109117397A (zh) * 2017-06-23 2019-01-01 瑞萨电子株式会社 半导体装置和追踪数据存储方法
CN109831351A (zh) * 2018-12-29 2019-05-31 深圳云天励飞技术有限公司 链路跟踪方法、装置、终端及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ALEX KING YEUNG CHEUNG: "Publisher Placement Algorithms in Content-Based Publish/Subscribe", 《IEEE》 *
郑邦峰: "分布式系统服务链追踪与监控", 《工业技术创新》 *

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111913789A (zh) * 2020-06-29 2020-11-10 浪潮通用软件有限公司 一种支持微服务架构的程序跟踪方法及设备、介质
CN111865978A (zh) * 2020-07-20 2020-10-30 深圳乐信软件技术有限公司 一种微服务的请求标识更新方法、装置、设备及介质
CN111865978B (zh) * 2020-07-20 2022-11-15 深圳乐信软件技术有限公司 一种微服务的请求标识更新方法、装置、设备及介质
CN112118286A (zh) * 2020-08-04 2020-12-22 紫光云(南京)数字技术有限公司 基于mdc多线程链路追踪方法、装置及计算机可读存储介质
CN112118286B (zh) * 2020-08-04 2021-08-17 紫光云(南京)数字技术有限公司 基于mdc多线程链路追踪方法、装置及计算机可读存储介质
CN112565194A (zh) * 2020-11-09 2021-03-26 广东华兴银行股份有限公司 一种交易链路跟踪方法、电子设备及存储介质
CN112311811A (zh) * 2020-11-16 2021-02-02 深圳市欢太科技有限公司 全链路跟踪方法、装置、存储介质以及服务器
CN112437155A (zh) * 2020-11-20 2021-03-02 北京健康之家科技有限公司 服务数据的处理方法、装置以及服务端设备
CN112437155B (zh) * 2020-11-20 2024-02-20 北京水滴科技集团有限公司 服务数据的处理方法、装置以及服务端设备
CN112883379A (zh) * 2021-01-13 2021-06-01 深圳开源互联网安全技术有限公司 基于IAST的Node.js数据流跟踪方法及系统
CN112883379B (zh) * 2021-01-13 2023-04-25 深圳开源互联网安全技术有限公司 基于IAST的Node.js数据流跟踪方法及系统
CN112861053A (zh) * 2021-01-18 2021-05-28 北京致远互联软件股份有限公司 一种任务系统调用链路的表单跟踪系统
CN113064790A (zh) * 2021-03-15 2021-07-02 上海浦东发展银行股份有限公司 基于配置中心的调用链数据采集系统、方法及存储介质
CN113064790B (zh) * 2021-03-15 2023-08-11 上海浦东发展银行股份有限公司 基于配置中心的调用链数据采集系统、方法及存储介质
CN113254112A (zh) * 2021-04-29 2021-08-13 杭州天谷信息科技有限公司 一种请求和接口的关联方法及系统
CN113407458B (zh) * 2021-07-09 2023-07-14 广州博冠信息科技有限公司 接口的测试方法、装置、电子设备及计算机可读介质
CN113407458A (zh) * 2021-07-09 2021-09-17 广州博冠信息科技有限公司 接口的测试方法、装置、电子设备及计算机可读介质
CN113794705A (zh) * 2021-09-02 2021-12-14 百融至信(北京)征信有限公司 基于TTL的多header链路灰度发布方法及系统
CN113794705B (zh) * 2021-09-02 2023-08-04 百融至信(北京)科技有限公司 基于TTL的多header链路灰度发布方法及系统
CN114547524B (zh) * 2022-03-07 2023-03-03 无锡雪浪数制科技有限公司 一种同步http接口数据的方法、设备及存储介质
CN114547524A (zh) * 2022-03-07 2022-05-27 无锡雪浪数制科技有限公司 一种同步http接口数据的方法、设备及存储介质

Also Published As

Publication number Publication date
CN111277643B (zh) 2023-07-28

Similar Documents

Publication Publication Date Title
CN111277643A (zh) 一种http链路跟踪记录方法及系统
US8037457B2 (en) Method and system for generating and displaying function call tracker charts
CN106021079B (zh) 一种基于用户频繁访问序列模型的Web应用性能测试方法
US7941789B2 (en) Common performance trace mechanism
US8037458B2 (en) Method and system for providing a common structure for trace data
US8156473B2 (en) Model oriented debugging
CN110908641B (zh) 基于可视化的流计算平台、方法、设备和存储介质
US8271469B2 (en) Method and system for a non-hierarchical trace system using a hierarchical control interface
CN112486786B (zh) 一种调用链路追踪方法及装置
US20220147408A1 (en) Automation solutions for event logging and debugging on kubernetes
JP6401786B2 (ja) 全ソフトウェアレイヤの透過的なパフォーマンス推測およびコンテキスト依存のパフォーマンスデバッギング
CN108964993B (zh) 基于动态代理的故障模拟方法、装置、设备及可读存储介质
US10528456B2 (en) Determining idle testing periods
CN108573029B (zh) 一种获取网络访问关系数据的方法、装置及存储介质
CN111382023A (zh) 代码故障定位方法、装置、设备及存储介质
US10552130B1 (en) Code optimization conversations for connected managed runtime environments
CN111930472A (zh) 一种代码调试方法、装置、电子设备及存储介质
US8732323B2 (en) Recording medium storing transaction model generation support program, transaction model generation support computer, and transaction model generation support method
CN116204239A (zh) 业务处理方法、装置和计算机可读存储介质
CN113360138A (zh) 操作日志处理方法、装置、电子设备和存储介质
CN111338609A (zh) 信息获取方法、装置、存储介质及终端
CN111158653A (zh) 基于sql语言的实时计算程序的集成开发及执行系统
Kabamba et al. Advanced Strategies for Precise and Transparent Debugging of Performance Issues in In-Memory Data Store-Based Microservices
CN118012720B (zh) 复杂事件处理方法、装置、介质及设备
CN112100021A (zh) 一种php应用实时性能数据采集分析方法和系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant