我们对 OpenTelemetry 的承诺

2024 年 3 月 13 日作者 Goutham Veeramachaneni (@Gouthamve) 和 Carrie Edwards (@carrieedwards)

OpenTelemetry 项目是一个可观测性框架和工具包,旨在创建和管理遥测数据,例如追踪、指标和日志。它因其信号之间的一致规范以及减少厂商锁定的承诺而获得广泛采用,这正是我们所期待的。

回顾 2023 年

在过去几年中,我们与 OpenTelemetry 社区合作,确保 OpenTelemetry 和 Prometheus 能够双向支持。这促成了官方规范的起草,用于在两个系统之间进行转换,以及允许您将 Prometheus 指标导入 OpenTelemetry Collector,反之亦然的实现。

此后,我们花费了大量时间了解 OpenTelemetry 用户在 Prometheus 中存储指标时面临的挑战,并在此基础上探索了 我们如何解决这些问题。一些提议的更改需要仔细考虑,以避免破坏任何一方的运行承诺,例如同时支持推式和拉式。在 2023 年柏林 PromCon 大会上,我们试图在 其中一个演讲中总结我们的想法。

在柏林举办的 开发者峰会上,我们花了大部分时间深入讨论了这些更改以及我们对 OpenTelemetry 的总体立场,广泛共识是,我们希望 “成为 OpenTelemetry 指标的默认存储”

我们已经组建了一个核心开发小组来领导这项计划,并将在 2024 年发布 Prometheus 3.0,其中包含对 OTel 的支持作为其最重要的功能之一。以下是 2024 年即将推出的一些亮点。

未来一年

OTLP 采集正式可用 (GA)

Prometheus v2.47.0(2023 年 9 月 6 日发布)中,我们添加了对 Prometheus 中 OTLP 采集的实验性支持。我们正在不断改进此功能,并计划添加对陈旧度(staleness)的支持,使其成为一个稳定的功能。我们还将把对乱序采集的支持标记为稳定。这也包括我们的原生/指数直方图支持的正式可用。

支持 UTF-8 指标和标签名称

OpenTelemetry 语义约定推崇使用 “.” 作为命名空间字符,例如 http.server.request.duration。然而,Prometheus 目前需要一个 更有限的字符集,这意味着在将其摄取到 Prometheus 时,我们会将指标转换为 http_server_request_duration

这导致了不必要的差异,我们正在努力通过为所有标签和指标名称添加 UTF-8 支持来消除此限制。进展情况可在此 跟踪

原生支持资源属性

OpenTelemetry 区分了指标属性(用于识别指标本身的标签,如 http.status_code)和资源属性(用于识别指标来源的标签,如 k8s.pod.name),而 Prometheus 具有更扁平的标签模式。这导致了许多可用性问题,详细信息可在此 查看

我们正在从多个方面(查询、用户体验、存储等)探索多种解决方案来解决这个问题,但我们的目标是使其能够非常轻松地按资源属性进行过滤和分组。这项工作正在进行中,欢迎提供反馈和帮助!

生态系统中的 OTLP 导出

Prometheus 远程写入已受到大多数领先的可观测性项目和供应商的支持。然而,OpenTelemetry 协议 (OTLP) 正在日益突出,我们希望在 Prometheus 生态系统范围内支持它。

我们希望将其支持添加到 Prometheus 服务器、SDK 和导出器中。这意味着任何使用 Prometheus SDK 检测的服务也将能够*推送* OTLP,并将为 OpenTelemetry 用户解锁丰富的 Prometheus 导出器生态系统。

然而,我们打算保留和开发 OpenMetrics 暴露格式,作为 Prometheus 和基于拉取的用例的优化/简化格式。

Delta 暂时性

OpenTelemetry 项目还支持 Delta 暂时性,它在可观测性生态系统中具有一些用例。许多 Prometheus 用户仍然出于各种原因运行 statsd 并使用 statsd_exporter。

我们希望在 Prometheus 服务器中支持 OpenTelemetry 的 Delta 暂时性,并正在为此努力

征集贡献!

如您所见,许多令人兴奋的新事物即将登陆 Prometheus!如果您觉得在可观测性领域两个最相关的开源项目之间工作既富有挑战又有趣,我们非常欢迎您的加入!

今年,治理方面也正在发生变化,这将使成为维护者的过程比以往任何时候都更容易!如果您曾想对 Prometheus 产生影响,现在是开始的最佳时机。

我们最初的重点始终是尽可能开放透明地组织上述所有工作,以便您也能做出贡献。我们正在寻找贡献者来支持这项计划并帮助实现这些功能。请查看 Prometheus 3.0 公开看板Prometheus OTel 支持里程碑,以跟踪功能开发的进展,并了解您可以如何贡献

结论

一些提议的更改规模庞大且具有侵入性,或者涉及与 Prometheus 原始数据模型的根本性偏离。然而,我们计划优雅地引入这些更改,以便 Prometheus 3.0 不会有重大的破坏性更改,并且大多数用户可以在不受影响的情况下升级。

我们很高兴为 Prometheus 开启这一新篇章,并期待您对建议的更改提供反馈。