領先一步
VMware 提供培訓和認證,助您加速進步。
瞭解更多Spring Cloud Sleuth 的最後一個次要版本是 3.1。您可以檢視 3.1.x 分支以獲取最新的提交。該專案的核心已移至 Micrometer Tracing 專案,並且插樁將移至 Micrometer 和所有相應的專案(不再所有插樁都將在單個儲存庫中完成)。
Spring Cloud Sleuth 為分散式追蹤提供了 Spring Boot 自動配置。
Sleuth 配置了您開始所需的一切。這包括追蹤資料(span)報告到哪裡、保留多少追蹤(取樣)、是否傳送遠端欄位(baggage)以及追蹤哪些庫。
具體來說,Spring Cloud Sleuth…
將追蹤 ID 和 span ID 新增到 Slf4J MDC,這樣您就可以在日誌聚合器中提取給定追蹤或 span 的所有日誌。
對 Spring 應用程式的常見入口和出口點進行插樁(servlet 過濾器、rest 模板、排程操作、訊息通道、feign 客戶端)。
如果 spring-cloud-sleuth-zipkin 可用,應用程式將透過 HTTP 生成並報告與 Zipkin 相容的追蹤。預設情況下,它將它們傳送到 localhost(埠 9411)上的 Zipkin 收集器服務。使用 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(例如)以檢視服務名稱以及追蹤和 span ID。