Quarkus 可观测性路线图 2023
Quarkus 在可观测性领域取得了长足的进步。最初对追踪和指标的支持来自 MicroProfile 及其各自的实现 SmallRye OpenTracing 和 SmallRye Metrics。随着可观测性领域的不断发展,这些实现也超出了原始规范的范围,并且提供追踪和指标的 Quarkus 扩展得到了大量使用。
Quarkus 的目标始终是提供最佳技术并拥抱最佳实践来完成工作。这对于 SmallRye OpenTracing 和 SmallRye Metrics 都是如此,但我们现在认为在即将发布的 Quarkus 版本中有更好的选择。
OpenTracing 已归档
2022 年初,CNCF 宣布将 OpenTracing 项目归档,这意味着该项目不再维护。鉴于 OpenTracing 和 OpenCensus 合并以启动 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 OpenTracing 的 MicroProfile 用户来说,Quarkus 3.x 支持的 MicroProfile 6.0 提供了 MicroProfile Telemetry Tracing。这项新规范定义了允许 MicroProfile 应用程序参与通过 OpenTelemetry Tracing 启用分布式追踪的环境的行为。
指标和 Micrometer
在指标方面,很明显,虽然 MicroProfile Metrics 和 SmallRye 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 的新功能。一如既往,我们期待您的反馈和贡献。欢迎查看我们的 可观测性路线图 并帮助我们前进!