Zipkin无法显示微服务Sleuth日志问题求助
Zipkin链路追踪无数据排查思路
1. 优先排查依赖版本兼容性
你的Sleuth版本是3.1.5,而Zipkin依赖用了2.2.8.RELEASE,两者版本不匹配:
- Spring Cloud Sleuth 3.1.x属于**Spring Cloud 2021.0.x(Jubilee)**版本,对应的Zipkin依赖应该是3.1.x系列,2.2.8是旧版(对应Spring Cloud Hoxton),版本冲突会直接导致追踪数据无法正常上报。
- 修复方案:将
spring-cloud-starter-zipkin版本改为3.1.5,和Sleuth保持一致;或者引入Spring Cloud依赖管理(如spring-cloud-dependencies),通过BOM自动统一所有组件版本,避免手动指定版本的冲突。
2. 确认Zipkin服务端正常运行
- 访问
http://localhost:9411,确认Zipkin首页能正常加载;若启用了Actuator,可访问http://localhost:9411/actuator/health查看服务健康状态。 - 查看Zipkin服务端日志,检查是否有接收客户端上报数据的请求记录,如果没有,说明客户端未发起上报请求。
3. 验证客户端配置正确性
- 检查
spring.zipkin.baseUrl:你配置的http://localhost:9411/结尾带斜杠,虽不绝对影响,但可尝试改为http://localhost:9411。 - 确认
spring.sleuth.sampler.probability=1.0已生效:该配置是全采样,确保不会因采样率导致数据被过滤。 - 检查网络连通性:在Order Service所在机器上,执行
curl http://localhost:9411/api/v2/spans,确认能正常访问Zipkin的上报接口,排除防火墙、代理拦截问题。
4. 检查链路追踪是否在请求中生效
- 查看Order Service和Billing Service的日志,确认日志中是否带有
[order-service, <traceId>, <spanId>]格式的标记:- 如果没有,说明Sleuth未生效,需检查依赖是否正确引入,或是否有自定义配置覆盖了Sleuth的自动配置。
- 确保服务间调用使用了Spring Cloud兼容的客户端:
- 若用RestTemplate,需确保Bean带有
@LoadBalanced注解; - 若用Feign,需确保引入了
spring-cloud-starter-openfeign依赖,Feign默认会集成Sleuth链路传递。
- 若用RestTemplate,需确保Bean带有
5. 利用Actuator端点排查
- 修改Actuator配置,额外暴露
trace端点:
访问management.endpoints.web.exposure.include=health,tracehttp://localhost:9192/actuator/trace,若能看到追踪数据,说明客户端已生成数据但未上报到Zipkin;若没有数据,说明Sleuth未生成追踪数据。 - 访问
http://localhost:9192/actuator/health,检查是否包含sleuth和zipkin相关健康指标,确认组件状态正常。
6. 开启DEBUG日志定位问题
在application.properties中添加日志配置,查看详细上报过程:
logging.level.org.springframework.cloud.sleuth=DEBUG logging.level.org.springframework.cloud.sleuth.zipkin=DEBUG
启动服务后发起请求,查看日志是否有上报请求的记录,或连接失败、响应错误等异常信息,精准定位问题。
内容的提问来源于stack exchange,提问作者Khushboo
相关产品推荐
相关产品推荐

