我们对 OpenTelemetry 的承诺
2024年3月13日作者 Goutham Veeramachaneni (@Gouthamve) 和 Carrie Edwards (@carrieedwards)
OpenTelemetry 项目 是一个可观测性框架和工具包,旨在创建和管理遥测数据,如链路追踪(traces)、指标(metrics)和日志(logs)。由于其信号之间的一致性规范以及承诺减少供应商锁定,该项目正得到广泛采用,这也是我们非常期待的一点。
回顾 2023
在过去几年里,我们与 OpenTelemetry 社区合作,确保 OpenTelemetry 和 Prometheus 能够双向相互支持。这促使我们起草了在两个系统之间进行转换的官方规范,并实现了允许您将 Prometheus 指标采集到 OpenTelemetry Collector 以及反向操作的实现。
从那时起,我们花费了大量时间来了解 OpenTelemetry 用户在 Prometheus 中存储指标时面临的挑战,并在此基础上探索了如何解决这些问题。一些提议的变更需要仔细考虑,以避免破坏任何一方的运营承诺,例如同时支持推(push)和拉(pull)模式。在 2023 年的 PromCon 柏林大会上,我们尝试在其中一个演讲中总结了我们的想法。
在我们的柏林开发者峰会上,我们花了大部分时间深入讨论这些变更以及我们对 OpenTelemetry 的总体立场,并达成了广泛共识,即我们希望“成为 OpenTelemetry 指标的默认存储”!
我们已经组建了一个核心开发团队来领导这项计划,并将在 2024 年发布 Prometheus 3.0,其中对 OTel 的支持将是其更重要的特性之一。以下是 2024 年即将推出的一些内容预告。
未来一年
OTLP 数据采集正式发布(GA)
在 2023 年 9 月 6 日发布的 Prometheus v2.47.0 中,我们为 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 remote write 已经得到大多数领先的可观测性项目和供应商的支持。然而,OpenTelemetry 协议(OTLP)正变得越来越重要,我们希望在整个 Prometheus 生态系统中支持它。
我们希望为 Prometheus 服务器、SDK 和 exporter 添加对 OTLP 的支持。这意味着任何使用 Prometheus SDK 检测的服务也将能够*推送*OTLP,这将为 OpenTelemetry 用户解锁丰富的 Prometheus exporter 生态系统。
然而,我们打算保留并发展 OpenMetrics 暴露格式,作为一种为 Prometheus 和基于拉取模式的用例而优化/简化的格式。
Delta 时间性
OpenTelemetry 项目还支持 Delta 时间性,这在可观测性生态系统中有一些用例。出于各种原因,我们仍有许多 Prometheus 用户在运行 statsd 并使用 statsd_exporter。
我们希望在 Prometheus 服务器中支持 OpenTelemetry 的 Delta 时间性,并正在为此努力。
征集贡献!
如您所见,Prometheus 即将迎来许多激动人心的新变化!如果您觉得在两个最相关的开源可观测性项目交叉领域工作既具挑战性又有趣,我们诚邀您加入我们!
今年,我们还在进行治理变更,这将使成为维护者的过程比以往任何时候都更容易!如果您曾想对 Prometheus 产生影响,现在是开始的好时机。
我们一直以来的首要重点是尽可能公开透明地组织上述所有工作,以便您也能做出贡献。我们正在寻找贡献者来支持这项计划,并帮助实现这些功能。请查看 Prometheus 3.0 公共看板和Prometheus OTel 支持里程碑来跟踪功能开发的进展,并寻找贡献的方式。
结论
一些提议的变更规模较大且具有侵入性,或者涉及对 Prometheus 原始数据模型的根本性改变。然而,我们计划平稳地引入这些变更,以便 Prometheus 3.0 不会有重大的破坏性变更,大多数用户可以无影响地升级。
我们很高兴能开启 Prometheus 的新篇章,并期待您对建议的变更提出反馈。