我们对 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)的支持,使其成为稳定特性。我们还将把对“乱序摄入”(out-of-order ingestion)的支持标记为稳定版,这也意味着我们将正式发布(GA)对原生/指数级直方图(native / exponential histograms)的支持。
支持 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 和导出器中添加对它的支持。这意味着任何使用 Prometheus SDK 埋点的服务也将能够 推送 OTLP,并将为 OpenTelemetry 用户解锁丰富的 Prometheus 导出器生态系统。
不过,我们仍将保留并发展 OpenMetrics 暴露格式,将其作为 Prometheus 和基于拉取(pull)场景的优化/简化格式。
增量临时性 (Delta temporality)
OpenTelemetry 项目还支持 增量临时性 (Delta temporality) ,它在可观测性生态系统中具有一定的用例。出于各种原因,我们仍有许多 Prometheus 用户在使用 statsd 和 statsd_exporter。
我们希望在 Prometheus 服务器中支持 OpenTelemetry 的增量临时性,并正 为此努力 。
呼吁贡献!
如您所见,Prometheus 正在迎来许多令人兴奋的新事物!如果您认为在两个最相关的可观测性开源项目之间的交叉领域工作既具挑战又有趣,我们非常欢迎您的加入!
今年,治理结构也在进行调整,这将使成为维护者的流程变得比以往任何时候都更容易!如果您曾想过为 Prometheus 带来影响,现在正是开始的绝佳时机。
我们始终坚持尽可能开放和透明地组织上述所有工作,以便您也能做出贡献。我们正在寻找贡献者来支持这项倡议并帮助实现这些特性。请查看 Prometheus 3.0 公共看板 和 Prometheus OTel 支持里程碑 以追踪功能开发的进展,并了解您可以 如何做出贡献 。
结论
所提出的一些变更规模宏大且具有侵入性,或者涉及对 Prometheus 原始数据模型的根本性背离。然而,我们计划温和地引入这些变更,从而确保 Prometheus 3.0 不会有重大的破坏性变更,大多数用户可以在不受影响的情况下进行升级。
我们很兴奋能开启 Prometheus 的这一新篇章,并期待您对这些建议的变更提出反馈。