Spring Cloud Sleuth提供了分布式追踪(distributed tracing)的一个解决方案。其基本思路是在服务调用的请求和响应中加入ID,标明上下游请求的关系。利用这些信息,可以方便地分析服务调用链路和服务间的依赖关系。
Only Sleuth
在Spring Tool Suite的文件菜单中,点击新建Spring Starter Project。
在请求处理方法内加上一行日志代码。
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @SpringBootApplication public class SpringcloudSleuthApplication { private static Logger log = LoggerFactory.getLogger(SpringcloudSleuthApplication.class); @RequestMapping("/") public String home() { log.info("Handling home"); return "Hello World"; } public static void main(String[] args) { SpringApplication.run(SpringcloudSleuthApplication.class, args); } }设定应用程序端口及名称。
server.port=10001 spring.application.name=sleuth-demo-without-zipkin启动程序并浏览页面后,可以看到日志信息里多了点东西。

[sleuth-demo-without-zipkin,6c00dba1679ee164,6c00dba1679ee164,false]
这一串数据里包含四个部分
- appname - 应用程序名称
- traceId - 追踪系统中的唯一标识
- spanId - 具体操作的唯一标识
- exportable - 是否日志要导出到Zipkin
Sleuth + Zipkin
Zipkin Server
要想把追踪数据发送到Zipkin上,首先需要建立一个Zipkin Server应用程序,在pom.xml里加上如下依赖:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>io.zipkin.java</groupId> <artifactId>zipkin-server</artifactId> <version>2.11.5</version> </dependency> <dependency> <groupId>io.zipkin.java</groupId> <artifactId>zipkin-autoconfigure-ui</artifactId> <version>
