我们对 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

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

支持 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 Protocol (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 的新篇章,并期待您对所提议变更的反馈。