Spring Cloud Sleuth 3.1.0 已釋出!

工程 | Marcin Grzejszczak | 2021年12月7日 | ...

隨著Spring Cloud 2021.0.0(又名Jubilee)釋出火車的釋出,我們非常高興地宣佈Spring Cloud Sleuth 3.1.0的正式可用性。在這篇博文中,我們將描述最顯著的已釋出功能。

以下是最顯著的功能列表,我們將在本文的後續部分進行詳細闡述。

JDBC

我們以跟蹤表示的形式修飾 DataSource。我們將實際代理委託給 p6spydatasource-proxy。要使用此功能,您需要在類路徑中包含它們。

JDBC example

檢視文件瞭解更多詳情。

此處可以找到一個展示此整合的示例。

Tomcat Valve

此更改背後的主要原因是,直到 Sleuth 3.1,您的 Tomcat 日誌中沒有任何跟蹤資訊。透過此更改,我們正在檢測 Tomcat,因此我們在請求生命週期的早期階段,並且可以用跟蹤資訊檢測所有可能的日誌。

MVC example

檢視文件瞭解更多詳情。

此處可以找到一個展示此整合的示例。

Spring Vault

我們正在檢測 Spring Vault 用於與 Vault 通訊的 RestTemplateWebClient 例項。

Vault example

檢視文件瞭解更多詳情。

此處可以找到一個展示此與 RestTemplate 整合的示例。

此處可以找到一個展示此與 WebClient 整合的示例。

自動標籤表生成用於文件

在跟蹤世界中,最令人沮喪的事情莫過於建立了一個 Span 卻未啟動它,或者未停止它。我們受夠了這種情況……我們面臨的另一個挑戰是我們甚至不記得我們建立了多少 Span,它們的名稱是什麼,以及它們設定了多少標籤/事件。

我們決定改變 Sleuth 中的編碼方式,以便引入某些自動化。我們對程式碼進行一次檢測,但在測試時可以開啟額外的斷言,以驗證 Span 是否已啟動和停止等。此外,在文件構建時,我們解析源並構建一個 Span 表以及一些詳細資訊。

您可以檢視文件以檢視該自動化的結果。

Spring Cloud Deployer

如果您的類路徑上執行著 Spring Cloud Deployer,我們將把 AppDeployer 包裝成跟蹤表示。我們以預設間隔輪詢應用程式的狀態。

Deployer example

檢視文件瞭解更多詳情。

此處可以找到一個展示此整合的示例。

R2DBC

如果您的類路徑上有 R2DBC Proxy,我們將檢測 ConnectionFactory,使其包含一個自定義的 ProxyExecutionListener

R2DBC example

檢視文件瞭解更多詳情。

此處可以找到一個展示此整合的示例。

Kafka 和 Reactor Kafka

我們修飾 Kafka 客戶端(KafkaProducerKafkaConsumer),為每個生成或消費的事件建立一個 Span。我們還提供 TracingKafkaProducerFactoryTracingKafkaConsumerFactory,用於 Reactor Kafka 客戶端(分別是 KafkaSenderKafkaReceiver)。此外,我們還修飾上下文中可用的任何 Spring Kafka ProducerFactoryConsumerFactory

Kafka example

檢視文件瞭解更多詳情。

此處可以找到一個展示 Kafka 生產者整合的示例。

此處可以找到一個展示 Kafka 消費者整合的示例。

此處可以找到一個展示 Kafka 響應式生產者整合的示例。

此處可以找到一個展示 Kafka 響應式消費者整合的示例。

Spring TX

如果您的類路徑上有 Spring Tx,我們將檢測 PlatformTransactionManagerReactiveTransactionManager,以便在每次建立新事務時建立一個 Span。

TX example

檢視文件瞭解更多詳情。

此處可以找到一個展示此整合的示例。

Spring Batch

如果您的類路徑上執行著 Spring Batch,我們將包裝 StepBuilderFactoryJobBuilderFactory 以傳播跟蹤上下文。

Batch example

檢視文件瞭解更多詳情。

此處可以找到一個展示此整合的示例。

RSocket

如果您的類路徑上執行著 Spring RSocket,我們將包裝入站和出站通訊,以透過元資料傳播跟蹤上下文。

RSocket example

檢視文件瞭解更多詳情。

此處可以找到一個展示 RSocket 伺服器整合的示例。

此處可以找到一個展示 RSocket 客戶端整合的示例。

Spring Cloud Task

如果您的類路徑上執行著 Spring Cloud Task,我們將檢測 TaskExecutionListenerCommandLineRunnerApplicationRunner

Task example

此處可以找到一個展示此整合的示例。

Spring Cloud Config

如果您的類路徑上執行著 Spring Cloud Config Server,我們將把 EnvironmentRepository 包裝在一個 Span 中。

Config Server example

檢視文件瞭解更多詳情。

此處可以找到一個展示此整合的示例。

Spring Cloud CircuitBreaker Reactive

如果您的類路徑上有 Spring Cloud CircuitBreaker,我們將把傳入的命令 Supplier 和回退 Function 包裝在其跟蹤表示中。

CircuitBreaker Reactive example

檢視文件瞭解更多詳情。

此處可以找到一個展示此整合的示例。

Cassandra

如果您的類路徑上有 Spring Data Cassandra,我們將檢測 Cassandra 的 CqlSessionReactiveSession 介面,並提供我們自己的 RequestTracker 實現。

Cassandra example

檢視文件瞭解更多詳情。

此處可以找到一個展示非響應式 Cassandra 整合的示例。

此處可以找到一個展示響應式 Cassandra 整合的示例。

Spring Session

如果您的類路徑上有 Spring Session,我們將檢測 Session 倉庫,它將所有操作包裝在一個 Span 中。

Session example

檢視文件瞭解更多詳情。

此處可以找到一個展示此整合的示例。

Spring Security

如果您的類路徑上有 Spring Security,我們將建立一個 SecurityContextChangedListener 的實現,當上下文發生更改時,它會使用一個事件來註釋當前 Span。

Security example

此處可以找到一個展示此整合的示例。

Prometheus Exemplars

Exemplar 是附加到指標的元資料(請參閱:Prometheus Exemplars),例如:traceId,以便您可以為您的指標獲取一個示例 traceId。

我們正在將 Sleuth 與 Prometheus 整合,這樣如果有人使用 Prometheus Java 客戶端,他們就可以使用 Sleuth 獲取 Exemplar。這個問題也與 Micrometer Exemplar 支援有關,請參閱

此處您可以閱讀更多關於此問題的資訊。

關於此功能,有幾點需要注意:

  • Micrometer 目前不支援 Exemplar,我們計劃在下一個版本中實現它(在此期間您可以使用 Prometheus 客戶端)
  • 這是 Prometheus 中的一個實驗性功能,您需要使用功能標誌顯式啟用它(請參閱:示例
  • 同樣,您需要在 Grafana 資料來源中配置它,並定義跟蹤後端(請參閱:Zipkin 示例)的 URL 模式。
  • 您還需要確保在儀表板的面板上啟用了 exemplar 標誌,您希望在該面板中使用 exemplar(請參閱:示例儀表板
  • 您的跟蹤後端(例如:Zipkin)無需任何配置,您只需要知道後端用於引用 traceId 的 URL 模式(請參閱上面的 URL 模式)

Exemplars example

Exemplars example

Spring Cloud Stream Reactive

Spring Cloud Sleuth 可以檢測 Spring Cloud Function。由於 Spring Cloud Stream 使用 Spring Cloud Function,您將開箱即用地獲得訊息傳遞檢測。

實現方式是提供一個以 Message 作為引數的 FunctionConsumerSupplier,例如 Function<Message<String>, Message<Integer>>

如果型別不是 Message,則不會進行檢測。

對於響應式 Consumer<Flux<Message<?>>>,請記住在呼叫 .subscribe() 之前手動關閉 Span 並清除上下文。

Stream reactive example

此處可以找到一個展示生產者整合的示例。

此處可以找到一個展示消費者整合的示例。

響應式 Mongo

我們添加了命令監聽器,將所有命令包裝在一個 Span 中。它適用於響應式和非響應式情況。

Reactive Mongo example

此處可以找到一個展示此整合的示例。

抽象的 Redis 檢測

透過此 PR,Redis 檢測可以用於其他 Tracer,例如 OpenTelemetry。

用於儲存跟蹤的自定義 Actuator

Spring Cloud Sleuth 附帶一個 Traces Actuator 端點,可以儲存已完成的 Span。該端點可以透過 HTTP Get 方法查詢以簡單檢索儲存的 Span 列表,或者透過 HTTP Post 方法查詢以檢索列表並清除它。

檢視文件瞭解更多詳情。

保持聯絡!

此版本引入了許多檢測功能。我們很樂意看到您的跟蹤!您可以訪問我們的 Gitter 並貼上您的跟蹤螢幕截圖,以便我們分析如何改進它。

如有任何疑問,請隨時聯絡我們

獲取 Spring 新聞通訊

透過 Spring 新聞通訊保持聯絡

訂閱

領先一步

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

瞭解更多

獲得支援

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

瞭解更多

即將舉行的活動

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

檢視所有