Spring Cloud 应用篇 之 Spring Cloud Sleuth + Zipkin(二)集成 RabbitMQ

Spring Cloud Sleuth 在整合 Zipkin 时,不仅实现了以 HTTP 的方式收集跟踪信息,还实现了通过消息中间件来对跟踪信息进行异步收集的封装。在上一篇 Spring Cloud 应用篇 之 Spring Cloud Sleuth + Zipkin(一)链路监控 中,我们知道了 Spring Boot 2.0 之后 Zipkin 不再推荐我们来自定义 Server 端了,那么集成 RabbitMQ 时,如何才能用官方提供的 jar 包启动后从 RabbitMQ 中获取链路跟踪信息呢?

(一)Zipkin Server 的启动

根据官方给的方式,我们可以使用 java -jar zipkin.jar 的方式启动 Zipkin Server,那么在使用这个命令的时候,我们是可以设置一些参数的,这里我们可以通过设置环境变量让 Zipkin 从 RabbitMQ 中获取到跟踪信息,命令如下:

RABBIT_ADDRESSES=192.168.174.128 java -jar zipkin.jar

或者

java -jar zipkin.jar --zipkin.collector.rabbitmq.addresses=192.168.174.128
  
  

而连接到 RabbitMQ 的用户名和密码就用默认的 guest

启动后,访问 http://192.168.174.128:9411/


Zipkin Server 已经成功启动了,我们访问 RabbitMQ 的 Web 管理界面 http://192.168.174.128:15672


可以看到,RabbitMQ 的 Queues 里已经创建了 一个 zipkin 的队列,说明 ZipServer 集成 RabbitMQ 成功了。下面开始搭建 Zipkin Client 端

(二)Zipkin Client 搭建

在 Zipkin Client 端,我们上一篇创建了 spring-cloud-service1、spring-cloud-service2,现在我们只需要修改它们的依赖,添加 spring-cloud-stream-binder-rabbit 依赖即可,pom 文件如下,service2 的一样。


  
  
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation= "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <parent>
  6. <artifactId>spring-cloud-componets </artifactId>
  7. <groupId>com.geny </groupId>
  8. <version>1.0-SNAPSHOT </version>
  9. </parent>
  10. <modelVersion>4.0.0 </modelVersion>
  11. <artifactId>spring-cloud-service1 </artifactId>
  12. <dependencies>
  13. <dependency>
  14. <groupId>org.springframework.boot </groupId>
  15. <artifactId>spring-boot-starter-web </artifactId>
  16. </dependency>
  17. <dependency>
  18. <groupId>org.springframework.cloud </groupId>
  19. <artifactId>spring-cloud-starter-netflix-eureka-client </artifactId>
  20. </dependency>
  21. <dependency>
  22. <groupId>org.springframework.cloud </groupId>
  23. <artifactId>spring-cloud-starter-netflix-ribbon </artifactId>
  24. </dependency>
  25. <dependency>
  26. <groupId>org.springframework.cloud </groupId>
  27. <artifactId>spring-cloud-starter-zipkin </artifactId>
  28. </dependency>
  29. <dependency>
  30. <groupId>org.springframework.cloud </groupId>
  31. <artifactId>spring-cloud-stream-binder-rabbit </artifactId>
  32. </dependency>
  33. </dependencies>
  34. <build>
  35. <plugins>
  36. <plugin>
  37. <groupId>org.springframework.boot </groupId>
  38. <artifactId>spring-boot-maven-plugin </artifactId>
  39. </plugin>
  40. </plugins>
  41. </build>
  42. </project>

(三)验证

为了验证 Zipkin Server 和 Client 是通过 RabbitMQ 传递信息的,我们把 Zipkin Client 端的 zipkin.base-url 修改下,让它指向错误的地址,这里就改为 http://192.168.174.128:9410/,配置文件修改如下,service2 一样修改


  
  
  1. server:
  2. port: 8481
  3. spring:
  4. application:
  5. name: service1
  6. zipkin:
  7. #Zipkin Server 的 ip:port,这里换成自己的 Zipkin Server 的 IP 即可
  8. base-url: http: //192.168.174.128:9410/
  9. #这里把抽样百分比设置为1,即信息全部采集
  10. sleuth:
  11. sampler:
  12. probability: 1.0
  13. eureka:
  14. client:
  15. service-url:
  16. defaultZone: http: //localhost:8761/eureka/
  17. logging:
  18. level:
  19. root: debug

分别启动 eureka-server、spring-cloud-service1、spring-cloud-service2,访问 http://localhost:8481/service1,访问成功


刷新 Zipkin Server,http://192.168.174.128:9411/zipkin/,可以看到,Zipkin Server 已经获取到跟踪信息了


此时再来看看 RabbitMQ 的管理界面,可以看到 zipkin 这个 Queue 有消息处理,这说明我们的 Spring Cloud Sleuth + Zipkin 集成 RabbitMQ 已经成功。


源码下载:https://github.com/shmilyah/spring-cloud-componets
转载自:https://blog.csdn.net/hubo_88/article/details/80889973

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值