Spring Boot整合Sleuth+Zipkin无链路追踪数据问题排查求助
问题根因说明
你观察到日志中X-Span-Export字段为false,说明Sleuth没有将当前span标记为可导出状态,结合你使用的版本和依赖配置,问题出在依赖冗余、采样配置冲突、cloud-stream依赖的默认sender覆盖三个方面,按以下步骤调整即可:
修复步骤
- 清理冗余依赖
spring-cloud-starter-zipkin已经内置了sleuth核心依赖和zipkin适配依赖,你重复引入的3个同功能依赖会触发版本兼容问题,仅保留以下一个依赖即可:
implementation "org.springframework.cloud:spring-cloud-starter-zipkin:2.2.6.RELEASE"
修正采样配置
你所使用的Sleuth 2.2.x版本(对应Hoxton发布版)中,spring.sleuth.sampler.rate是速率采样器的专属参数,和概率采样器参数spring.sleuth.sampler.probability不能同时配置,同时配置会导致采样策略冲突,删除配置中的spring.sleuth.sampler.rate=100行,仅保留spring.sleuth.sampler.probability=1.0即可实现100%采样。解决cloud-stream的sender冲突
引入spring-cloud-stream依赖后,Sleuth默认会优先使用消息中间件作为Zipkin数据的发送通道,即使你配置了spring.zipkin.sender.type=web也会被覆盖,需要显式关闭stream的zipkin整合,在application.properties中新增以下配置:
spring.sleuth.zipkin.stream.enabled=false
也可以在依赖引入时直接排除stream相关的zipkin适配包:
implementation('org.springframework.cloud:spring-cloud-starter-zipkin:2.2.6.RELEASE') { exclude group: 'org.springframework.cloud', module: 'spring-cloud-sleuth-zipkin-stream' }
- 可选校验项
- 确认服务部署节点可以正常访问你配置的Zipkin地址
http://localhost:9411,如果是容器/多机器部署,需要将localhost替换为Zipkin服务所在节点的实际可访问IP - 检查是否有自定义
SamplerBean覆盖了默认采样规则,或者配置了spring.sleuth.web.skip-pattern跳过了所有请求的采样
- 确认服务部署节点可以正常访问你配置的Zipkin地址
调整完成后重启服务,X-Span-Export字段会变为true,Zipkin即可正常接收链路数据。
内容的提问来源于stack exchange,提问作者nani21984
相关产品推荐
相关产品推荐

