Spring-Cloud-Sleuth

Spring Cloud Sleuth 获取当前 Trace ID

1、概览 本文将带你了解 Spring Cloud Sleuth,以及如何在 Spring Boot 中使用它进行链路追踪。 它可以在日志中添加额外有用的信息,并通过唯一链路 ID 帮助 Debug。这些操作在 Sleuth 术语中称为追踪(Trace)。它们可以由多个步骤组成,称为 Span。 例如,链路追踪可以是一个从应用中查询数据的 GET 请求。当应用处理该请求时,可以将其分割成更小的步骤:用户授权、执行数据库查询、转换响应。每个步骤都是属于同一链路追踪的唯一 Span。 在某些情况下,我们可能需要获取当前 Trace 或 Span 的 ID。例如,当发生事故时,我们可以将这些信息发送给开发团队。然后,他们就可以用它来调试和解决问题。 2、应用设置 创建一个 Spring Boot 项目,并添加 spring-cloud-starter-sleuth dependency 依赖: <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-sleuth</artifactId> <version>3.1.0</version> </dependency> 此 Starter 可与 Spring Boot 完美集成,并提供 Spring Cloud Sleuth 开箱即用的配置。 接下来,在 application.properties 文件中设置应用名称,这样就能在日志中看到该名称以及 Trace 和 Span ID: spring.application.name=Baeldung Sleuth Tutorial 现在,创建一个 REST Controller,提供一个 GET 端点: @RestController public class SleuthTraceIdController { @GetMapping("/traceid") public String getSleuthTraceId() { return "Hello from Sleuth"; } } 启动应用后访问这个 API 端点 http://localhost:8080/traceid,你可以看到响应:Hello from Sleuth。