Spring Cloud Sleuth 3.1.0 釋出了!

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

隨著 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 和 fallback 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

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

我們將 Sleuth 與 Prometheus 整合,以便如果有人使用 Prometheus Java Client,他們可以使用 Sleuth 獲取 Exemplars。此問題也與 Micrometer Exemplars Support 相關,參見

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

關於此特性,有幾點需要注意:

  • Micrometer 目前不支援 Exemplars,我們計劃在下一版本中支援(在此期間您可以使用 Prometheus client)
  • 這是 Prometheus 中的一個實驗性特性,您需要使用一個特性標誌明確啟用它(參見:示例
  • 同樣,您需要在 Grafana 資料來源中配置它,併為您的跟蹤後端定義 URL 模式(參見:使用 Zipkin 的示例
  • 您還需要確保在儀表板面板上啟用 Exemplar 標誌,您想在該面板上使用 Exemplars(參見:儀表板示例
  • 您的跟蹤後端(例如: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 提供了一個用於儲存已完成 span 的 traces Actuator 端點。該端點可以透過 HTTP GET 方法查詢以簡單地檢索儲存的 span 列表,也可以透過 HTTP POST 方法查詢以檢索列表並清除它。

檢視文件瞭解更多詳情。

保持聯絡!

本次釋出引入了許多檢測功能。我們非常想看到您的跟蹤資訊!您可以前往我們的 Gitter 貼上您的跟蹤資訊截圖,以便我們分析如何改進。

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

獲取 Spring 新聞通訊

訂閱 Spring 新聞通訊以保持聯絡

訂閱

領先一步

VMware 提供培訓和認證服務,助您加速發展。

瞭解更多

獲取支援

Tanzu Spring 透過一項簡單的訂閱,為 OpenJDK™、Spring 和 Apache Tomcat® 提供支援和二進位制檔案。

瞭解更多

近期活動

檢視 Spring 社群的所有近期活動。

檢視全部