SkyWalking 源码解析 —— @Trace 注解想要追踪的任何方法

摘要: 原创出处 http://www.iocoder.cn/SkyWalking/@trace-for-any-methods/ 「芋道源码」欢迎转载,保留摘要,谢谢!

本文主要基于 SkyWalking 3.2.6 正式版


1. 概述

本文主要分享 @Trace 注解想要追踪的任何方法

我们首先看看 @Trace 的使用例子,再看看 @Trace 的实现代码。涉及代码如下:

2. 使用例子

本节参考官方文档:Application-toolkit-trace-CN.md

1、使用 Maven 引入相应的工具包

<dependency>
    <groupId>org.skywalking</groupId>
    <artifactId>apm-toolkit-trace</artifactId>
    <version>${skywalking.version}</version>
</dependency>

2、在任何想要追踪的方法上添加 @Trace 注解,以 SpringMVC 为例子:

@Trace
@GetMapping("/log")
public String log() {
    ActiveSpan.tag("mp", "芋道源码");
    System.out.println("traceId:" + TraceContext.traceId());
    return "log";
}

3、执行后,我们看来看看 SkyWalking WEBUI 的展示。

3. 实现代码

友情提示:本小节需要胖友阅读过 《SkyWalking 源码分析 —— Agent 插件体系》

3.1 TraceAnnotationActivation

org.skywalking.apm.toolkit.activation.trace.TraceAnnotationActivation ,实现 ClassInstanceMethodsEnhancePluginDefine 抽象类,定义了方法切面,代码如下:


org.skywalking.apm.toolkit.activation.trace.TraceAnnotationMethodInterceptor ,实现 InstanceMethodsAroundInterceptor 接口,TraceAnnotationActivation 的拦截器。代码如下:

3.2 ActiveSpanTagActivation

org.skywalking.apm.toolkit.activation.trace.ActiveSpanTagActivation ,实现 ClassStaticMethodsEnhancePluginDefine 抽象类,定义了方法切面,代码如下:


org.skywalking.apm.toolkit.activation.trace.TraceAnnotationMethodInterceptor ,实现 StaticMethodsAroundInterceptor 接口,ActiveSpanTag 的拦截器。代码如下:

  • #beforeMethod(...) 方法,添加 Span 的标签键值对注意,可以不依赖 @Trace 注解。

3.3 TraceContextActivation

org.skywalking.apm.toolkit.activation.trace.TraceContextActivation ,实现 ClassStaticMethodsEnhancePluginDefine 抽象类,定义了方法切面,代码如下:


org.skywalking.apm.toolkit.activation.trace.TraceAnnotationMethodInterceptor ,实现 StaticMethodsAroundInterceptor 接口,TraceContextActivation 的拦截器。代码如下:

  • #afterMethod(...) 方法,调用 ContextManager#getGlobalTraceId() 方法,使用全局链路追踪编号,而不是原有结果。
赞(0) 打赏

如未加特殊说明,此网站文章均为原创,转载必须注明出处。Java 技术驿站 » SkyWalking 源码解析 —— @Trace 注解想要追踪的任何方法
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

关注【Java 技术驿站】公众号,每天早上 8:10 为你推送一篇技术文章

扫描二维码关注我!


关注【Java 技术驿站】公众号 回复 “VIP”,获取 VIP 地址永久关闭弹出窗口

免费获取资源

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏