Prometheus 3.0 Beta 版已发布
2024 年 9 月 11 日作者 Prometheus 团队
Prometheus 团队自豪地宣布 Prometheus 3.0-beta 版正式发布!您可以在此处下载。按照 beta 版发布的惯例,我们不建议用户在关键生产系统上安装 Prometheus 3.0-beta 版,但我们希望大家都能进行测试并找出其中的错误。
总的来说,唯一的破坏性变更是移除了已弃用的功能标志。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 尚未经过实战检验,很可能仍然存在错误。如果您发现任何问题,请在 GitHub 上报告。
远程写入 2.0
Remote-Write 2.0 在先前协议版本的基础上进行了迭代,增加了对元数据、exemplar、创建时间戳和原生直方图等一系列新元素的原生支持。它还使用字符串驻留技术来减少压缩和解压时的负载大小和 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 指标。
原生直方图
原生直方图是一种 Prometheus 指标类型,它提供了一种比传统直方图效率更高、成本更低的替代方案。原生直方图无需根据数据集选择(并可能需要更新)桶边界,而是基于指数增长预设了桶边界。
原生直方图仍处于实验阶段,尚未默认启用,可以通过传递 --enable-feature=native-histograms 来开启。原生直方图的某些方面,如文本格式和访问函数/操作符,仍在积极设计中。
其他破坏性变更
以下功能标志已被移除,并改为默认启用。应从配置中移除对这些标志的引用,从 Prometheus 3.0 版本开始,它们将被忽略:
promql-at-modifierpromql-negative-offsetremote-write-receiverno-scrape-default-portnew-service-discovery-manager
范围选择现在是左开右闭的,这将避免在极少数情况下操作中包含比预期更多的数据点。
代理模式(Agent mode)现已稳定,并使用独立的配置标志,而不是功能标志。