close

Spring 云侦探

Spring Cloud Sleuth为分布式跟踪提供了Spring Boot自动配置。

特征

Sleuth配置了您入门所需的一切。这包括将跟踪数据(跨度)报告到的位置,要保留(跟踪)多少个跟踪,是否发送了远程字段(行李)以及要跟踪哪些库。

具体来说就是Spring Cloud Sleuth ...

  • 将跟踪和跨度ID添加到Slf4J MDC,以便您可以从给定的跟踪或跨度中的日志聚合器中提取所有日志。

  • 从Spring应用程序(Servlet过滤器,Rest模板,计划的操作,消息通道,伪装客户端)检测常见的入口和出口点。

  • 如果spring-cloud-sleuth-zipkin可用,则该应用程序将通过HTTP生成并报告与Zipkin兼容的跟踪。默认情况下,它将它们发送到本地主机(端口9411)上的Zipkin收集器服务。使用来配置服务的位置spring.zipkin.baseUrl

Spring Boot配置

将Sleuth添加到您的类路径中:

玛文

<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>

摇篮

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。

SpringInitializr

快速启动您的项目

使用 Spring Initializr引导您的应用程序 。

文献资料

每个Spring项目都有自己的项目。它详细说明了如何使用项目功能以及使用它们可以实现的功能。
3.0.2 当前 GA 参考文件
3.0.3快照 快照 参考文件
2.2.9.BUILD-SNAPSHOT 快照 参考文件
2.2.8.RELEASE GA 参考文件