Prometheus 3.0 Beta 发布
2024年9月11日作者 Prometheus 团队
Prometheus 团队荣幸地宣布 Prometheus 3.0-beta 版本现已推出!您可以在此 下载。按照 beta 版本的惯例,我们不建议用户在关键生产系统上安装 Prometheus 3.0-beta,但我们非常希望大家试用并发现其中的 Bug。
通常情况下,唯一的破坏性变更就是移除了已弃用的特性标志(feature flags)。Prometheus 团队致力于确保向后兼容性,避免破坏现有的安装环境,因此下述所有新功能都是在现有功能基础上的扩展。大多数用户应该可以直接开箱即用 Prometheus 3.0,无需进行任何配置更改。
新功能亮点
自 Prometheus 2.0 发布以来的 7 年间,共提交了超过 7500 次代码变更,新增的功能和修复实在太多,无法一一列举,但我们想重点介绍一些重大且具有破坏性的变化。我们需要社区中的每个人都来试用并报告您发现的任何问题。我们收到的反馈越多,最终 3.0 版本的稳定性就越高。
全新 UI
Prometheus 3.0 的一大亮点是其默认启用的全新 UI。

该 UI 经过完全重写,界面更加简洁,观感更现代,并增加了诸如 PromLens 风格的树状视图等新功能。此外,通过使用更现代的技术栈,未来的维护工作将变得更加轻松。
您可以在 Julius 在 PromLabs 博客上发表的详细文章 中详细了解新 UI。用户可以通过 old-ui 特性标志暂时启用旧版 UI。由于新 UI 尚未经过实战检验,很有可能仍存在 Bug。如果您发现任何 Bug,请在 GitHub 上提交报告 。
远程写入 2.0
Remote-Write 2.0 在之前的协议版本基础上进行了迭代,增加了对元数据、Exemplars、创建时间戳(created timestamp)和原生直方图(native histograms)等一系列新元素的原生支持。它还使用字符串驻留(string interning)技术来减小有效负载大小,并在压缩和解压缩时降低 CPU 使用率。更多详细信息可参见此处。
OpenTelemetry 支持
Prometheus 旨在成为存储 OpenTelemetry 指标的首选,3.0 版本包含了一些重大的新特性,使其作为 OpenTelemetry 指标数据的存储后端表现更佳。
UTF-8
默认情况下,Prometheus 现在允许在指标名称、标签名称以及标签值中使用所有有效的 UTF-8 字符(与 2.x 版本一致)。
用户需要确保其指标生产者配置为传递 UTF-8 名称;如果任一端不支持 UTF-8,指标名称将使用传统的下划线替换法进行转义。PromQL 查询可以使用新的引用语法来检索 UTF-8 指标,或者用户也可以手动指定 __name__ 标签名称。
并非所有语言绑定都已更新以支持 UTF-8,但主要的 Go 语言库已经完成了更新。
OTLP 摄入
Prometheus 可以被配置为 OTLP 指标协议的原生接收器,通过 /api/v1/otlp/v1/metrics 端点接收 OTLP 指标。
原生直方图
原生直方图(Native histograms)是一种 Prometheus 指标类型,它提供了一种比传统直方图效率更高、成本更低的替代方案。原生直方图不再需要基于数据集手动选择(且可能需要更新)桶边界,而是采用基于指数增长的预设桶边界。
原生直方图目前仍处于实验阶段,默认不开启,可通过传入 --enable-feature=native-histograms 启用。原生直方图的一些方面(如文本格式和访问器函数/运算符)仍在积极设计中。
其他破坏性变更
以下特性标志已被移除,改为默认启用。配置文件中对这些标志的引用应予以删除,Prometheus 从 3.0 版本开始将忽略这些标志:
promql-at-modifierpromql-negative-offsetremote-write-receiverno-scrape-default-portnew-service-discovery-manager
范围选择(Range selections)现在变为左开右闭区间 ,这将避免极少数情况下操作中包含多于预期数据点的问题。
Agent 模式现已稳定,并拥有其专属配置标志,不再使用特性标志。