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/