讓我們將 OpenTelemetry 與 Spring 一起使用

工程 | Marcin Grzejszczak | 2024 年 10 月 28 日 | ...

引言

在可觀測性的動態領域中,OpenTelemetry 是一套新的工具,它源自現在已棄用的 OpenCensus 和 OpenTracing 專案。對於 Spring Framework、Spring Boot、Spring Data 和 Spring Cloud 的可觀測性,正在使用 Micrometer(事實上 Java 的可觀測性標準)等成熟的解決方案來檢測其各種模組。OpenTelemetry 專案由許多元件組成。我們認為最引人注目的是 OpenTelemetry Protocol (OTLP),它允許開發人員利用一致的遙測格式的能力,用於支援 OTLP 的任何後端。讓我們探討一下 Spring Boot 如何與這些工具無縫整合,以提供卓越的可觀測性。

Micrometer 的 Observability API 的強大功能

Micrometer 的 Observability API 是 Spring Boot 可觀測性策略的基石。它提供了一個全面的可觀測性解決方案,可與各種跟蹤和監控系統無縫整合。以下是為什麼它是 Spring Boot 應用的首選:

  • 穩定性與成熟度:Micrometer 是一個久經考驗的解決方案,為可觀測性檢測提供了穩定而成熟的平臺。
  • 廣泛相容性:在眾多協議(AppOptics、Azure Monitor、Netflix Atlas、AWS CloudWatch、Datadog、Dynatrace、Elastic、Ganglia、Graphite、Humio、Influx/Telegraf、JMX、KairosDB、New Relic、Prometheus、SignalFx、Google Stackdriver、StatsD、Wavefront 用於指標;B3、W3C 用於跟蹤上下文傳播;Zipkin 用於 span 傳播)中,它還支援 OTLP 協議,確保與 OpenTelemetry 和其他相容的可觀測性工具的互操作性。
  • 多功能整合:Micrometer Observation 在 Spring 和非 Spring 專案中廣泛使用,提供統一的可觀測性 API,簡化了收集資料的檢測和釋出。
  • 簡化 API:一次檢測即可獲得多重收益 - 插入跟蹤、指標、日誌等。
  • 選擇的靈活性:隨著技術的變化,Micrometer 允許開發人員選擇他們偏好的可觀測性技術棧,而無需更改檢測。

利用 OpenTelemetry 協議

OpenTelemetry Protocol (OTLP) 促進了不同可觀測性工具之間的通訊。透過利用 OTLP,Spring Boot 應用程式可以以標準化格式匯出日誌、指標和跟蹤資料,從而更輕鬆地與各種後端和可觀測性平臺整合。最終,協議才是關鍵!

為什麼 OTLP 很重要

  • 標準化:OTLP 提供了一種匯出可觀測性資料的一致方式,確保相容性並降低整合複雜性。
  • 靈活性:使用 OTLP 允許開發人員選擇最適合其需求的工具,而不會被鎖定到特定的供應商或技術棧。
  • 面向未來:隨著可觀測性領域的發展,OTLP 使您的跟蹤資料能夠在不同系統之間保持可訪問和可用。

介紹 Micrometer

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 在指標/跟蹤/日誌/語義約定方面成為“頭等公民”。這意味著在需要的地方提供更好的自動配置,在庫中提供更好的支援,並減少開發人員需要關心的活動部件。

Spring Boot 與 OpenTelemetry 示例

一圖勝千言 - 讓我們看看這裡提供的程式碼執行結果。

<!-- 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 設定。

Nodes

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

Logs

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

Traces

跟蹤檢視 - 透過 OTel Brave Encoder(也透過 Micrometer Observation、Micrometer Tracing 和 OpenZipkin Brave bridge)接收到的 OTLP 格式的 span 資料

Metrics

透過 Spring Boot、Micrometer Observation、Micrometer Core、Micrometer OTLP push MeterRegistry 以及在 Prometheus 端啟用了 OTLP write receiver 接收到的請求延遲

結論

Spring Boot 的可觀測性方法

  • 庫專業知識:維護程式碼的人也是維護檢測的人
  • 整合解決方案:透過 Micrometer 和 Brave,所有必要的工具都整合在 Spring Boot 生態系統中,提供了統一且可靠的可觀測性框架。
  • 協議很重要:透過 OTLP,在協議層面實現了標準化,從而更容易與各種後端和可觀測性平臺整合。

Spring Boot 透過使用 OTLP、用於指標的 Micrometer、用於跟蹤的 Brave 以及作為通用抽象的 Micrometer Observation 來擁抱 OpenTelemetry 原則,這表明了其對構建強大可靠可觀測性的承諾。透過利用這些工具,開發人員可以實現全面的可觀測性。這種方法不僅簡化了可觀測性設定,而且為生產環境確保了一個穩定成熟的框架。Spring Boot 是 OpenTelemetry 的忠實擁護者,它與這些強大的可觀測性工具的輕鬆整合就體現了這一點。

連結

訂閱 Spring 新聞通訊

透過 Spring 新聞通訊保持聯絡

訂閱

搶先一步

VMware 提供培訓和認證,助您快速提升。

瞭解更多

獲取支援

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

瞭解更多

即將到來的活動

檢視 Spring 社群所有即將到來的活動。

檢視全部