搶先一步
VMware 提供培訓和認證,助您快速提升。
瞭解更多在可觀測性的動態領域中,OpenTelemetry 是一套新的工具,它源自現在已棄用的 OpenCensus 和 OpenTracing 專案。對於 Spring Framework、Spring Boot、Spring Data 和 Spring Cloud 的可觀測性,正在使用 Micrometer(事實上 Java 的可觀測性標準)等成熟的解決方案來檢測其各種模組。OpenTelemetry 專案由許多元件組成。我們認為最引人注目的是 OpenTelemetry Protocol (OTLP),它允許開發人員利用一致的遙測格式的能力,用於支援 OTLP 的任何後端。讓我們探討一下 Spring Boot 如何與這些工具無縫整合,以提供卓越的可觀測性。
Micrometer 的 Observability 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,確保您的指標(已有大約兩年)和跟蹤資料(透過一個新發布的 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 與 OpenTelemetry (OTLP) 所需的 Maven 設定。
客戶端命令列應用程式向伺服器端發起 HTTP 呼叫時的節點圖
透過 Spring Boot、Micrometer Observation、Micrometer Tracing 和 OpenZipkin Brave bridge 實現日誌關聯
跟蹤檢視 - 透過 OTel Brave Encoder(也透過 Micrometer Observation、Micrometer Tracing 和 OpenZipkin Brave bridge)接收到的 OTLP 格式的 span 資料
透過 Spring Boot、Micrometer Observation、Micrometer Core、Micrometer OTLP push MeterRegistry 以及在 Prometheus 端啟用了 OTLP write receiver 接收到的請求延遲
Spring Boot 的可觀測性方法
Spring Boot 透過使用 OTLP、用於指標的 Micrometer、用於跟蹤的 Brave 以及作為通用抽象的 Micrometer Observation 來擁抱 OpenTelemetry 原則,這表明了其對構建強大可靠可觀測性的承諾。透過利用這些工具,開發人員可以實現全面的可觀測性。這種方法不僅簡化了可觀測性設定,而且為生產環境確保了一個穩定成熟的框架。Spring Boot 是 OpenTelemetry 的忠實擁護者,它與這些強大的可觀測性工具的輕鬆整合就體現了這一點。