Cloud Native Tips & Tricks

What to Expect from Prometheus 3: Big Changes and Exciting Features

Prometheus 3.0 is on the horizon, bringing a host of new features and improvements. From a redesigned UI to Remote Write 2.0, OpenTelemetry support, and more, here's what you can expect from Prometheus 3.0.

After 7 years and over 7,500 commits since the release of Prometheus 2.0, the Prometheus community is gearing up for the highly anticipated Prometheus 3.0. While there are countless new features and fixes, some major updates stand out that you’ll want to explore. We encourage the community to dive in, test these features, and report any issues to help make the final release as stable as possible. Here’s a preview of what’s new in Prometheus 3.0.

A Brand New UI

One of the most noticeable updates in Prometheus 3.0 is its completely redesigned UI, which is enabled by default. The new interface is cleaner, more modern, and introduces features like a PromLens-style tree view, making it easier to navigate and manage metrics. It also uses a more advanced tech stack, which simplifies future maintenance. For those who want to switch back temporarily, you can enable the old UI using the old-ui feature flag, but we highly encourage testing the new interface and reporting any bugs you find on GitHub.

Remote Write 2.0

With Remote Write 2.0, Prometheus improves how it handles data by supporting additional elements like metadata, exemplars, created timestamps, and native histograms. It also improves efficiency by using string interning, which reduces payload size and CPU usage. These upgrades ensure better performance when compressing and decompressing data. You can explore all the details of Remote Write 2.0 in the official documentation.

OpenTelemetry Support

Prometheus 3.0 positions itself as the go-to storage backend for OpenTelemetry metrics, bringing in significant new features to improve this integration. This update further solidifies Prometheus as the top choice for handling OpenTelemetry data efficiently and seamlessly.

UTF-8 Compatibility

In Prometheus 3.0, UTF-8 characters are now fully supported by default for metric and label names, as well as label values. This change ensures a broader range of characters can be used, making it easier to work with more complex data sets. While most language bindings will soon support UTF-8, the primary Go libraries already do. If you encounter compatibility issues, Prometheus will automatically escape non-supported characters with the underscore-replacement method.

OTLP Ingestion

Prometheus 3.0 is now configured to natively receive OTLP Metrics, which can be sent directly to the /api/v1/otlp/v1/metrics endpoint. This simplifies the process of handling OpenTelemetry Protocol (OTLP) metrics, providing more flexibility for metric ingestion.

Native Histograms

Native histograms are an exciting new metric type introduced in Prometheus 3.0. Offering a more efficient and cost-effective alternative to Classic Histograms, native histograms automatically set exponentially growing bucket boundaries. While still experimental, users can enable this feature by passing the --enable-feature=native-histograms flag. However, keep in mind that certain aspects like text format and operators are still being actively developed.

Other Breaking Changes

Prometheus 3.0 also introduces a number of breaking changes. The following feature flags have been removed and are now enabled by default, meaning any references to them in your configs should be removed:

  • promql-at-modifier
  • promql-negative-offset
  • remote-write-receiver
  • no-scrape-default-port
  • new-service-discovery-manager

Additionally, range selections are now left-open and right-closed to avoid rare cases where more data points than intended are included in operations. Lastly, Agent mode has been promoted to stable and now has its own config flag rather than a feature flag.

As Prometheus 3.0 rolls out, we invite the community to explore these new features, test them thoroughly, and share feedback to help make the final release even better.