配置Sleuth链路追踪

配置了Sleuth可以很方便查看微服务的调用路线图,可快速定位问题。

SOP基于SpringCloud,因此只要整合Spring Cloud Sleuth即可。除此之外,还需要支持dubbo的链路的跟踪,Sleuth在2.0已经对dubbo做了支持,详见:brave-instrumentation-dubbo-rpc

接入Spring Cloud Sleuth步骤如下:

  • 下载zipkin服务器

以mac环境为例,执行下面命令,下载jar并启动zipkin服务

  1. curl -sSL https://zipkin.io/quickstart.sh | bash -s
  2. java -jar zipkin.jar

默认端口是9411,更多安装方式详见:quickstart

  • sop-gateway/pom.xml添加依赖
  1. <!--开启zipkin服务链路跟踪-->
  2. <dependency>
  3. <groupId>org.springframework.cloud</groupId>
  4. <artifactId>spring-cloud-starter-zipkin</artifactId>
  5. </dependency>

配置文件新增

  1. # zipkin服务跟踪
  2. spring.zipkin.base-url=http://127.0.0.1:9411/
  3. # 设置sleuth收集信息的比率,默认0.1,最大是1,数字越大越耗性能
  4. spring.sleuth.sampler.probability=1

重启sop-gateway

  • 打开sop-story-web/pom.xml

添加依赖:

  1. <!--开启zipkin服务链路跟踪-->
  2. <dependency>
  3. <groupId>org.springframework.cloud</groupId>
  4. <artifactId>spring-cloud-starter-zipkin</artifactId>
  5. </dependency>
  6. <!-- zipkin支持dubbo -->
  7. <dependency>
  8. <groupId>io.zipkin.brave</groupId>
  9. <artifactId>brave-instrumentation-dubbo-rpc</artifactId>
  10. <version>5.6.6</version>
  11. </dependency>

配置文件新增:

  1. # zipkin服务跟踪
  2. spring.zipkin.base-url=http://127.0.0.1:9411/
  3. # 设置sleuth收集信息的比率,默认0.1,最大是1,数字越大越耗性能
  4. spring.sleuth.sampler.probability=1
  5. # dubbo使用zipkin过滤器
  6. dubbo.provider.filter=tracing
  7. dubbo.consumer.filter=tracing

重启服务

  • 打开sop-book/sop-book-web/pom.xml

步骤同上

  • 运行DubboDemoTest.java单元测试

运行完毕看控制台,找到日志信息

  1. 2019-07-18 16:22:04.438 INFO [story-service,59dae98250b276bd,60828035658f175f,true] 90553 --- [:12345-thread-2] c.g.s.s.service.DefaultDemoService : dubbo provider, param: DemoParam(id=222)

日志内容多了[story-service,59dae98250b276bd,60828035658f175f,true]部分,这些是zipkin加进去的,说明如下:

  1. story-service:服务名称
  2. 59dae98250b276bdtraceId
  3. 60828035658f175fspanId
  4. true:是否上传到zipkin服务器

查看各个服务的控制台,可以发现traceId是一致的。

将traceId复制黏贴到右上角文本框进行查询,可看到服务调用链。

预览