Spring Cloud SleuthSpring Cloud Sleuth3.1.13

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

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(例如)以檢視服務名稱以及追蹤和 span ID。

Spring Initializr

快速啟動您的專案

領先一步

VMware 提供培訓和認證,助您加速進步。

瞭解更多

獲得支援

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位制檔案,只需一份簡單的訂閱。

瞭解更多

即將舉行的活動

檢視 Spring 社群所有即將舉行的活動。

檢視所有