Spring Boot Sleuth不打印Trace、Span日志且Zipkin未收到链路数据问题求助
可能的故障原因
1. 依赖版本冲突
- Spring Cloud 2020.0.4 内置的sleuth正式版本为3.0.4,你手动指定
spring-cloud-sleuth-zipkin的版本为3.0.0,存在跨版本兼容风险。建议移除依赖声明中的<version>标签,由Spring Cloud依赖管理自动匹配适配版本,避免版本不一致导致的功能异常。
<!-- 修改后的依赖配置 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-sleuth-zipkin</artifactId> </dependency>
2. 日志Pattern未配置sleuth占位符
- SL4J默认日志格式没有包含traceId、spanId的MDC变量占位符,需要在配置文件中手动指定日志输出格式,示例YAML配置如下:
logging: pattern: level: "%5p [${spring.application.name:},%X{traceId:-},%X{spanId:-}]"
- 如果使用log4j2作为SL4J的实现,还需要额外引入sleuth对log4j2的适配依赖,否则MDC参数无法正常注入日志。
3. Sleuth采样配置异常
- Sleuth默认采样率为0.1,即仅上报10%的链路数据,测试场景下请求量少很可能触发采样遗漏,也可能存在误配置关闭采样的情况,建议调整采样配置:
spring: sleuth: enabled: true # 确保sleuth功能开启 sampler: probability: 1.0 # 测试环境设置为100%采样,生产环境可按需调整
4. Zipkin上报配置错误
- 未配置Zipkin服务地址时,Sleuth默认上报到
http://localhost:9411,如果Zipkin部署在其他节点或端口修改过,会导致上报失败,需要补充配置:
spring: zipkin: enabled: true # 确保Zipkin上报功能开启 base-url: http://你的Zipkin服务部署地址:9411/
- 如果采用Kafka/RabbitMQ等消息队列上报链路数据,需要额外引入对应MQ的依赖包并配置MQ连接信息,无需配置base-url。
5. 核心依赖缺失
- 仅引入
spring-cloud-sleuth-zipkin不足以支撑全链路功能,需要补充引入Sleuth核心starter依赖:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-sleuth</artifactId> </dependency>
6. 链路传递逻辑异常
- 如果业务涉及跨服务调用,使用了未被Sleuth增强的HTTP客户端(如手动实例化的OkHttp、HttpClient),会导致traceId、spanId无法在调用链中传递,出现链路中断的情况。
内容的提问来源于stack exchange,提问作者Tokyo
相关产品推荐
相关产品推荐

