我们对 OpenTelemetry 的承诺

OpenTelemetry 项目是一个可观测性框架和工具包,旨在创建和管理遥测数据,例如追踪(traces)、指标(metrics)和日志(logs)。由于其信号之间一致的规范以及减少供应商锁定的承诺,它正获得广泛采用,这让我们感到非常兴奋。

回顾 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 摄取的实验性支持。我们正在不断改进这一点,并计划添加对陈旧(staleness)的支持,并使其成为一个稳定功能。我们还将把我们对乱序(out-of-order)摄取的支持标记为稳定。这还包括将我们对原生/指数直方图的支持标记为 GA。

支持 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 进行instrument的服务也将能够推送 OTLP,并且它将为 OpenTelemetry 用户解锁丰富的 Prometheus 导出器生态系统。

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

Delta 时序性

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

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

呼吁贡献!

正如您所看到的,许多新的和令人兴奋的事情即将来到 Prometheus!如果参与可观测性领域中最相关的两个开源项目之间的交叉工作对您来说听起来具有挑战性和趣味性,我们希望您能加入我们!

今年,治理方面也在进行变革,这将使成为维护者的过程比以往任何时候都更容易!如果您一直想对 Prometheus 产生影响,那么现在是开始的好时机。

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

结论

一些提议的更改是大型的、侵入性的,或者涉及对 Prometheus 原始数据模型的根本性偏离。但是,我们计划优雅地引入这些更改,以便 Prometheus 3.0 不会发生重大突破性更改,并且大多数用户可以无影响地升级。

我们很高兴开始 Prometheus 的新篇章,并欢迎您对建议的更改提供反馈。