Spring Cloud Sleuth+RabbitMQ+Zipkin实现微服务分布式链路跟踪
前言:现在网络上实现微服务分布式链路跟踪的资料,所使用的Spring Cloud绝大多数都是比较老的版本,最近笔者在学习基于Spring Cloud实现链路跟踪,查阅了大量资料,由于采用的Spring Cloud版本很新,所以踩了不少坑。为此,特写此篇,一来,便于自己今后的翻阅,二来,与大家共勉。
版本介绍:Spring Cloud Greenwish.SR1
服务模块:服务注册中心eureka-server、微服务trace-1、微服务trace-2、微服务trace-3、zipkin服务端(zipkin-server-2.12.8-exec.jar)
说明:这里trace-1服务中的/trace-1接口调用了trace-2的/trace-2接口,/trace-2接口又调用了trace-3服务的/trace-3接口,/trace-3接口直接返回字符串“trace 3”。trace-1和trace-2均实现了服务降级,若调用的目标服务不可用,直接返回错误提示字符串。
对于eureka-server的创建,这里不再赘述。
1. Zipkin Server的配置与启动
在Spring Cloud新版本中不再推荐自己创建zipkin服务端,官网提供了做好的Zipkin Server Jar包,从官网(https://zipkin.io/pages/quickstart.html)下载使用即可,我这里使用的是2.12.8版本。对于该jar的启动,可通过命令行方式,通过参数指定相关的配置。
我这里主要指定了RabbitMQ和MySQL相关配置:
java -jar zipkin-server-2.12.8-exec.jar --zipkin.collector.rabbitmq.addresses=localhost:5672 --zipkin.collector.rabbitmq.password=admin --zipkin.collector.rabbitmq.username=springcloud --zipkin.storage.type=mysql --zipkin.storage.mysql.username=root --zipkin.storage.mysql.password=admin
更多参数的查看,可先解压jar,在BOOT-INF/classes/zipkin-server-shared.yml查阅。
Zipkin Server默认9411端口。
2. 微服务模块配置(三个微服务模块均如此)
三个微服务模块运行端口依次为9101、9102、9103
2.1 主要依赖依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
说明:只需引入以上两个依赖即可,网上很多资料说要引入spring-cloud-sleuth-stream等,但该依赖在Spring Cloud新版本逐渐被废弃了。
2.2 application.yml主要配置
spring:
sleuth:
sampler:
probability: 1
zipkin:
sender:
type: rabbit
rabbitmq:
host: localhost
port: 5672
username: springcloud
password: admin
2.3 测试
访问http://localhost:9101/trace-1,返回trace 3字符串
查看RabbitMQ,
访问Zipkin Server 页面,查询记录,可成功得到访问跟踪信息,
(Demo程序下载:点击这里)