领先一步
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 的忠实粉丝,这体现在它与这些强大的可观测性工具的无缝集成。