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 客户端的行为更加容易。
您可以在完整更新日志中了解更多关于功能和错误修复的信息。