搶先一步
VMware 提供培訓和認證,以加速您的進度。
瞭解更多在動態的可觀察性領域中,OpenTelemetry 是一套從現已棄用的 OpenCensus 和 OpenTracing 專案中衍生出來的新工具。 談到 Spring Framework、Spring Boot、Spring Data 和 Spring Cloud 的可觀察性,諸如 Micrometer 等成熟的解決方案(實際上是 Java 可觀察性的標準)正被用於檢測它們的各種模組。 OpenTelemetry 專案由許多組件組成。 我們發現最引人注目的是 OpenTelemetry 協議 (OTLP),它允許開發人員利用一致的遙測格式的力量,適用於任何支援 OTLP 的後端。 讓我們來探索 Spring Boot 如何與這些工具無縫整合,以提供卓越的可觀察性。
Micrometer 的 Observation API 是 Spring Boot 可觀察性策略的基石。 它提供了一個全面的可觀察性解決方案,可與各種追蹤和監控系統無縫整合。 以下是它成為 Spring Boot 應用程式首選的原因:
OpenTelemetry 協議 (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>
需要 Maven 設定才能透過 Micrometer Observation、Micrometer Core 和 Micrometer Tracing 讓 Spring Boot 具有 Open Telemetry (OTLP)。
客戶端命令行應用程式向伺服器端發出 HTTP 呼叫的節點圖
透過 Spring Boot、Micrometer Observation、Micrometer Tracing 和 OpenZipkin Brave 橋接進行日誌關聯
追蹤檢視 - 透過 OTel Brave Encoder 以 OTLP 格式接收的 span 資料(也透過 Micrometer Observation、Micrometer Tracing 和 OpenZipkin Brave 橋接)
透過 Spring Boot 搭配 Micrometer Observation、Micrometer Core、Micrometer OTLP 推送 MeterRegistry 和在 Prometheus 端啟用的 OTLP 寫入接收器傳入請求的延遲
Spring Boot 的可觀察性方法
Spring Boot 透過使用 OTLP 採用 OpenTelemetry 原則,並利用 Micrometer 進行指標監控、Brave 進行追蹤,以及 Micrometer Observation 作為通用抽象層,展現了對健全且可靠的可觀測性的承諾。透過運用這些工具,開發人員可以實現全面的可觀測性。這種方法不僅簡化了可觀測性的設置,還確保了生產環境中框架的穩定性和成熟度。Spring Boot 非常支持 OpenTelemetry,這體現在它與這些強大的可觀測性工具的輕鬆整合上。