領先一步
VMware 提供培訓和認證服務,助您加速發展。
瞭解更多隨著 Spring Cloud 2021.0.0 (又名 Jubilee) 釋出列車的釋出,我們非常高興地宣佈 Spring Cloud Sleuth 3.1.0 的正式可用。在這篇部落格文章中,我們將介紹最值得關注的已釋出特性。
以下是最值得關注的特性列表,我們將在本文後續部分詳細介紹它們。
我們正在以跟蹤表示形式裝飾 DataSource
。我們將實際代理委託給 p6spy 或 datasource-proxy。要使用此特性,您需要在類路徑中包含它們。
檢視文件瞭解更多詳情。
這裡您可以找到展示此整合的示例。
這項更改的主要驅動力在於,直到 Sleuth 3.1 版本,您的 Tomcat 日誌中都沒有任何跟蹤資訊。透過這項更改,我們對 Tomcat 進行了檢測,從而在請求生命週期中更早地介入,可以用跟蹤資訊來檢測所有可能的日誌。
檢視文件瞭解更多詳情。
這裡您可以找到展示此整合的示例。
我們正在檢測 Spring Vault 用於與 Vault 通訊的 RestTemplate
或 WebClient
例項。
檢視文件瞭解更多詳情。
這裡您可以找到展示 RestTemplate
整合的示例。
這裡您可以找到展示 WebClient
整合的示例。
在跟蹤領域,沒有什麼比建立一個 span 卻忘記啟動或停止它更令人沮喪的了。我們已經受夠了這種情況……我們面臨的另一個挑戰是,我們甚至記不清建立了多少個 span,它們的名稱是什麼,以及在它們上面設定了多少標籤/事件。
我們決定改變在 Sleuth 中編寫程式碼的方式,以便引入某些自動化。我們只需檢測一次程式碼,但在測試時可以開啟額外的斷言,驗證 span 是否已啟動和停止等。此外,在文件構建時,我們會解析原始碼,並構建一個包含 span 及其詳細資訊的表格。
您可以檢視文件,瞭解此自動化的結果。
如果您的類路徑中執行著 Spring Cloud Deployer,我們將 AppDeployer
包裝在跟蹤表示中。我們以預設間隔輪詢應用程式的狀態。
檢視文件瞭解更多詳情。
這裡您可以找到展示此整合的示例。
如果您的類路徑中有 R2DBC Proxy,我們將檢測 ConnectionFactory
,以便它包含一個自定義的 ProxyExecutionListener
。
檢視文件瞭解更多詳情。
這裡您可以找到展示此整合的示例。
我們裝飾 Kafka 客戶端(KafkaProducer
和 KafkaConsumer
),為每個生產或消費的事件建立一個 span。我們還提供了 TracingKafkaProducerFactory
和 TracingKafkaConsumerFactory
,可用於 Reactor Kafka 客戶端(分別為 KafkaSender
和 KafkaReceiver
)。此外,我們還裝飾了上下文中可用的任何 Spring Kafka ProducerFactory
和 ConsumerFactory
。
檢視文件瞭解更多詳情。
這裡您可以找到展示 Kafka 生產者整合的示例。
這裡您可以找到展示 Kafka 消費者整合的示例。
這裡您可以找到展示 Kafka 響應式生產者整合的示例。
這裡您可以找到展示 Kafka 響應式消費者整合的示例。
如果您的類路徑中有 Spring TX,我們將檢測 PlatformTransactionManager
和 ReactiveTransactionManager
,以便在新事務建立時生成一個 span。
檢視文件瞭解更多詳情。
這裡您可以找到展示此整合的示例。
如果您的類路徑中執行著 Spring Batch,我們將 StepBuilderFactory
和 JobBuilderFactory
包裝起來以傳播跟蹤上下文。
檢視文件瞭解更多詳情。
這裡您可以找到展示此整合的示例。
如果您的類路徑中執行著 Spring RSocket,我們將入站和出站通訊包裝起來,透過元資料傳播跟蹤上下文。
檢視文件瞭解更多詳情。
這裡您可以找到展示 RSocket 伺服器整合的示例。
這裡您可以找到展示 RSocket 客戶端整合的示例。
如果您的類路徑中執行著 Spring Cloud Task,我們將檢測 TaskExecutionListener
、CommandLineRunner
和 ApplicationRunner
。
這裡您可以找到展示此整合的示例。
如果您的類路徑中執行著 Spring Cloud Config Server,我們將把 EnvironmentRepository
包裝在 span 中。
檢視文件瞭解更多詳情。
這裡您可以找到展示此整合的示例。
如果您的類路徑中有 Spring Cloud CircuitBreaker,我們將把傳入的命令 Supplier
和 fallback Function
包裝在其跟蹤表示中。
檢視文件瞭解更多詳情。
這裡您可以找到展示此整合的示例。
如果您的類路徑中有 Spring Data Cassandra,我們將檢測 Cassandra 的 CqlSession
和 ReactiveSession
介面,並提供我們自己的 RequestTracker
實現。
檢視文件瞭解更多詳情。
這裡您可以找到展示非響應式 Cassandra 整合的示例。
這裡您可以找到展示響應式 Cassandra 整合的示例。
如果您的類路徑中有 Spring Session,我們將檢測 Session
倉庫,它將所有操作包裝在 span 中。
檢視文件瞭解更多詳情。
這裡您可以找到展示此整合的示例。
如果您的類路徑中有 Spring Security,我們將建立一個 SecurityContextChangedListener
的實現,當上下文發生變化時,該實現會使用事件註釋當前 span。
這裡您可以找到展示此整合的示例。
Exemplars 是附加到指標的元資料(參見:Prometheus Exemplars),例如:traceId,以便您可以為您的指標獲取一個示例 traceId。
我們將 Sleuth 與 Prometheus 整合,以便如果有人使用 Prometheus Java Client,他們可以使用 Sleuth 獲取 Exemplars。此問題也與 Micrometer Exemplars Support 相關,參見。
這裡您可以閱讀更多關於此問題的資訊。
關於此特性,有幾點需要注意:
Spring Cloud Sleuth 可以檢測 Spring Cloud Function。由於 Spring Cloud Stream 使用 Spring Cloud Function,您將直接獲得訊息傳遞的檢測功能。
實現此功能的方法是提供一個以 Message
作為引數的 Function
、Consumer
或 Supplier
,例如 Function<Message<String>, Message<Integer>>
。
如果型別不是 Message
,則檢測不會發生。
對於響應式 Consumer<Flux<Message<?>>>
,請記住在呼叫 .subscribe()
之前手動關閉 span 並清除上下文。
這裡您可以找到展示生產者整合的示例。
這裡您可以找到展示消費者整合的示例。
我們添加了命令監聽器,將所有命令包裝在 span 中。它對響應式和非響應式場景都有效。
這裡您可以找到展示此整合的示例。
透過此 PR,Redis 檢測可以相容其他 Tracer,例如 OpenTelemetry。
Spring Cloud Sleuth 提供了一個用於儲存已完成 span 的 traces Actuator 端點。該端點可以透過 HTTP GET 方法查詢以簡單地檢索儲存的 span 列表,也可以透過 HTTP POST 方法查詢以檢索列表並清除它。
檢視文件瞭解更多詳情。
本次釋出引入了許多檢測功能。我們非常想看到您的跟蹤資訊!您可以前往我們的 Gitter 貼上您的跟蹤資訊截圖,以便我們分析如何改進。
如有任何問題,請隨時聯絡我們