SpringCloudSleuth+Zipkin 整合及关键包汇总

背景

整合了一下 SpringCloudSleuth + Zipkin,本来是很简单的东西,但是最终导出依赖包时没注意,导致目标服务上始终没有纳入 Zipkin 的链路追踪中,本文记录这个过程及关键依赖包。

部署zipkin

官网下载最新的 zipkin 可执行包,重命名为 zipkin.jar ,然后编写一个启动脚本 start.sh ,内容如下:

bash 复制代码
nohup java -jar zipkin.jar & 

以默认配置直接启动该组件。

整合过程

SpringCloud 项目中整合 Sleuth + Zipkin ,只需要添加两个依赖:

xml 复制代码
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-sleuth</artifactId>
    <version>3.0.3</version>
</dependency>

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-sleuth-zipkin</artifactId>
    <version>3.0.3</version>
</dependency>

sleuth 直接用默认配置,然后为 zipkin 配置 base-url 属性:

bash 复制代码
spring:
  zipkin:
    sender:
      type: web
    base-url: http://IP:9411/

关键依赖包

目标服务是通过抽取公共 jar 的方式部署的,对本地应用打包后导出的第三方 jar 包进行分析,找出 sleuth + zipkin 依赖的文件列表:

bash 复制代码
admin@MyPc libdep % ll |awk '{print $NF}'|grep -E "sleuth|zipkin"
spring-cloud-sleuth-api-3.0.3.jar
spring-cloud-sleuth-autoconfigure-3.0.3.jar
spring-cloud-sleuth-brave-3.0.3.jar
spring-cloud-sleuth-instrumentation-3.0.3.jar
spring-cloud-sleuth-zipkin-3.0.3.jar
spring-cloud-starter-sleuth-3.0.3.jar
zipkin-2.23.0.jar
zipkin-reporter-2.16.1.jar
zipkin-reporter-brave-2.16.1.jar
zipkin-reporter-metrics-micrometer-2.16.1.jar
zipkin-sender-activemq-client-2.16.1.jar
zipkin-sender-amqp-client-2.16.1.jar
zipkin-sender-kafka-2.16.1.jar

因为 Sleuth 整合只引入了这两个依赖,以为就只需要上面这些 jar 包,将其他微服务的依赖路径加上上面文件所在的路径后,Zipkin 里面一直没有想过链路信息。纠结了好一会儿!为什么呢?

本地 IDEA 运行的服务有链路追踪,目标服务只引入第三方 jar ,没有。网络的用法确实很简单,什么都是默认配置,只加入依赖就可以了。猜想还是依赖包的问题,用 maven 打开依赖试图发现有一堆 brave- 开头的 jar

再用命令筛选出来:

bash 复制代码
admin@MyPc % ll |awk '{print $NF}'|grep -E "^brave-"      
brave-5.13.2.jar
brave-context-slf4j-5.13.2.jar
brave-instrumentation-http-5.13.2.jar
brave-instrumentation-httpasyncclient-5.13.2.jar
brave-instrumentation-httpclient-5.13.2.jar
brave-instrumentation-jms-5.13.2.jar
brave-instrumentation-kafka-clients-5.13.2.jar
brave-instrumentation-kafka-streams-5.13.2.jar
brave-instrumentation-messaging-5.13.2.jar
brave-instrumentation-mongodb-5.13.2.jar
brave-instrumentation-rpc-5.13.2.jar
brave-instrumentation-spring-rabbit-5.13.2.jar
brave-propagation-aws-0.21.3.jar

看后缀,筛掉没有用到的,最终确认了六个必须的:

bash 复制代码
brave-5.13.2.jar
brave-context-slf4j-5.13.2.jar
brave-instrumentation-http-5.13.2.jar
brave-instrumentation-httpasyncclient-5.13.2.jar
brave-instrumentation-httpclient-5.13.2.jar
brave-propagation-aws-0.21.3.jar

加上它们后目标服务都纳入了 Zipkin 管理了:

启示录

看似只加入两个依赖,其实还有很多其他依赖,没有细看导致很简单的一个整合问题,纠缠了好半天。

现用现学得玩了一下 Linux 命令,汇总如下

  1. grep -rl 目标字符串 目标目录l 参数只输出文件名称。
  2. 抽取 Sleuth 依赖包:ll |awk '{print $NF}'|grep -E "sleuth|zipkin"|xargs -I 参数别名 mv 参数别名 目标目录
  3. 批量编辑文件:sed -i s/old/new/g 文件名称,特殊字符 . \ 等都需要转义。
  4. if [ -z 变量 ] 括号两边必须有空格脚本才会正确。
  5. sleuth + zipkin 的核心包是 brave,我以为只是 sleuth 和 zipkin 的包呢。
相关推荐
想进大厂的小王2 小时前
项目架构介绍以及Spring cloud、redis、mq 等组件的基本认识
redis·分布式·后端·spring cloud·微服务·架构
customer082 小时前
【开源免费】基于SpringBoot+Vue.JS医院管理系统(JAVA毕业设计)
java·vue.js·spring boot·后端·spring cloud·开源·intellij-idea
杨荧3 小时前
【JAVA毕业设计】基于Vue和SpringBoot的服装商城系统学科竞赛管理系统
java·开发语言·vue.js·spring boot·spring cloud·java-ee·kafka
aloha_78916 小时前
从零记录搭建一个干净的mybatis环境
java·笔记·spring·spring cloud·maven·mybatis·springboot
茶馆大橘18 小时前
微服务系列五:避免雪崩问题的限流、隔离、熔断措施
java·jmeter·spring cloud·微服务·云原生·架构·sentinel
荆州克莱1 天前
[FE] React 初窥门径(四):React 组件的加载过程(render 阶段)
spring boot·spring·spring cloud·css3·技术
Genius Kim1 天前
SpringCloud Sentinel 服务治理详解
spring cloud·sentinel·php
为美好的生活献上中指1 天前
Java学习Day60:微服务总结!(有经处无火,无火处无经)
java·spring boot·spring cloud·微服务·sentinel·jetty