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 摄取的实验性支持。我们正在不断改进这一点,并计划增加对陈旧性的支持,并使其成为一个稳定的功能。我们还将把对无序摄取的支持标记为稳定。这还包括 GA 我们对原生/指数直方图的支持。
支持 UTF-8 指标和标签名称
OpenTelemetry 语义约定推动将 “.”
作为命名空间字符。例如,http.server.request.duration
。但是,Prometheus 目前需要一个 更有限的字符集,这意味着当我们将指标摄取到 Prometheus 中时,我们会将其转换为 http_server_request_duration
。
这会导致不必要的冲突,我们正在努力通过为所有标签和指标名称添加 UTF-8 支持来消除此限制。该进度在此处 跟踪。
对资源属性的原生支持
OpenTelemetry 区分指标属性(用于标识指标本身的标签,例如 http.status_code
)和资源属性(用于标识指标来源的标签,例如 k8s.pod.name
),而 Prometheus 具有更扁平的标签架构。这会导致许多可用性问题,详细信息请见此处。
我们正在从多个方面(查询、UX、存储等)探索多种解决方案来解决这个问题,但我们的目标是使其很容易按资源属性进行过滤和分组。这是一项正在进行的工作,欢迎反馈和帮助!
生态系统中的 OTLP 导出
Prometheus 远程写入已受到 大多数领先的可观测性项目和供应商的支持。然而,OpenTelemetry 协议 (OTLP) 正在获得突出地位,我们希望在整个 Prometheus 生态系统中支持它。
我们希望将其添加到 Prometheus 服务器、SDK 和导出器中。这将意味着使用 Prometheus SDK 检测的任何服务也将能够推送 OTLP,并且它将为 OpenTelemetry 用户解锁丰富的 Prometheus 导出器生态系统。
但是,我们打算保留并开发 OpenMetrics 公开格式,作为 Prometheus 和基于拉取的用例的优化/简化格式。
增量时效性
OpenTelemetry 项目还支持 增量时效性,它对于可观测性生态系统有一些用例。我们有很多 Prometheus 用户仍然出于各种原因运行 statsd 并使用 statsd_exporter。
我们希望在 Prometheus 服务器中支持 OpenTelemetry 的增量时效性,并且正在为此努力。
呼吁贡献!
正如你所看到的,许多新的和令人兴奋的事情即将来到 Prometheus!如果在一个最相关的可观测性开源项目之间工作听起来对你来说具有挑战性和趣味性,我们很乐意邀请你加入!
今年,治理方面也将发生变化,这将使成为维护者的过程比以往任何时候都更容易!如果你曾经想对 Prometheus 产生影响,那么现在是开始的好时机。
我们首要的重点始终是在如何组织上述所有工作方面尽可能地开放和透明,以便你也可以做出贡献。我们正在寻找贡献者来支持这项计划并帮助实施这些功能。查看 Prometheus 3.0 公开版和 Prometheus OTel 支持里程碑,以跟踪功能开发的进展并了解你可以做出贡献的方式。
结论
一些提议的更改很大且具有侵入性,或者涉及到对 Prometheus 原始数据模型的根本背离。但是,我们计划平稳地引入这些更改,以便 Prometheus 3.0 不会出现重大中断性更改,并且大多数用户可以在不产生影响的情况下进行升级。
我们很高兴开始 Prometheus 的新篇章,并希望听到你对所建议更改的反馈。