在全链路追踪中加入对方法(Method)追踪
全链路追踪主要是在微服务场景下,实现了服务和服务之间的调用链关系。
这次尝试一下在单体应用中,怎么在全链路追踪技术中加入对方法(Method)追踪。
单体应用是用Springboot开放的一个简单CRUD应用,全链路追踪使用Jaeger,pom.xml中引入了opentracing-spring-jaeger-cloud-starter
依赖。
<!-- https://mvnrepository.com/artifact/io.opentracing.contrib/opentracing-spring-jaeger-cloud-starter -->
<dependency>
<groupId>io.opentracing.contrib</groupId>
<artifactId>opentracing-spring-jaeger-cloud-starter</artifactId>
<version>3.3.1</version>
</dependency>
在调研中发现,opentracing-spring-jaeger-cloud-starter
依赖的opentracing-spring-cloud-core
在0.6.0版本中加入了新的注解@Traced
,可以帮助我们实现在方法级别的追踪,但可惜的是,Maven仓库中opentracing-spring-cloud-core
的最新版是0.5.9
,而且Maven仓库中也没有opentracing-spring-cloud-aop
的发布版。
我们可以将opentracing-spring-cloud-core
和opentracing-spring-cloud-aop
的0.6.0版本的代码,加入我们的Springboot应用中,它会比pom.xml引入的Jar包优先被执行。
然后在我们想追踪的方法(Method)上面加上@Traced
注解。并且,调用时需要使用AopContext.currentProxy()
的实现进行调用。
最终实现了方法(Method)级别的追踪。(监控系统未使用Jaeger,而是OCI APM服务)
未完!(文章还在整理中)