抢先一步
VMware 提供培训和认证,以加速您的进度。
了解更多Spring Cloud Sleuth 的最新次要版本是 3.1。你可以查看 3.1.x 分支以获取最新提交。此项目的核心已移至 Micrometer Tracing 项目,而检测将移至 Micrometer 和所有相应项目(不再在单个存储库中执行所有检测)。
Spring Cloud Sleuth 为分布式跟踪提供 Spring Boot 自动配置。
Sleuth 配置了开始所需的全部内容。这包括跟踪数据(跨度)报告到的位置、保留多少个跟踪(采样)、是否发送远程字段(行李)以及跟踪哪些库。
具体来说,Spring Cloud Sleuth…
将跟踪和跨度 ID 添加到 Slf4J MDC,以便可以在日志聚合器中提取给定跟踪或跨度中的所有日志。
检测 Spring 应用程序的常见入口和出口点(servlet 过滤器、rest 模板、计划操作、消息通道、feign 客户端)。
如果 spring-cloud-sleuth-zipkin
可用,则应用程序将生成并报告 Zipkin 兼容的跟踪,并通过 HTTP 传输。默认情况下,它将它们发送到本地主机上的 Zipkin 收集器服务(端口 9411)。使用 spring.zipkin.baseUrl
配置服务的位置。
将 Sleuth 添加到你的类路径
Maven
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${release.train.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
</dependencies>
Gradle
buildscript {
dependencies {
classpath "io.spring.gradle:dependency-management-plugin:0.5.2.RELEASE"
}
}
apply plugin: "io.spring.dependency-management"
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${releaseTrainVersion}"
}
}
dependencies {
compile 'org.springframework.cloud:spring-cloud-starter-sleuth'
}
只要 Spring Cloud Sleuth 在类路径上,任何 Spring Boot 应用程序都将生成跟踪数据
@SpringBootApplication
@RestController
public class Application {
private static Logger log = LoggerFactory.getLogger(DemoController.class);
@RequestMapping("/")
public String home() {
log.info("Handling home");
return "Hello World";
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
运行此应用程序,然后点击主页。你将在日志中看到填充了 traceId 和 spanId。如果此应用程序调用另一个应用程序(例如使用 RestTemplate
),它将在标头中发送跟踪数据,如果接收者是另一个 Sleuth 应用程序,你将看到跟踪继续在那里。
你可以设置 logging.level.org.springframework.web.servlet.DispatcherServlet=DEBUG
,而不是在处理程序中显式记录请求
Sleuth 默认使用限速采样器。这意味着它每秒将采样多达 1000 笔交易。
设置 spring.application.name=bar
(例如)以查看服务名称以及跟踪和跨度 ID。
使用 Spring Initializr 引导您的应用程序。