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。