CN116264555A - 网络产品应用的分布式调用的链路跟踪方法及装置 - Google Patents
网络产品应用的分布式调用的链路跟踪方法及装置 Download PDFInfo
- Publication number
- CN116264555A CN116264555A CN202211489488.XA CN202211489488A CN116264555A CN 116264555 A CN116264555 A CN 116264555A CN 202211489488 A CN202211489488 A CN 202211489488A CN 116264555 A CN116264555 A CN 116264555A
- Authority
- CN
- China
- Prior art keywords
- sampling
- request
- plug
- link
- class
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 152
- 238000005070 sampling Methods 0.000 claims abstract description 195
- 238000004891 communication Methods 0.000 claims description 16
- 238000012544 monitoring process Methods 0.000 claims description 15
- 230000003213 activating effect Effects 0.000 claims description 7
- 238000007639 printing Methods 0.000 claims description 7
- 230000002708 enhancing effect Effects 0.000 claims description 6
- 239000000523 sample Substances 0.000 description 35
- 238000010586 diagram Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000010354 integration Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 2
- 241000533950 Leucojum Species 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000002513 implantation Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000009545 invasion Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 238000013024 troubleshooting Methods 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/50—Testing arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/30—Profiles
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Environmental & Geological Engineering (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例涉及IT应用技术领域,公开了一种网络产品应用的分布式调用的链路跟踪方法及装置,该方法包括:获取经网关工程处理后的用户请求;对所述用户请求进行链路优先级设置和日志填充请求链路标识;设置链路和日志的多种场景下的采样规则;定义不同语言的插件,并应用所述插件进行插桩并采样符合所述采样规则的请求链路;对所述请求链路产生的日志信息进行上报、存储及分析。通过上述方式,本发明实施例能够将不同语言的插件的请求链路标识与日志之间进行关联,方便的调用链的跟踪定位。
Description
技术领域
本发明实施例涉及IT应用技术领域,具体涉及一种网络产品应用的分布式调用的链路跟踪方法及装置。
背景技术
分布式微服务架构下,大量的服务之间调用的相互依赖,一次请求可能会涉及到几十个服务的协同处理,如何快速准确的定位到线上的故障以及性能瓶颈,便成为开发必须面对的棘手问题。传统的日志监控等方法无法很好打到跟踪调用、排查问题、性能统计等需求。于是新的技术:将请求调用过程完整的链接起来,实现对请求调用路径监控的分布式调用链技术应运而生。
SkyWalking是一款专为微服务架构和云原生架构系统而设计并且支撑分布式链路追踪的应用程序性能监视器(Applications Manager,APM)系统。它提供了一种自动检测应用程序的方法:无需更改目标程序的任何源代码,以及具有高效流媒体功能模块的收集器。通过加载探针-非侵入式的方式手机应用链路信息,并对采集的调用链路信息进行分析,生成应用间关系和服务间关系以及服务指标。
现有技术中,SkyWalking只会采集部分数据,默认设置了3秒采样前3次。如此,假设在这台机器上在3秒内有多个使用了Spring、MySql、Redis调用的请求,在如果前三次都是Spring调用的话,其他MySql、Redis等调用就采样不到了。另外,SkyWalking并没有直接集成traceId到日志输出。
发明内容
鉴于上述问题,本发明实施例提供了一种网络产品应用的分布式调用的链路跟踪方法及装置,克服了上述问题或者至少部分地解决了上述问题。
根据本发明实施例的一个方面,提供了一种网络产品应用的分布式调用的链路跟踪方法,所述方法包括:获取经网关工程处理后的用户请求;对所述用户请求进行链路优先级设置和日志填充请求链路标识;设置链路和日志的多种场景下的采样规则;定义不同语言的插件,并应用所述插件进行插桩并采样符合所述采样规则的请求链路;对所述请求链路产生的日志信息进行上报、存储及分析。
在一种可选的方式中,所述获取经网关工程处理后的用户请求之前,包括:用户请求经过网关工程在header中添加请求标识;携带所述请求标识的所述用户请求经过网关工程转发。
在一种可选的方式中,所述对所述用户请求进行链路优先级设置和日志填充请求链路标识,包括:在插件的配置文件中添加采样级别参数;自定义插件的输出日志的格式并嵌入请求链路标识。
在一种可选的方式中,所述在插件的配置文件中添加采样级别参数,包括:如果仅对监控的类中的create方法采样,则将插件的配置文件中的采样级别参数配置为create;如果仅对监控的类中的create和delete方法采样,则将插件的配置文件中的采样级别参数配置为delete;如果仅对监控的类中的create、delete和update方法采样,则将插件的配置文件中的采样级别参数配置为update;如果对监控的类中所有的方法采样,则将插件的配置文件中的采样级别参数配置为query。
在一种可选的方式中,所述设置链路和日志的多种场景下的采样规则,包括:在所述用户请求的header中添加强制采样标识,所述强制采样标识用于表示是否需要强制采样;在插件的配置文件中添加采样类型参数,所述采样类型参数用于表示采用默认采样方式或分组采样方式。
在一种可选的方式中,所述定义不同语言的插件,包括:定义Spring注解插件,编写Instrumentation类,在enhanceClass方法中对符合条件的类进行监控,并对@RestController、@Service注解声明的类进行监控;根据监控的类中的方法定义对应的注解标注方法的链路级别;使用插件apm-toolkit-trace支持多线程场景下将多个线程的链路关联;从Interceptor类中获取RequestContext的采样级别参数的值,根据采样级别参数的值对注解的方法进行增强;编写Interceptor类对监控的方法在方法执行前的切点进行Span的创建和配置,在方法执行后的切点进行Span的激活和停止,并在handleMethodException方法中对异常进行记录。
在一种可选的方式中,所述应用所述插件进行插桩并采样符合所述采样规则的请求链路,包括:获取header中的强制采样标识,如果所述强制采样标识为真,则默认强制采样;如果配置文件中的采样类型参数表示为分组采样方式,则对不同的组件进行分组,不同分组的请求单独使用对应的一套ContextManager和SamplingService统计采样频率;在调用neutron的http请求中将traceId塞入header请求中,将neutron接入SkyWalking,对监控的网络产品接口实现的类的需要监控的方法加上@trace注解,自定义方法名进行日志打印并加入所述请求链路标识。
根据本发明实施例的另一个方面,提供了一种网络产品应用的分布式调用的链路跟踪装置,所述装置包括:请求获取单元,用于获取经网关工程处理后的用户请求;配置单元,用于对所述用户请求进行链路优先级设置和日志填充请求链路标识;规则设置单元,用于设置链路和日志的多种场景下的采样规则;采样单元,用于定义不同语言的插件,并应用所述插件进行插桩并采样符合所述采样规则的请求链路;链路跟踪单元,用于对所述请求链路产生的日志信息进行上报、存储及分析。
根据本发明实施例的另一方面,提供了一种计算设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行上述网络产品应用的分布式调用的链路跟踪方法的步骤。
根据本发明实施例的又一方面,提供了一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使所述处理器执行上述网络产品应用的分布式调用的链路跟踪方法的步骤。
本发明实施例通过获取经网关工程处理后的用户请求;对所述用户请求进行链路优先级设置和日志填充请求链路标识;设置链路和日志的多种场景下的采样规则;定义不同语言的插件,并应用所述插件进行插桩并采样符合所述采样规则的请求链路;对所述请求链路产生的日志信息进行上报、存储及分析,能够将不同语言的插件的请求链路标识与日志之间进行关联,方便的调用链的跟踪定位。
上述说明仅是本发明实施例技术方案的概述,为了能够更清楚了解本发明实施例的技术手段,而可依照说明书的内容予以实施,并且为了让本发明实施例的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例提供的网络产品应用的分布式调用的链路跟踪方法的流程示意图;
图2示出了本发明实施例提供的网络产品应用的分布式调用的链路跟踪方法的实现分布式调用的链路跟踪和日志整合的流程示意图;
图3示出了本发明实施例提供的网络产品应用的分布式调用的链路跟踪装置的结构示意图;
图4示出了本发明实施例提供的计算设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
图1示出了本发明实施例提供的网络产品应用的分布式调用的链路跟踪方法的流程示意图。该网络产品应用的分布式调用的链路跟踪方法应用于网络产品应用的控制台服务器,如图1所示,网络产品应用的分布式调用的链路跟踪方法包括:
步骤S11:获取经网关工程处理后的用户请求。
在本发明实施例中,SkyWalking架构包括SkyWalking代理(Agent)、可观测性分析平台(Observability Analysis Platform,OAP)以及用户界面(User Interface,UI)三部分。SkyWalking Agent使用Java agent做字节码植入,无侵入式的收集,并通过HTTP或者gRPC方式发送数据到OAP。OAP接收探针发送的数据,并在内存中使用分析引擎(AnalysisCore)进行数据的整合运算,然后将数据存储到对应的存储介质上,比如Elasticsearch、mysql数据库、H2数据库等。同时OAP还使用查询引擎(Query Core)提供HTTP查询接口。UI为Web可视化平台,用来展示落地的数据。
在SkyWalking架构中,Trace为一个完整请求链路,Span为一次调用过程,需要有开始时间和结束时间。SpanContext为Trace的全局上下文信息,如里面有请求链路标识traceId。一次完整请求完整就是一个Trace,显然对于这个请求来说,必须要有一个全局标识来标识这个请求,每一次调用就称为一个Span,每一次调用都要带上全局的TraceId,这样才可把全局TraceId与每个调用关联起来,这个TraceId就是通过SpanContext传输的。
OAP一直在收集数据,每一次调用Collector至少会收集如下信息:全局trace_id、span_id以及parent_span_id。通过全局trace_id能把每一个子调用与最初的请求关联起来,SkyWalking使用雪花算法本地生成全局唯一的trace_id。通过span_id标识是哪一个调用。对于parent_span_id,如果b调用d的span_id是1.1,那么它的parent_span_id即为a调用b的span_id即1,如此才能把两个紧邻的调用关联起来。
SkyWalking采用了插件化+java agent字节码插桩的技术来实现span数据的自动采集和上报,这样可以做到对代码的无侵入,插件化意味着可插拔、扩展性好。通过SkyWalking Agent将应用数据采集上报到采集器(Collector)并存储到观测分析平台(Observability Analysis Platform,OAP)的存储,然后再通过OAP进行查询。SkyWalking只会采集部分数据,默认设置了3秒采样前3次。在SkyWalking架构中,数据一般分为header和body,就像http有header和body一样,body一般存放业务数据,所以将context放在header中进行传递。
在步骤S11之前,用户请求经过网关工程在header中添加请求标识requestId;携带所述请求标识requestId的所述用户请求经过网关工程进行转发。具体用户请求经过网关工程转发到基于neutron实现的网络产品应用的控制台服务器,应用Filter过滤用户请求,获取header中的参数,使用transmittable-thread-local来设置到RequestContext中,此时携带了请求标识requestId。网络产品应用的控制台服务器获取网关工程转发的携带了请求标识requestId的用户请求。
步骤S12:对所述用户请求进行链路优先级设置和日志填充请求链路标识。
在本发明实施例中,对获取的用户请求中的请求方法级别的链路优先级进行配置和日志填充请求链路标识traceId。具体在步骤S12中,首先为了能够进行更细粒度的采样,在插件的配置文件中添加采样级别参数。可选的,如果仅对监控的类中的create方法采样,则将插件的配置文件中的采样级别参数配置为create;如果仅对监控的类中的create和delete方法采样,则将插件的配置文件中的采样级别参数配置为delete;如果仅对监控的类中的create、delete和update方法采样,则将插件的配置文件中的采样级别参数配置为update;如果对监控的类中所有的方法采样,则将插件的配置文件中的采样级别参数配置为query。
然后自定义插件的输出日志的格式并嵌入请求链路标识。可选的,使用log4j进行自定义插件的输出日志的格式,通过在自定义的日志格式中嵌入traceId:<property name="FILE_PATTERN"value="%d{yyyy-MM-ddHH:mm:ss.SSS}${LOG_LEVEL_PATTERN:-%5p}${PID:-}---[%15.15t]:[%X{request_id}]%m---[%{traceId}]---[%logger{39}:%M:%L]%n${LOG_EXCEPTION_CONVE RSION_WORD:-%wEx}"/>,并实现一个log4j的插件来支持,定义一个继承了LogEventPatternConverter的类,并将其声明为插件(Plugin),通过@ConverterKeys注解指定要替换的占位符,然后在format方法中将其进行替换。
步骤S13:设置链路和日志的多种场景下的采样规则。
在本发明实施例中,可选的,为了能强制采样指定请求,在所述用户请求的header中添加强制采样标识force_sample,所述强制采样标识force_sample用于表示是否需要强制采样。其中,强制采样标识force_sample=true表示需要强制采样,强制采样标识force_sample=false表示不需要强制采样。
为了能够进行更细粒度的采样,在插件(plugin)的配置文件中添加采样类型参数sample_type,所述采样类型参数sample_type用于表示采用默认采样方式或分组采样方式。其中,采样类型参数sample_type=default表示采用SkyWalking的默认采样方式,采样类型参数sample_type=by_group表示采用分组采样,对不同的组件都进行采样。
步骤S14:定义不同语言的插件,并应用所述插件进行插桩并采样符合所述采样规则的请求链路。
在本发明实施例中,可选的,定义Spring注解插件(Spring annotation plugin),编写Instrumentation类,在enhanceClass方法中对符合条件的类进行监控,并对@RestController、@Service注解声明的类进行监控;根据监控的类中的方法定义对应的注解标注方法的链路级别。具体将监控的类中的方法区分为create、delete、update、query四个级别,自定义MonitorLevelCreate、MonitorLevelDelete、MonitorLevelUpdate、MonitorLevelQuery四个注解标注方法的链路级别。使用插件apm-toolkit-trace支持多线程场景下将多个线程的链路关联。在自定义Spring annotation plugin中,从Interceptor类中获取RequestContext的采样级别参数sample_level的值,根据采样级别参数sample_level的值对注解的方法进行增强。编写Interceptor类对监控的方法在方法执行前的切点(beforMethod)进行Span的创建和配置,在方法执行后的切点(afterMethod)进行Span的激活和停止,并在handleMethodException方法中对异常进行记录。
在本发明实施例中,应用所述插件进行插桩并采样符合所述采样规则的请求链路时,通过在ContextManager的createEntrySpan方法中修改实现,获取header中的强制采样标识,如果所述强制采样标识force_sample为真(true),则默认强制采样。如果配置文件中的采样类型参数sample_type表示为分组采样方式(by_group),则对不同的组件进行分组,不同分组的请求单独使用对应的一套ContextManager和SamplingService统计采样频率。其中,不同的组件可以为spring、mysql、redis、mq等。
在控制台服务器调用neutron的http请求中将traceId塞入header请求中,将neutron接入SkyWalking,对监控的网络产品接口实现的类的需要监控的方法加上@trace注解,例如,@trace(op='customized_method_name');自定义方法名进行日志打印并加入所述请求链路标识。
步骤S15:对所述请求链路产生的日志信息进行上报、存储及分析。
将采样获取的日志信息进行上报和存储,并使用OAP对上报的日志进行分析展示,实现分布式调用的链路跟踪和日志整合。
本发明实施例的完整过程如图2所示,API调用的用户请求经过网关工程在header中添加requestId,并应用http协议转发至网络产品的服务,对添加了requestId的用户请求基于多种语言进行请求链路优先级设置和日志填充traceId,设置链路和日志的多种场景下的采样规则。多种语言包括但限于mysql、mop、op、network、compute、neutron等。自定义Java语言和Python语言的plugin用来插桩并采样控制台服务和neutron服务的符合前述设置规则的请求链路。采样过程中应用插件进行采样,然后通过SkyWalking Agent对采样的请求链路产生的日志信息进行上报和存储,通过OAP对上报的日志进行分析展示,方便用户查看。
SkyWalking现有的spring的plugin不支持强制采样,而是默认的每3秒采样三次,不支持根据请求方法细粒度的采样,本发明实施例支持强制采样和根据请求方法细粒度的采样,支持请求方法分为create、delete、update、query四大类级别细粒度的采样。本发明实施例通过用户在请求的header中添加force_sample参数来标志该请求需要强制采样,以在ContextManager的createEntrySpan方法中强制进行采样;通过在Interceptor类中根据配置的采样方法级别对不同注解级别的方法进行采样。
SkyWalking中,现有的spring的plugin只支持所有组件统一采样,无法根据不同的组件分组采样,现有的java语言的plugin不支持traceId与log的关联,也不支持与python语言的plugin不支持traceId的传递,本发明实施例支持根据不同的组件分组采样,以及支持traceId的传递,保持了plugin之间的连续性。本发明实施例通过配置文件的sample_type来标志是否需要分组采样不同的组件来对不同组件的请求都进行每3秒3次的采样或者是强制采样;通过自定义log4j的组件的实现,实现了traceId与日志(log)的关联,并且通过不同语言之间http请求header中传递traceId,来将不同语言的plugin的traceId与日志之间进行了关联,方便的调用链的跟踪定位。
综上所述,本发明实施例通过获取经网关工程处理后的用户请求;对所述用户请求进行链路优先级设置和日志填充请求链路标识;设置链路和日志的多种场景下的采样规则;定义不同语言的插件,并应用所述插件进行插桩并采样符合所述采样规则的请求链路;对所述请求链路产生的日志信息进行上报、存储及分析,能够将不同语言的插件的请求链路标识与日志之间进行关联,方便的调用链的跟踪定位。
图3示出了本发明实施例的网络产品应用的分布式调用的链路跟踪装置的结构示意图。如图3所示,该网络产品应用的分布式调用的链路跟踪装置应用于基站,包括:请求获取单元301、配置单元302、规则设置单元303、采样单元304以及链路跟踪单元305。其中:
请求获取单元301用于获取经网关工程处理后的用户请求;配置单元302用于对所述用户请求进行链路优先级设置和日志填充请求链路标识;规则设置单元303用于设置链路和日志的多种场景下的采样规则;采样单元304用于定义不同语言的插件,并应用所述插件进行插桩并采样符合所述采样规则的请求链路;链路跟踪单元305用于对所述请求链路产生的日志信息进行上报、存储及分析。
在一种可选的方式中,请求获取单元301用于:用户请求经过网关工程在header中添加请求标识;携带所述请求标识的所述用户请求经过网关工程转发。
在一种可选的方式中,配置单元302用于:在插件的配置文件中添加采样级别参数;自定义插件的输出日志的格式并嵌入请求链路标识。
在一种可选的方式中,配置单元302用于:如果仅对监控的类中的create方法采样,则将插件的配置文件中的采样级别参数配置为create;如果仅对监控的类中的create和delete方法采样,则将插件的配置文件中的采样级别参数配置为delete;如果仅对监控的类中的create、delete和update方法采样,则将插件的配置文件中的采样级别参数配置为update;如果对监控的类中所有的方法采样,则将插件的配置文件中的采样级别参数配置为query。
在一种可选的方式中,规则设置单元303用于:在所述用户请求的header中添加强制采样标识,所述强制采样标识用于表示是否需要强制采样;在插件的配置文件中添加采样类型参数,所述采样类型参数用于表示采用默认采样方式或分组采样方式。
在一种可选的方式中,采样单元304用于:定义Spring注解插件,编写Instrumentation类,在enhanceClass方法中对符合条件的类进行监控,并对@RestController、@Service注解声明的类进行监控;根据监控的类中的方法定义对应的注解标注方法的链路级别;使用插件apm-toolkit-trace支持多线程场景下将多个线程的链路关联;从Interceptor类中获取RequestContext的采样级别参数的值,根据采样级别参数的值对注解的方法进行增强;编写Interceptor类对监控的方法在方法执行前的切点进行Span的创建和配置,在方法执行后的切点进行Span的激活和停止,并在handleMethodException方法中对异常进行记录。
在一种可选的方式中,采样单元304还用于:获取header中的强制采样标识,如果所述强制采样标识为真,则默认强制采样;如果配置文件中的采样类型参数表示为分组采样方式,则对不同的组件进行分组,不同分组的请求单独使用对应的一套ContextManager和SamplingService统计采样频率;在调用neutron的http请求中将traceId塞入header请求中,将neutron接入SkyWalking,对监控的网络产品接口实现的类的需要监控的方法加上@trace注解,自定义方法名进行日志打印并加入所述请求链路标识。
本发明实施例通过获取经网关工程处理后的用户请求;对所述用户请求进行链路优先级设置和日志填充请求链路标识;设置链路和日志的多种场景下的采样规则;定义不同语言的插件,并应用所述插件进行插桩并采样符合所述采样规则的请求链路;对所述请求链路产生的日志信息进行上报、存储及分析,能够将不同语言的插件的请求链路标识与日志之间进行关联,方便的调用链的跟踪定位。
本发明实施例提供了一种非易失性计算机存储介质,所述计算机存储介质存储有至少一可执行指令,该计算机可执行指令可执行上述任意方法实施例中的网络产品应用的分布式调用的链路跟踪方法。
可执行指令具体可以用于使得处理器执行以下操作:
获取经网关工程处理后的用户请求;
对所述用户请求进行链路优先级设置和日志填充请求链路标识;
设置链路和日志的多种场景下的采样规则;
定义不同语言的插件,并应用所述插件进行插桩并采样符合所述采样规则的请求链路;
对所述请求链路产生的日志信息进行上报、存储及分析。
在一种可选的方式中,所述可执行指令使所述处理器执行以下操作:
用户请求经过网关工程在header中添加请求标识;
携带所述请求标识的所述用户请求经过网关工程转发。
在一种可选的方式中,所述可执行指令使所述处理器执行以下操作:
在插件的配置文件中添加采样级别参数;
自定义插件的输出日志的格式并嵌入请求链路标识。
在一种可选的方式中,所述可执行指令使所述处理器执行以下操作:
如果仅对监控的类中的create方法采样,则将插件的配置文件中的采样级别参数配置为create;
如果仅对监控的类中的create和delete方法采样,则将插件的配置文件中的采样级别参数配置为delete;
如果仅对监控的类中的create、delete和update方法采样,则将插件的配置文件中的采样级别参数配置为update;
如果对监控的类中所有的方法采样,则将插件的配置文件中的采样级别参数配置为query。
在一种可选的方式中,所述可执行指令使所述处理器执行以下操作:
在所述用户请求的header中添加强制采样标识,所述强制采样标识用于表示是否需要强制采样;
在插件的配置文件中添加采样类型参数,所述采样类型参数用于表示采用默认采样方式或分组采样方式。
在一种可选的方式中,所述可执行指令使所述处理器执行以下操作:
定义Spring注解插件,编写Instrumentation类,在enhanceClass方法中对符合条件的类进行监控,并对@RestController、@Service注解声明的类进行监控;
根据监控的类中的方法定义对应的注解标注方法的链路级别;
使用插件apm-toolkit-trace支持多线程场景下将多个线程的链路关联;
从Interceptor类中获取RequestContext的采样级别参数的值,根据采样级别参数的值对注解的方法进行增强;
编写Interceptor类对监控的方法在方法执行前的切点进行Span的创建和配置,在方法执行后的切点进行Span的激活和停止,并在handleMethodException方法中对异常进行记录。
在一种可选的方式中,所述可执行指令使所述处理器执行以下操作:
获取header中的强制采样标识,如果所述强制采样标识为真,则默认强制采样;
如果配置文件中的采样类型参数表示为分组采样方式,则对不同的组件进行分组,不同分组的请求单独使用对应的一套ContextManager和SamplingService统计采样频率;
在调用neutron的http请求中将traceId塞入header请求中,将neutron接入SkyWalking,对监控的网络产品接口实现的类的需要监控的方法加上@trace注解,自定义方法名进行日志打印并加入所述请求链路标识。
本发明实施例通过获取经网关工程处理后的用户请求;对所述用户请求进行链路优先级设置和日志填充请求链路标识;设置链路和日志的多种场景下的采样规则;定义不同语言的插件,并应用所述插件进行插桩并采样符合所述采样规则的请求链路;对所述请求链路产生的日志信息进行上报、存储及分析,能够将不同语言的插件的请求链路标识与日志之间进行关联,方便的调用链的跟踪定位。
本发明实施例提供了一种计算机程序产品,所述计算机程序产品包括存储在计算机存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行上述任意方法实施例中的网络产品应用的分布式调用的链路跟踪方法。
可执行指令具体可以用于使得处理器执行以下操作:
获取经网关工程处理后的用户请求;
对所述用户请求进行链路优先级设置和日志填充请求链路标识;
设置链路和日志的多种场景下的采样规则;
定义不同语言的插件,并应用所述插件进行插桩并采样符合所述采样规则的请求链路;
对所述请求链路产生的日志信息进行上报、存储及分析。
在一种可选的方式中,所述可执行指令使所述处理器执行以下操作:
用户请求经过网关工程在header中添加请求标识;
携带所述请求标识的所述用户请求经过网关工程转发。
在一种可选的方式中,所述可执行指令使所述处理器执行以下操作:
在插件的配置文件中添加采样级别参数;
自定义插件的输出日志的格式并嵌入请求链路标识。
在一种可选的方式中,所述可执行指令使所述处理器执行以下操作:
如果仅对监控的类中的create方法采样,则将插件的配置文件中的采样级别参数配置为create;
如果仅对监控的类中的create和delete方法采样,则将插件的配置文件中的采样级别参数配置为delete;
如果仅对监控的类中的create、delete和update方法采样,则将插件的配置文件中的采样级别参数配置为update;
如果对监控的类中所有的方法采样,则将插件的配置文件中的采样级别参数配置为query。
在一种可选的方式中,所述可执行指令使所述处理器执行以下操作:
在所述用户请求的header中添加强制采样标识,所述强制采样标识用于表示是否需要强制采样;
在插件的配置文件中添加采样类型参数,所述采样类型参数用于表示采用默认采样方式或分组采样方式。
在一种可选的方式中,所述可执行指令使所述处理器执行以下操作:
定义Spring注解插件,编写Instrumentation类,在enhanceClass方法中对符合条件的类进行监控,并对@RestController、@Service注解声明的类进行监控;
根据监控的类中的方法定义对应的注解标注方法的链路级别;
使用插件apm-toolkit-trace支持多线程场景下将多个线程的链路关联;
从Interceptor类中获取RequestContext的采样级别参数的值,根据采样级别参数的值对注解的方法进行增强;
编写Interceptor类对监控的方法在方法执行前的切点进行Span的创建和配置,在方法执行后的切点进行Span的激活和停止,并在handleMethodException方法中对异常进行记录。
在一种可选的方式中,所述可执行指令使所述处理器执行以下操作:
获取header中的强制采样标识,如果所述强制采样标识为真,则默认强制采样;
如果配置文件中的采样类型参数表示为分组采样方式,则对不同的组件进行分组,不同分组的请求单独使用对应的一套ContextManager和SamplingService统计采样频率;
在调用neutron的http请求中将traceId塞入header请求中,将neutron接入SkyWalking,对监控的网络产品接口实现的类的需要监控的方法加上@trace注解,自定义方法名进行日志打印并加入所述请求链路标识。
本发明实施例通过获取经网关工程处理后的用户请求;对所述用户请求进行链路优先级设置和日志填充请求链路标识;设置链路和日志的多种场景下的采样规则;定义不同语言的插件,并应用所述插件进行插桩并采样符合所述采样规则的请求链路;对所述请求链路产生的日志信息进行上报、存储及分析,能够将不同语言的插件的请求链路标识与日志之间进行关联,方便的调用链的跟踪定位。
图4示出了本发明实施例提供的计算设备的结构示意图,本发明具体实施例并不对设备的具体实现做限定。
如图4所示,该计算设备可以包括:处理器(processor)402、通信接口(Communications Interface)404、存储器(memory)406、以及通信总线408。
其中:处理器402、通信接口404、以及存储器406通过通信总线408完成相互间的通信。通信接口404,用于与其它设备比如客户端或其它服务器等的网元通信。处理器402,用于执行程序410,具体可以执行上述网络产品应用的分布式调用的链路跟踪方法实施例中的相关步骤。
具体地,程序410可以包括程序代码,该程序代码包括计算机操作指令。
处理器402可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或各个集成电路。设备包括的一个或各个处理器,可以是同一类型的处理器,如一个或各个CPU;也可以是不同类型的处理器,如一个或各个CPU以及一个或各个ASIC。
存储器406,用于存放程序410。存储器406可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序410具体可以用于使得处理器402执行以下操作:
获取经网关工程处理后的用户请求;
对所述用户请求进行链路优先级设置和日志填充请求链路标识;
设置链路和日志的多种场景下的采样规则;
定义不同语言的插件,并应用所述插件进行插桩并采样符合所述采样规则的请求链路;
对所述请求链路产生的日志信息进行上报、存储及分析。
在一种可选的方式中,所述程序410使所述处理器执行以下操作:
用户请求经过网关工程在header中添加请求标识;
携带所述请求标识的所述用户请求经过网关工程转发。
在一种可选的方式中,所述程序410使所述处理器执行以下操作:
在插件的配置文件中添加采样级别参数;
自定义插件的输出日志的格式并嵌入请求链路标识。
在一种可选的方式中,所述程序410使所述处理器执行以下操作:
如果仅对监控的类中的create方法采样,则将插件的配置文件中的采样级别参数配置为create;
如果仅对监控的类中的create和delete方法采样,则将插件的配置文件中的采样级别参数配置为delete;
如果仅对监控的类中的create、delete和update方法采样,则将插件的配置文件中的采样级别参数配置为update;
如果对监控的类中所有的方法采样,则将插件的配置文件中的采样级别参数配置为query。
在一种可选的方式中,所述程序410使所述处理器执行以下操作:
在所述用户请求的header中添加强制采样标识,所述强制采样标识用于表示是否需要强制采样;
在插件的配置文件中添加采样类型参数,所述采样类型参数用于表示采用默认采样方式或分组采样方式。
在一种可选的方式中,所述程序410使所述处理器执行以下操作:
定义Spring注解插件,编写Instrumentation类,在enhanceClass方法中对符合条件的类进行监控,并对@RestController、@Service注解声明的类进行监控;
根据监控的类中的方法定义对应的注解标注方法的链路级别;
使用插件apm-toolkit-trace支持多线程场景下将多个线程的链路关联;
从Interceptor类中获取RequestContext的采样级别参数的值,根据采样级别参数的值对注解的方法进行增强;
编写Interceptor类对监控的方法在方法执行前的切点进行Span的创建和配置,在方法执行后的切点进行Span的激活和停止,并在handleMethodException方法中对异常进行记录。
在一种可选的方式中,所述程序410使所述处理器执行以下操作:
获取header中的强制采样标识,如果所述强制采样标识为真,则默认强制采样;
如果配置文件中的采样类型参数表示为分组采样方式,则对不同的组件进行分组,不同分组的请求单独使用对应的一套ContextManager和SamplingService统计采样频率;
在调用neutron的http请求中将traceId塞入header请求中,将neutron接入SkyWalking,对监控的网络产品接口实现的类的需要监控的方法加上@trace注解,自定义方法名进行日志打印并加入所述请求链路标识。
本发明实施例通过获取经网关工程处理后的用户请求;对所述用户请求进行链路优先级设置和日志填充请求链路标识;设置链路和日志的多种场景下的采样规则;定义不同语言的插件,并应用所述插件进行插桩并采样符合所述采样规则的请求链路;对所述请求链路产生的日志信息进行上报、存储及分析,能够将不同语言的插件的请求链路标识与日志之间进行关联,方便的调用链的跟踪定位。
在此提供的算法或显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明实施例也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明实施例的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。上述实施例中的步骤,除有特殊说明外,不应理解为对执行顺序的限定。
Claims (10)
1.一种网络产品应用的分布式调用的链路跟踪方法,其特征在于,所述方法包括:
获取经网关工程处理后的用户请求;
对所述用户请求进行链路优先级设置和日志填充请求链路标识;
设置链路和日志的多种场景下的采样规则;
定义不同语言的插件,并应用所述插件进行插桩并采样符合所述采样规则的请求链路;
对所述请求链路产生的日志信息进行上报、存储及分析。
2.根据权利要求1所述的方法,其特征在于,所述获取经网关工程处理后的用户请求之前,包括:
用户请求经过网关工程在header中添加请求标识;
携带所述请求标识的所述用户请求经过网关工程转发。
3.根据权利要求1所述的方法,其特征在于,所述对所述用户请求进行链路优先级设置和日志填充请求链路标识,包括:
在插件的配置文件中添加采样级别参数;
自定义插件的输出日志的格式并嵌入请求链路标识。
4.根据权利要求3所述的方法,其特征在于,所述在插件的配置文件中添加采样级别参数,包括:
如果仅对监控的类中的create方法采样,则将插件的配置文件中的采样级别参数配置为create;
如果仅对监控的类中的create和delete方法采样,则将插件的配置文件中的采样级别参数配置为delete;
如果仅对监控的类中的create、delete和update方法采样,则将插件的配置文件中的采样级别参数配置为update;
如果对监控的类中所有的方法采样,则将插件的配置文件中的采样级别参数配置为query。
5.根据权利要求1所述的方法,其特征在于,所述设置链路和日志的多种场景下的采样规则,包括:
在所述用户请求的header中添加强制采样标识,所述强制采样标识用于表示是否需要强制采样;
在插件的配置文件中添加采样类型参数,所述采样类型参数用于表示采用默认采样方式或分组采样方式。
6.根据权利要求1所述的方法,其特征在于,所述定义不同语言的插件,包括:
定义Spring注解插件,编写Instrumentation类,在enhanceClass方法中对符合条件的类进行监控,并对@RestController、@Service注解声明的类进行监控;
根据监控的类中的方法定义对应的注解标注方法的链路级别;
使用插件apm-toolkit-trace支持多线程场景下将多个线程的链路关联;
从Interceptor类中获取RequestContext的采样级别参数的值,根据采样级别参数的值对注解的方法进行增强;
编写Interceptor类对监控的方法在方法执行前的切点进行Span的创建和配置,在方法执行后的切点进行Span的激活和停止,并在handleMethodException方法中对异常进行记录。
7.根据权利要求1所述的方法,其特征在于,所述应用所述插件进行插桩并采样符合所述采样规则的请求链路,包括:
获取header中的强制采样标识,如果所述强制采样标识为真,则默认强制采样;
如果配置文件中的采样类型参数表示为分组采样方式,则对不同的组件进行分组,不同分组的请求单独使用对应的一套ContextManager和SamplingService统计采样频率;
在调用neutron的http请求中将traceId塞入header请求中,将neutron接入SkyWalking,对监控的网络产品接口实现的类的需要监控的方法加上@trace注解,自定义方法名进行日志打印并加入所述请求链路标识。
8.一种网络产品应用的分布式调用的链路跟踪装置,其特征在于,所述装置包括:
请求获取单元,用于获取经网关工程处理后的用户请求;
配置单元,用于对所述用户请求进行链路优先级设置和日志填充请求链路标识;
规则设置单元,用于设置链路和日志的多种场景下的采样规则;
采样单元,用于定义不同语言的插件,并应用所述插件进行插桩并采样符合所述采样规则的请求链路;
链路跟踪单元,用于对所述请求链路产生的日志信息进行上报、存储及分析。
9.一种计算设备,其特征在于,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行根据权利要求1-7任一项所述网络产品应用的分布式调用的链路跟踪方法的步骤。
10.一种计算机存储介质,其特征在于,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行根据权利要求1-7任一项所述网络产品应用的分布式调用的链路跟踪方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211489488.XA CN116264555A (zh) | 2022-11-25 | 2022-11-25 | 网络产品应用的分布式调用的链路跟踪方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211489488.XA CN116264555A (zh) | 2022-11-25 | 2022-11-25 | 网络产品应用的分布式调用的链路跟踪方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116264555A true CN116264555A (zh) | 2023-06-16 |
Family
ID=86723721
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211489488.XA Pending CN116264555A (zh) | 2022-11-25 | 2022-11-25 | 网络产品应用的分布式调用的链路跟踪方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116264555A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117097803A (zh) * | 2023-10-19 | 2023-11-21 | 易方信息科技股份有限公司 | 基于http全链路追踪方法、系统、设备以及存储介质 |
CN118337662A (zh) * | 2024-06-13 | 2024-07-12 | 中铁四局集团有限公司 | 一种微服务调用链路监控分析的方法 |
-
2022
- 2022-11-25 CN CN202211489488.XA patent/CN116264555A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117097803A (zh) * | 2023-10-19 | 2023-11-21 | 易方信息科技股份有限公司 | 基于http全链路追踪方法、系统、设备以及存储介质 |
CN118337662A (zh) * | 2024-06-13 | 2024-07-12 | 中铁四局集团有限公司 | 一种微服务调用链路监控分析的方法 |
CN118337662B (zh) * | 2024-06-13 | 2024-08-06 | 中铁四局集团有限公司 | 一种微服务调用链路监控分析的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116264555A (zh) | 网络产品应用的分布式调用的链路跟踪方法及装置 | |
CN107870933B (zh) | 统计安卓应用页面浏览行为的方法、装置及系统 | |
US9697104B2 (en) | End-to end tracing and logging | |
Mariani et al. | Compatibility and regression testing of COTS-component-based software | |
US7954011B2 (en) | Enabling tracing operations in clusters of servers | |
US20050021736A1 (en) | Method and system for monitoring performance of distributed applications | |
US20080098359A1 (en) | Manipulation of trace sessions based on address parameters | |
CN104683180A (zh) | 一种性能监控方法、系统及应用服务器 | |
CN107632920A (zh) | 一种输变电设备监测装置深度监控方法 | |
CN111382023A (zh) | 代码故障定位方法、装置、设备及存储介质 | |
CN107807872A (zh) | 一种输变电系统运行状态监测方法 | |
US20180337817A1 (en) | Performance evaluation of applications that access external resources | |
CN111176941A (zh) | 一种数据处理的方法、装置和存储介质 | |
CN111008105A (zh) | 一种分布式系统调用关系可视化方法及装置 | |
CN114745295A (zh) | 数据采集方法、装置、设备和可读存储介质 | |
CN113076253A (zh) | 一种测试方法和测试装置 | |
CN111400127A (zh) | 业务日志的监控方法及装置、存储介质、计算机设备 | |
CN109783284A (zh) | 信息获取方法、系统及服务器、计算机可读存储介质 | |
CN102752770B (zh) | 一种对业务系统进行巡检的方法及装置 | |
CN116467189B (zh) | 接口调用完成性能压测及全链路数据监控的方法和系统 | |
CN115934199A (zh) | 服务性能监控工具、方法、设备及介质 | |
US7711812B2 (en) | Definition system and method for web services that monitor other web services | |
US20060149817A1 (en) | Using collaborative annotations to specify real-time process flows and system constraints | |
CN116431443A (zh) | 日志记录方法、装置、计算机设备及计算机可读存储介质 | |
CN114610689B (zh) | 一种分布式环境中请求日志的记录和分析方法 |
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 |