抢先一步
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 的忠实拥护者,它与这些强大的可观测性工具的轻松集成就体现了这一点。