Dubbo集成Sleuth+zipkin服务链路追踪
Dubbo集成Sleuth+zipkin服务链路追踪
版本介绍:
Dubbo:2.7.x
sleuth:3.0.4
zipkin:3.0.4
前提条件:
建好两个集成了dubbo的springboot服务:一个生产者服务,一个消费者服务。前端能够调用消费者接口,消费者接口调用生产者服务。
操作步骤:
一:引入sleuth和zipkin依赖
两个服务分别引入sleuth和zipkin的maven依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
<version>3.0.4</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-zipkin</artifactId>
<version>3.0.4</version>
</dependency>
二:引入拦截器依赖
如果是springcloud项目,并且已经引入OpenFeign,那么引入sleuth和zipkin依赖即可成功。
如果是dubbo项目,需要再额外引入brave-instrumentation-dubbo
依赖(这个依赖就是dubbo拦截器,在服务间通过dubbo上下文传递tranceId)
注意:
Dubbo 2.7.x引入的是brave-instrumentation-dubbo
Dubbo 2.6.x引入的是brave-instrumentation-dubbo-rpc
因为Dubbo 2.7.x和brave-instrumentation-dubbo
是apache的项目,而dubbo 2.6.x和brave-instrumentation-dubbo-rpc
是Alibaba的项目
<dependency>
<groupId>io.zipkin.brave</groupId>
<artifactId>brave-instrumentation-dubbo</artifactId>
<version>5.13.3</version>
</dependency>
三:在配置文件中指定拦截器,使上一步依赖生效
引入依赖之后要在配置文件(application.properties或dubbo.properties)中加入以下配置,这个配置是指定dubbo拦截器为上一步引入的拦截器。
dubbo.provider.filter=tracing
dubbo.consumer.filter=tracing
然后在多个服务的调用链路中打印日志就可以看到相同的tranceId
四:运行zipkin服务
从zipkin官网下载相关jar包,并且在本地运行即可
可通过运行成功之后输出的地址访问,这里是默认的地址 127.0.0.1:9411/zipkin
五:在项目配置中指定zipkin服务地址
spring:
zipkin:
base-url: http://127.0.0.1:9411
六:通过zipkin可视化界面查看调用链路和耗时
配置之后重启服务,再进行服务调用时,即可通过zipkin可视化界面查看调用链路
参考资料:
sleuth3.0.4官方文档:https://spring.io/projects/spring-cloud-sleuth
sleuth3.0.4对dubbo的支持:https://docs.spring.io/spring-cloud-sleuth/docs/current/reference/html/integrations.html#sleuth-rpc-dubbo-integration
zipkin官方文档:https://zipkin.io/pages/quickstart.html
spring cloud alibaba dubbo 链路跟踪报错问题解决 java.lang.NoSuchMethodError: 'void com.alibaba.dubbo.rpc.pr…:https://www.jianshu.com/p/5cf443081430
dubbo自定义拦截器:https://blog.csdn.net/Mkhaixian2014/article/details/106584195/