Quarkus 可观测性路线图 2023

Quarkus可观测性领域取得了长足的进步。最初对追踪和指标的支持来自 MicroProfile 及其各自的实现 SmallRye OpenTracingSmallRye Metrics。随着可观测性领域的不断发展,这些实现也超出了原始规范的范围,并且提供追踪和指标的 Quarkus 扩展得到了大量使用。

Quarkus 的目标始终是提供最佳技术并拥抱最佳实践来完成工作。这对于 SmallRye OpenTracingSmallRye Metrics 都是如此,但我们现在认为在即将发布的 Quarkus 版本中有更好的选择。

OpenTracing 已归档

2022 年初,CNCF 宣布将 OpenTracing 项目归档,这意味着该项目不再维护。鉴于 OpenTracingOpenCensus 合并以启动 OpenTelemetry 项目,这是一个预期的决定。

Quarkus 在 Quarkus 1.13.0.Final 中发布了 OpenTelemetry 扩展的第一版。最初的支持仅限于 HTTP 追踪(Vert.x 和 REST),但后来扩展到覆盖其他组件,包括 CDI、gRPC、Reactive Messaging 等,同时还采纳并调整了 OpenTelemetry Tracing 发布的所有新 API。我们的目标是继续这项工作,将 OpenTelemetry Tracing 扩展到剩余的组件,并弥合 Quarkus 与 Tracing 之间的集成差距。

未来,Quarkus 中的 SmallRye OpenTracing 和所有 OpenTracing 工作现已弃用!

虽然这些功能很可能还会继续工作,但我们鼓励所有用户迁移到 OpenTelemetry 来获得所有追踪功能。在接下来的几个版本中,我们可能会开始从某些扩展中移除 OpenTracing 支持,并继续这项工作,直到我们从 Quarkus 中完全移除 OpenTracing

对于依赖 MicroProfile OpenTracingMicroProfile 用户来说,Quarkus 3.x 支持的 MicroProfile 6.0 提供了 MicroProfile Telemetry Tracing。这项新规范定义了允许 MicroProfile 应用程序参与通过 OpenTelemetry Tracing 启用分布式追踪的环境的行为。

指标和 Micrometer

在指标方面,很明显,虽然 MicroProfile MetricsSmallRye Metrics 对于简单用例来说是可以接受的,但在更高级的用例中存在一些问题。用户还需要学习新的 API 和结构来从应用程序中提取指标信息,这也增加了用户的负担。我们已经转向采用 Micrometer 来解决其中一些问题,同时为监控 Quarkus 应用程序提供一种侵入性更小的方式。

我们知道 MicroProfile Metrics 的新版本正在开发中,并且将提供由 SmallRye Metrics 提供的实现。不幸的是,目前我们认为当前的 MicroProfile Metrics 路径并未解决我们的许多担忧。

我们打算坚持 Micrometer 的方法,并将其扩展到其他领域。随着 OpenTelemetry Metrics 达到稳定里程碑,以及 Micrometer 与 OpenTelemetry 的合作,我们预计将把追踪和指标统一到 Quarkus 的可观测性能力中。

当提出的规范充分解决问题空间时,Quarkus 会提供 MicroProfile 实现。如果需求没有得到充分解决,并且有行业倡议愿意合作,Quarkus 会在这些倡议内工作以解决 MicroProfile 的需求,而不是通过创建另一个规范来让 MicroProfile 与它们竞争。当前的 MicroProfile Metrics 提案要求消费者使用特定的 MicroProfile Metrics 注释和 API,而实现则负责提供支持。我们认为更好的方法是遵循 OpenTelemetry Metrics 和 Micrometer 倡议,它们已经非常成熟,并且涵盖了包括云提供商、应用程序和工具在内的全面的系统组件。

我们不打算支持新的 MicroProfile Metrics 规范,并且当前的 SmallRye Metrics Quarkus 扩展将被弃用。

SmallRye Metrics 组件将继续由 IBM 和 Tomitribe 进行积极开发。我们将继续关注情况,并可能根据用户反馈修改我们的决定。

未来

在追踪和指标方面仍有大量工作要做,但我们也希望开始关注日志记录,这是 OpenTelemetry 规范的一部分。我们 2023 年的主要重点将是清理现有扩展并提供缺失的功能,并引入一些来自 OpenTelemetry 的新功能。一如既往,我们期待您的反馈和贡献。欢迎查看我们的 可观测性路线图 并帮助我们前进!