关于 Prometheus 2.43 字符串标签优化的常见问题解答

Prometheus 2.43 刚刚发布,它带来了一些令人兴奋的新特性和增强功能。其中一项重要改进是 stringlabels 版本,它使用了一种新的数据结构来存储标签。这篇博客文章将回答一些关于 2.43 版本和 stringlabels 优化功能的常见问题。

什么是 stringlabels 版本?

stringlabels 版本是 Prometheus 2.43 的一个分支版本,它使用了一种新的数据结构来存储标签。它将所有标签/值存储在一个单独的字符串中,这通常会导致更小的堆内存占用和一些速度提升。这些优化功能并未包含在默认二进制文件中,需要使用 Go 标签 stringlabels 来编译 Prometheus。

为什么不使用一个我们可以切换的功能标志?

我们考虑过使用功能标志,但这会带来不值得的内存开销。因此,我们决定为那些有兴趣在其生产环境中测试和衡量收益的用户提供一个包含这些优化的独立版本。

这些优化何时会普遍可用?

这些优化将在即将发布的 Prometheus 2.44 版本中默认提供。

如何获取 2.43 版本?

Prometheus 2.43 版本可在 Prometheus 官方 GitHub 版本页面上找到,用户可以直接从那里下载二进制文件。此外,还提供了 Docker 镜像供喜欢使用容器的用户选择。

stringlabels 优化并未包含在这些默认二进制文件中。要使用此优化,用户需要专门下载 2.43.0+stringlabels 版本的二进制文件或标记为 v2.43.0-stringlabels 的 Docker 镜像

为什么发布版本是 v2.43.0+stringlabels 而 Docker 标签是 v2.43.0-stringlabels

在语义版本控制中,加号 (+) 用于表示构建元数据。因此,包含 stringlabels 优化的 Prometheus 2.43 版本被命名为 2.43.0+stringlabels,以表明它包含了实验性的 stringlabels 功能。然而,Docker 标签名称中不允许使用加号。因此,已将加号替换为破折号 (-) 以形成 Docker 标签 v2.43.0-stringlabels。这使得 Docker 标签能够通过下游项目(如 Prometheus Operator)的语义版本检查。

Prometheus 2.43 版本中还有哪些值得注意的特性?

除了 stringlabels 优化之外,Prometheus 2.43 版本还带来了几个新特性和增强功能。一些重要的补充包括

  • 我们添加了对 scrape_config_files 的支持,以包含来自不同文件的抓取配置。这使得管理和组织配置更加容易。
  • HTTP 客户端现在包含两个新的配置选项:no_proxy 用于从代理请求中排除 URL,以及 proxy_from_environment 用于从环境变量中读取代理。这些特性使得在不同环境中管理 HTTP 客户端的行为更加容易。

您可以在完整更新日志中了解有关特性和错误修复的更多信息。