Prometheus 2.43 has just been released, and it brings some exciting features and
enhancements. One of the significant improvements is the stringlabels
release,
which uses a new data structure for labels. This blog post will answer some
frequently asked questions about the 2.43 release and the stringlabels
optimizations.
What is the stringlabels
release?
The stringlabels
release is a Prometheus 2.43 version that uses a new data
structure for labels. It stores all the label/values in a single string,
resulting in a smaller heap size and some speedups in most cases. These
optimizations are not shipped in the default binaries and require compiling
Prometheus using the Go tag stringlabels
.
Why didn’t you go for a feature flag that we can toggle?
We considered using a feature flag but it would have a memory overhead that was
not worth it. Therefore, we decided to provide a separate release with these
optimizations for those who are interested in testing and measuring the gains on
their production environment.
When will these optimizations be generally available?
These optimizations will be available in the upcoming Prometheus 2.44 release
by default.
How do I get the 2.43 release?
The Prometheus 2.43 release is available on the official Prometheus GitHub
releases page, and users can download the binary files directly from there.
Additionally, Docker images are also available for those who prefer to use
containers.
The stringlabels optimization is not included in these default binaries. To use
this optimization, users will need to download the 2.43.0+stringlabels
release
binary or the Docker images tagged
v2.43.0-stringlabels specifically.
Why is the release v2.43.0+stringlabels
and the Docker tag v2.43.0-stringlabels
?
In semantic versioning, the plus sign (+) is used to denote build
metadata. Therefore, the Prometheus 2.43 release with the stringlabels
optimization is named 2.43.0+stringlabels
to signify that it includes the
experimental stringlabels
feature. However, Docker tags do not allow the use of
the plus sign in their names. Hence, the plus sign has been replaced with a dash
(-) to make the Docker tag v2.43.0-stringlabels
. This allows the Docker tag to
pass the semantic versioning checks of downstream projects such as the
Prometheus Operator.
What are the other noticeable features in the Prometheus 2.43 release?
Apart from the stringlabels
optimizations, the Prometheus 2.43 release
brings several new features and enhancements. Some of the significant additions
include:
- We added support for
scrape_config_files
to include scrape configs from
different files. This makes it easier to manage and organize the configuration. - The HTTP clients now includes two new config options:
no_proxy
to exclude
URLs from proxied requests andproxy_from_environment
to read proxies from
env variables. These features make it easier to manage the HTTP client’s
behavior in different environments.
You can learn more about features and bugfixes in the
full changelog.