抢先一步
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 通过专用的 OtlpMeterRegistry
从 2022 年开始支持它。
我们希望为跟踪引入相同的抽象,因此我们将非常成熟的 Spring Cloud Sleuth 项目(成立于 2014 年)移植到 Micrometer Tracing,使其与 Spring 无关。借助 Micrometer Tracing,您可以选择要使用的跟踪库(跟踪器控制跨度的生命周期,是分布式跟踪的基础)。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 编码器(也通过 Micrometer Observation、Micrometer Tracing 和 OpenZipkin Brave 桥接)以 OTLP 格式接收的跨度数据
通过 Spring Boot、Micrometer Observation、Micrometer Core、Micrometer OTLP 推送 MeterRegistry 和在 Prometheus 端启用的 OTLP 写入接收器,查看传入请求的延迟
Spring Boot 的可观测性方法
Spring Boot 通过使用 OTLP、Micrometer 用于指标、Brave 用于跟踪以及 Micrometer Observation 作为通用抽象来拥抱 OpenTelemetry 原则,这体现了对强大且可靠的可观测性的承诺。通过利用这些工具,开发人员可以实现全面的可观测性。这种方法不仅简化了可观测性的设置,而且还确保了生产环境中稳定且成熟的框架。Spring Boot 是 OpenTelemetry 的忠实拥护者,这体现在它与这些强大的可观测性工具的轻松集成中。