基于Gradle的Spring Cloud Sleuth应用链路数据未在Zipkin展示如何排查
问题根因
Spring Cloud 2020.0.x(Ilford)版本起,spring-cloud-starter-sleuth 默认仅包含链路追踪核心能力,不包含Zipkin数据上报的相关依赖包。你之前的Maven项目大概率是因为父POM或者其他依赖传递引入了spring-cloud-sleuth-zipkin相关组件,而Gradle的依赖传递规则更严格,没有被动引入该依赖,导致链路数据只在本地日志打印,不会上报到Zipkin服务端。
直接解决方案
在build.gradle中额外添加Zipkin上报依赖即可:
implementation 'org.springframework.cloud:spring-cloud-sleuth-zipkin'
如果是通过Stream消息队列上报链路数据,还需要额外引入Sleuth与Stream的适配依赖。你当前的Spring Boot 2.5.4 + Spring Cloud 2020.0.4版本组合属于兼容范围,不需要调整版本号。
辅助排查步骤(添加依赖后仍未生效时执行)
- 检查启动日志中是否有Zipkin上报相关报错:启动时搜索关键字
Zipkin、Brave、Reporter,确认是否存在连接失败、初始化失败的异常 - 抓包验证上报请求是否发出:Zipkin默认上报地址是
http://localhost:9411/api/v2/spans,可以用tcpdump或wireshark抓本地9411端口的请求,确认应用运行时是否有POST请求发到该地址 - 开启Sleuth debug日志打印上报细节:在application.yaml中添加如下配置
logging: level: org.springframework.cloud.sleuth: debug brave: debug - 检查依赖冲突:执行
./gradlew dependencies命令,查看所有sleuth相关依赖的版本是否统一,是否存在多版本共存的情况
内容的提问来源于stack exchange,提问作者Mrc0113
相关产品推荐
相关产品推荐

