領先一步
VMware 提供培訓和認證,助您加速進步。
瞭解更多在可觀測性這個動態領域中,OpenTelemetry 是從現已棄用的 OpenCensus 和 OpenTracing 專案中湧現出的一套新工具。對於 Spring Framework、Spring Boot、Spring Data 和 Spring Cloud 的可觀測性而言,像 Micrometer 這樣成熟的解決方案(事實上的 Java 可觀測性標準)正被用於對其各種模組進行插樁。OpenTelemetry 專案由許多元件組成。我們認為最引人注目的是 OpenTelemetry Protocol (OTLP),它允許開發人員利用一致的遙測格式為任何支援 OTLP 的後端提供強大的功能。讓我們探討 Spring Boot 如何與這些工具無縫整合,以提供卓越的可觀測性。
Micrometer 的觀測 API 是 Spring Boot 可觀測性策略的基石。它提供了一個全面的可觀測性解決方案,與各種追蹤和監控系統無縫整合。以下是它成為 Spring Boot 應用首選的原因:
OpenTelemetry Protocol (OTLP) 促進了不同可觀測性工具之間的通訊。透過利用 OTLP,Spring Boot 應用程式可以以標準化格式匯出日誌、指標和追蹤資料,從而更容易與各種後端和可觀測性平臺整合。歸根結底,協議才是最重要的!
OTLP 為何重要
Spring 的核心始終是關於抽象和允許開發人員選擇。Micrometer 也是如此,它於 2016 年創立,並宣告“它就像 SLF4J,但用於指標”。Micrometer 允許您將程式碼從實際的指標後端抽象出來。對於 OTLP,Micrometer 從 2022 年開始透過專門的 OtlpMeterRegistry 支援它。
我們希望為追蹤引入相同的抽象,這就是為什麼我們將非常成熟的 Spring Cloud Sleuth 專案(成立於 2014 年)移植到 Micrometer Tracing,使其與 Spring 無關。感謝 Micrometer Tracing,您可以選擇要使用的追蹤器庫(追蹤器控制 span 的生命週期,是分散式追蹤的基礎)。Micrometer Tracing 支援兩個追蹤庫:OpenZipkin Brave (Brave) 和 OpenTelemetry。
我們相信成熟、經過生產測試的解決方案,這就是為什麼我們認為 Micrometer 和 Brave 是 Spring Boot 可觀測性工具包中必不可少的工具。它們提供強大的可觀測性功能,幫助開發人員跟蹤和分析分散式系統中的請求。
Micrometer 和 Brave 與 Micrometer Observation 無縫協作,它們都支援 OTLP,確保您的指標(已存在約 2 年)和追蹤資料(透過新發布的 zipkin-otel 專案)可以輕鬆匯出和利用。
Spring 團隊對 Spring Framework 非常熟悉,因為我們每天都在使用它。我們也認真對待可觀測性——這就是我們負責插樁的原因。擁有 Spring 專業知識並瞭解社群需求使我們能夠構建出色的、可定製的開發人員體驗。我們相信框架功能及其插樁方式是協同的:程式碼、文件和支援。
沒有人是完美的——包括我們。我們確實知道我們可以不斷改進當前的 OpenTelemetry 和 Spring 體驗。Spring 團隊目前正在努力使 OTLP 在指標/追蹤/日誌/語義約定方面成為一等公民。這意味著在需要時提供更好的自動配置、在庫中提供更好的支援以及為開發人員減少移動部件。
一圖勝千言——讓我們看看執行此處程式碼的結果。
<!-- Prerequisite for observability -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- For Metrics -->
<!-- For OTLP -->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-otlp</artifactId>
</dependency>
<!-- Brave version -->
<!-- For Tracing -->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-tracing-bridge-brave</artifactId>
</dependency>
<!-- For Latency Visualization -->
<!-- For OTLP -->
<dependency>
<groupId>io.zipkin.contrib.otel</groupId>
<artifactId>encoder-brave</artifactId>
<version>0.1.0</version>
</dependency>
<!-- For pushing logs out -->
<dependency>
<groupId>com.github.loki4j</groupId>
<artifactId>loki-logback-appender</artifactId>
<version>1.5.2</version>
<scope>runtime</scope>
</dependency>
透過 Micrometer Observation、Micrometer Core 和 Micrometer Tracing,使 Spring Boot 支援 Open Telemetry (OTLP) 所需的 Maven 設定。

客戶端命令列應用程式向伺服器進行 HTTP 呼叫的節點圖

透過 Spring Boot、Micrometer Observation、Micrometer Tracing 和 OpenZipkin Brave 橋接實現的日誌關聯

追蹤檢視——透過 OTel Brave Encoder(也透過 Micrometer Observation、Micrometer Tracing 和 OpenZipkin Brave 橋接)以 OTLP 格式接收的 Span 資料

透過 Spring Boot、Micrometer Observation、Micrometer Core、Micrometer OTLP push MeterRegistry 以及 Prometheus 側啟用的 OTLP 寫入接收器,獲取傳入請求的延遲
Spring Boot 的可觀測性方法
Spring Boot 透過使用 OTLP、用於指標的 Micrometer、用於追蹤的 Brave 以及作為通用抽象的 Micrometer Observation 來擁抱 OpenTelemetry 原則,這表明了對健壯可靠可觀測性的承諾。透過利用這些工具,開發人員可以實現全面的可觀測性。這種方法不僅簡化了可觀測性設定,還確保了生產環境的穩定和成熟框架。Spring Boot 是 OpenTelemetry 的忠實粉絲,這體現在它與這些強大的可觀測性工具的無縫整合。