Spring Cloud Sleuth3.1.9

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 配置服务的位置。

Spring Boot 配置

将 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

快速启动您的项目

抢先一步

VMware 提供培训和认证,以加速您的进度。

了解更多

获得支持

Tanzu Spring Runtime 在一个简单的订阅中为 OpenJDK™、Spring 和 Apache Tomcat® 提供支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区中即将举行的所有活动。

查看全部