Sleuth负责生成传递traceId/spanId,Zipkin用于接收存储展示追踪数据;Sleuth通过Reporter将结构化span数据上报至Zipkin,而非收集日志。

Sleuth 负责在微服务调用链路中生成和传递追踪 ID(如 traceId、spanId),而 Zipkin 是一个独立的分布式追踪系统,用于接收、存储、查询和展示这些链路数据。Sleuth 本身不收集或存储日志,它通过 Reporter(如 HttpSpanReporter 或 KafkaSpanReporter)把 span 数据“推”给 Zipkin。所以严格来说,不是“收集日志”,而是“上报结构化追踪数据”。
1. 添加依赖(Spring Boot 2.x / 3.x)
在每个微服务的 pom.xml 中引入 Sleuth + Zipkin 客户端支持:
- Spring Boot 2.4+(推荐用
spring-boot-starter-zipkin,已内置 Sleuth):
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-zipkin</artifactId>
</dependency>
该 starter 自动引入 spring-cloud-starter-sleuth 和适配 Zipkin 的 reporter(默认 HTTP 上报)。
- Spring Boot 3.x + Spring Cloud 2023.x:使用
spring-cloud-starter-zipkin已被移除,改用spring-cloud-starter-sleuth+ 显式配置 reporter(如zipkin-reporter-brave);更推荐直接用官方维护的brave-instrumentation-http+zipkin-reporter-urlconnection等。
2. 配置 Zipkin 地址与采样率
在 application.yml 中指定 Zipkin 服务地址和采样策略:
立即学习“Java免费学习笔记(深入)”;
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
zipkin:
base-url: http://localhost:9411 # Zipkin Server 地址
sleuth:
sampler:
probability: 1.0 # 1.0 表示 100% 上报(生产建议 0.1 或使用 RateLimitingSampler)
注意:spring.zipkin.base-url 是旧版配置项(Sleuth 3.x),新版(Sleuth 4.x / Spring Boot 3)使用:
zipkin:
tracing:
endpoint: http://localhost:9411/api/v2/spans
3. 启动 Zipkin Server(本地快速验证)
无需自己部署后端,直接运行官方 Zipkin jar:
- 下载最新
zipkin-server-*.jar(从 GitHub Releases 获取) - 启动命令:
java -jar zipkin-server-3.0.0-exec.jar - 访问
http://localhost:9411即可查看 UI,搜索 trace
也可用 Docker:docker run -d -p 9411:9411 openzipkin/zipkin
4. 验证链路是否上报成功
发起一次跨服务调用(如 A → B → C),然后:
- 查看各服务控制台日志:会自动打印类似
[service-a,87b3f9a2a1c5d6e7,87b3f9a2a1c5d6e7,true]的格式(traceId,spanId,parentSpanId,exportable) - 打开 Zipkin UI → 点击 “Find Traces” → 查看是否有对应 trace 列表 → 点击进入查看时序图、耗时、HTTP 状态、Tags(如
http.url、http.method) - 检查 Zipkin 日志(启动时控制台)是否收到 spans,例如:
Accepted 1 spans
如果没数据,优先检查网络连通性、服务是否启用 HTTPS(Zipkin 默认只接受 HTTP)、Sleuth 是否被其他 starter(如 Spring Cloud Gateway 的旧版本)干扰。

















