Releases: grafana/mimir
3.1.1
This release contains 10 PRs from 5 authors. Thank you!
Changelog
3.1.1
Grafana Mimir
- [CHANGE] Update Docker image bases from Debian 12 to Debian 13 (
gcr.io/distroless/static-debian13; race images usebase-nossl-debian13). #15629 - [BUGFIX] Upgrade Go to 1.26.4 to address CVE-2026-42507. #15659
- [BUGFIX] Update
golang.org/x/cryptoto v0.52.0,golang.org/x/netto v0.55.0, andgolang.org/x/systo v0.44.0 to address CVE-2026-39833, CVE-2026-39832, CVE-2026-46597, CVE-2026-42506, CVE-2026-39821, CVE-2026-42502, CVE-2026-25680, CVE-2026-25681, CVE-2026-27136, CVE-2026-39824. #15636 #15637 #15638 #15639
All changes in this release: mimir-3.1.0...mimir-3.1.1
3.1.0
This release contains 1440 PRs from 97 authors, including new contributors Alex Weaver, Ali Asghar, Anas, Andy Hay, Bernd Hois, Charbel Mitri, Chris, CR, Dominik Eisenberg, Elsa Adjei, Federico Torres, francoposa, Gerard van Engelen, HuanMeng, imishchuk-tsgs, Jara Suárez de Puga García, Juliette O, Justin Grothe, Kai Udo, Karl Skewes, Karol Chrapek, Kim Nylander, Kyle Fazzari, Lars Lehtonen, Laurent Dufresne, lif, Manas Srivastava, Manuel Alonso, Mariell Hoversholm, Nico Pazos, Nikolai Tikhonov, Olzhas, Ömer Çengel, Pavel Panfilov, psauvage, Q, Rodrigo Kellermann, Sander Ruitenbeek, Satyam Raj, sherinabr, Shouhei, Soya Kubodera, srpvpn, Thimo Soet. Thank you!
Grafana Mimir version 3.1.0 release notes
Grafana Labs is excited to announce version 3.1 of Grafana Mimir.
The highlights that follow include the top features, enhancements, and bug fixes in this release. For the complete list of changes, refer to the CHANGELOG.
Features and enhancements
Grafana Mimir version 3.1 includes the following key features and enhancements.
More Kafka options for Ingest storage
Ingest storage now supports additional ways to authenticate with Kafka through the new -ingest-storage.kafka.sasl-mechanism flag, including SCRAM, OAUTHBEARER, and AWS MSK IAM authentication. In addition, new -ingest-storage.kafka.tls* flags allow connecting to Kafka clusters over TLS, including mTLS. Refer to Kafka configuration for details.
You can also configure multiple Kafka seed brokers via comma-separated values in -ingest-storage.kafka.address and enable rack-aware consumption with -ingest-storage.kafka.client-rack.
Separate ingestion limits by tenant metadata
Distributors can now track limits separately based on tenant metadata. This allows operators to track limits separately for subsets of write requests belonging to the same tenant, for example to prioritize some sources of metrics over others.
Clients may pass tenant metadata in the X-Scope-OrgID header using the format tenantID:key1=value1:key2=value2, and operators may define per-metadata overrides in the runtime configuration.
Mimir Query Engine (MQE) improvements
MQE continues to receive significant optimizations in this release:
- Experimental extended range selector modifiers
smoothedandanchored, enabled with-query-frontend.enabled-promql-extended-range-selectors. - Optimization passes for common subexpression elimination, subset selector elimination, projection pushdown, and multi-aggregation without buffering.
- Improved per-query memory consumption limit enforcement in histogram and aggregation operations.
- Experimental support for splitting and caching intermediate results for functions over range vectors in instant queries.
- Experimental support for the
info()PromQL function.
Zone-aware memberlist routing
A new experimental zone-aware routing feature for memberlist reduces cross-AZ data transfer by routing gossip messages within the local availability zone when possible. Configure it with -memberlist.zone-aware-routing.* flags.
Additional improvements
Grafana Mimir 3.1 also includes:
- Store-gateways now verify CRC32 checksums for 1 out of every 128 chunks read from object storage and the chunks cache to detect corruption.
- GCS uploads are now optionally retryable, with configurable max retries per storage backend.
- Disk interaction has been removed when loading ruler rules. Rule evaluation failures now include a
reasonlabel (operatororuser) inprometheus_rule_evaluation_failures_totalfor better error classification. - Query blocking via
blocked_queriesis now stable and no longer experimental, with support for blocking queries exceeding a time range duration (time_range_longer_than) or with steps smaller than a threshold (step_size_shorter_than). - The per-tenant postings-for-matchers cache is now stable.
- Out-of-order ingestion support is now stable, configured via
-ingester.out-of-order-time-window. - The
-alertmanager.utf8-strict-mode-enabledflag is now stable. - The query-scheduler now drains the queue before exiting during shutdown.
- Distributors support zone-aware rate limiting via
-distributor.ring.instance-availability-zone, dividing the global ingestion rate by zones instead of total distributors. - Default ingest storage configuration now enables concurrency settings for improved throughput.
- Optional per-tenant max limits for label name and label value requests via
max_label_names_limitandmax_label_values_limit. - Runtime configuration can now be loaded from HTTP URLs in addition to local files via
-runtime-config.file. This may reduce configuration propagation times.
Important changes
Grafana Mimir 3.1 introduces several updates that change default behavior and configuration. Review these changes before upgrading:
- Experimental support for disabling ring heartbeats and heartbeat timeouts has been removed.
- The
-target=flushermode has been removed; use the/ingester/flushHTTP endpoint instead. - Uploaded TSDB blocks must now use v2 of the index file format. Store-gateways no longer generate index-headers from v1 index format blocks.
- Per-step stats are no longer supported when MQE is enabled. The
-query-frontend.cache-samples-processed-statsflag is deprecated and has no effect. - The
-querier.response-streaming-enabledflag has been removed; active series responses are now always streamed. cortex_ingest_storage_writer_buffered_produce_byteshas been renamed tocortex_ingest_storage_writer_buffered_produce_bytes_distribution.- Metric
cortex_ingester_owned_target_info_serieshas been removed. - The
cost_attribution_labelsconfiguration option has been removed; usecost_attribution_labels_structuredinstead. - The
minimum_step_sizefilter inblocked_querieshas been renamed tostep_size_shorter_than. Blocked queries configuration is now validated at load time. -querier.prefer-availability-zonehas been renamed to-querier.prefer-availability-zonesand now accepts a comma-separated list.- The per-query memory consumption limit now considers buffered messages and spans all time-split sub-queries when MQE is enabled.
- The following flags have been removed:
-distributor.metric-relabeling-enabled-compactor.no-blocks-file-cleanup-enabled-compactor.in-memory-tenant-meta-cache-size-blocks-storage.bucket-store.index-header.eager-loading-startup-enabled*.memcached.dns-ignore-startup-failures
Experimental features
Grafana Mimir 3.1 includes some features that are experimental. Use these features with caution and report any issues that you encounter:
- New usage-tracker component to enforce series limits before data is ingested.
- Zone-aware memberlist routing to reduce cross-AZ data transfer.
- Query planning in query-frontends with distributed execution across queriers.
- MQE extended range selector modifiers (
smoothed,anchored). - MQE
info()function. - MQE optimization passes: projection pushdown, multi-aggregation, subset selector elimination, common subexpression elimination for range vector expressions.
- Per-zone store-gateway shard size (
-store-gateway.tenant-shard-size-per-zone). - Running ingesters with no tokens in the ring when ingest storage is enabled (
-ingester.ring.num-tokens=0). - Per-sample HA deduplication (
-distributor.ha-tracker.per-sample-dedupe). - Per-tenant early head compaction for ingesters based on owned series count.
- Store-gateway excluded zones (
-store-gateway.sharding-ring.excluded-zones). - Controlling OTLP metric name suffix addition and translation strategy via request headers, gated by
-api.otlp-translation-headers-enabled. - Memberlist propagation delay tracker (
-memberlist.propagation-delay-tracker.enabled). - Reporting the number of samples read per query in MQE.
Bug fixes
For a detailed list of bug fixes, refer to the CHANGELOG.
Helm chart improvements
The Grafana Mimir Helm chart is released independently. Refer to the Grafana Mimir Helm chart documentation.
Changelog
3.1.0
Grafana Mimir
- [CHANGE] Query-frontend: Renamed
minimum_step_sizefilter inblocked_queriesconfiguration tostep_size_shorter_thanto follow the naming convention oftime_range_longer_than. Users withminimum_step_sizein their runtime configuration must rename the field. #15081 - [CHANGE] Query-frontend:
blocked_queriesconfiguration is now validated at load time; a configuration error is returned if a rule has an emptypattern, or hasregex: truewith apatternthat is not a valid regular expression. #14978 - [CHANGE] Ingester: Changed default value of
-include-tenant-id-in-profile-labelsfrom false to true. #13375 - [CHANGE] Hash ring: removed experimental support for disabling heartbeats (setting
-*.ring.heartbeat-period=0) and heartbeat timeouts (setting-*.ring.heartbeat-timeout=0). These configurations are now invalid. #13104 - [CHANGE] Distributor: removed experimental flag
-distributor.metric-relabeling-enabled. #13143 - [CHANGE] Compactor: removed experimental flag
-compactor.no-blocks-file-cleanup-enabled. Cleanup of remaining files when no blocks exist is now always enabled. #13108 - [CHANGE] Ruler: Add "unknown" alert rule state to alerts and rules on the
GET <prometheus-http-prefix>/api/v1/alertsend point. Alerts are in the "unknown" state when they haven't yet been evaluated since the ruler started. #13060 - [CHANGE] All: remove experimental feature that allowed disabling ring heartbeats and timeouts. #13142
- [CHA...
3.1.0-rc.1
This release contains 4 PRs from 3 authors. Thank you!
Changelog
3.1.0-rc.1
Grafana Mimir
- [BUGFIX] Update to Go v1.26.3 to address CVE-2026-42501, CVE-2026-42499, CVE-2026-39836, CVE-2026-39820, CVE-2026-33814, CVE-2026-33811, CVE-2026-39826, CVE-2026-39823, CVE-2026-39817, CVE-2026-39825, CVE-2026-39819. #15263
All changes in this release: mimir-3.1.0-rc.0...mimir-3.1.0-rc.1
2.17.11
This release contains 5 PRs from 3 authors, including new contributors Karl Skewes, Michel Hollands. Thank you!
Changelog
2.17.11
Grafana Mimir
- [BUGFIX] Update golang.org/x/net to v0.51.0 to address CVE-2026-27141. #15068
- [BUGFIX] Update golang.org/x/net to v0.53.0 to address CVE-2026-33814. #15281
- [BUGFIX] Update go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp to v1.43.0 to address CVE-2026-39882. #15329
- [BUGFIX] Update go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp to v0.19.0 to address CVE-2026-39882. #15329
- [BUGFIX] Update go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp to v1.43.0 to address CVE-2026-39882. #15329
- [BUGFIX] Update go.opentelemetry.io/otel/exporters/stdout/stdoutlog to v0.19.0 for compatibility with updated OTLP exporters. #15329
All changes in this release: mimir-2.17.10...mimir-2.17.11
3.1.0-rc.0
This release contains 1433 PRs from 97 authors, including new contributors Alex Weaver, Ali Asghar, Anas, Andy Hay, Bernd Hois, Charbel Mitri, Chris, CR, Dominik Eisenberg, Elsa Adjei, Federico Torres, francoposa, Gerard van Engelen, HuanMeng, imishchuk-tsgs, Jara Suárez de Puga García, Juliette O, Justin Grothe, Kai Udo, Karl Skewes, Karol Chrapek, Kim Nylander, Kyle Fazzari, Lars Lehtonen, Laurent Dufresne, lif, Manas Srivastava, Manuel Alonso, Mariell Hoversholm, Nico Pazos, Nikolai Tikhonov, Olzhas, Ömer Çengel, Pavel Panfilov, psauvage, Q, Rodrigo Kellermann, Sander Ruitenbeek, Satyam Raj, sherinabr, Shouhei, Soya Kubodera, srpvpn, Thimo Soet. Thank you!
Grafana Mimir version 3.1.0-rc.0 release notes
Grafana Labs is excited to announce version 3.1 of Grafana Mimir.
The highlights that follow include the top features, enhancements, and bug fixes in this release. For the complete list of changes, refer to the CHANGELOG.
Features and enhancements
Grafana Mimir version 3.1 includes the following key features and enhancements.
More Kafka options for Ingest storage
Ingest storage now supports additional ways to authenticate with Kafka through the new -ingest-storage.kafka.sasl-mechanism flag, including SCRAM, OAUTHBEARER, and AWS MSK IAM authentication. In addition, new -ingest-storage.kafka.tls* flags allow connecting to Kafka clusters over TLS, including mTLS.
You can also configure multiple Kafka seed brokers via comma-separated values in -ingest-storage.kafka.address and enable rack-aware consumption with -ingest-storage.kafka.client-rack.
Separate ingestion limits by tenant metadata
Distributors can now track limits separately based on tenant metadata. This allows operators to track limits separately for subsets of write requests belonging to the same tenant, for example to prioritize some sources of metrics over others.
Clients may pass tenant metadata in the X-Scope-OrgID header using the format tenantID:key1=value1:key2=value2, and operators may define per-metadata overrides in the runtime configuration.
Mimir Query Engine (MQE) improvements
MQE continues to receive significant optimizations in this release:
- Support for experimental PromQL extended range selector modifiers
smoothedandanchored, enabled with-query-frontend.enabled-promql-extended-range-selectors=true. - Optimization passes for common subexpression elimination, subset selector elimination, projection pushdown, and multi-aggregation without buffering.
- Improved per-query memory consumption limit enforcement in a variety of scenarios.
- Experimental support for splitting and caching intermediate results for functions over range vectors in instant queries.
- Support for the experimental
info()PromQL function.
Zone-aware memberlist routing
A new experimental zone-aware routing feature for memberlist reduces cross-AZ data transfer by routing gossip messages within the local availability zone when possible. Configure it with -memberlist.zone-aware-routing.* flags.
Additional improvements
Grafana Mimir 3.1 also includes:
- Store-gateways now verify CRC32 checksums for 1 out of every 128 chunks read from object storage and the chunks cache to detect corruption.
- GCS uploads are now optionally retryable, with configurable max retries per storage backend.
- Disk interaction has been removed when loading ruler rules. Rule evaluation failures now include a
reasonlabel (operatororuser) inprometheus_rule_evaluation_failures_totalfor better error classification. - Query blocking via
blocked_queriesis now stable and no longer experimental, with support for blocking queries exceeding a time range duration (time_range_longer_than) or with steps smaller than a threshold (step_size_shorter_than). - The per-tenant postings-for-matchers cache is now stable.
- Out-of-order ingestion support is now stable, configured via
-ingester.out-of-order-time-window. - The
-alertmanager.utf8-strict-mode-enabledflag is now stable. - The query-scheduler now drains the queue before exiting during shutdown.
- Distributors support zone-aware rate limiting via
-distributor.ring.instance-availability-zone, dividing the global ingestion rate by zones instead of total distributors. - Default ingest storage configuration now enables concurrency settings for improved throughput.
- Optional per-tenant max limits for label name and label value requests via
max_label_names_limitandmax_label_values_limit. - Runtime configuration can now be loaded from HTTP URLs in addition to local files via
-runtime-config.file. This may reduce configuration propagation times. - Blocked queries configuration is now validated at load time.
Important changes
Grafana Mimir 3.1 introduces several updates that change default behavior and configuration. Review these changes before upgrading:
- Experimental support for disabling ring heartbeats and heartbeat timeouts has been removed.
- The
-target=flushermode has been removed; use the/ingester/flushHTTP endpoint instead. - Uploaded TSDB blocks must now use v2 of the index file format. Store-gateways no longer generate index-headers from v1 index format blocks.
- Per-step stats are no longer supported when MQE is enabled. The
-query-frontend.cache-samples-processed-statsflag is deprecated and has no effect. - The
-querier.response-streaming-enabledflag has been removed; active series responses are now always streamed. cortex_ingest_storage_writer_buffered_produce_byteshas been renamed tocortex_ingest_storage_writer_buffered_produce_bytes_distribution.- Metric
cortex_ingester_owned_target_info_serieshas been removed. - The
cost_attribution_labelsconfiguration option has been removed; usecost_attribution_labels_structuredinstead. -querier.prefer-availability-zonehas been renamed to-querier.prefer-availability-zonesand now accepts a comma-separated list.- The per-query memory consumption limit now considers more sources of memory consumption. As a result, queries that previously succeeded may now fail due to exceeding the memory consumption limit.
- The following flags have been removed:
-distributor.metric-relabeling-enabled-compactor.no-blocks-file-cleanup-enabled-compactor.in-memory-tenant-meta-cache-size-blocks-storage.bucket-store.index-header.eager-loading-startup-enabled*.memcached.dns-ignore-startup-failures
Experimental features
Grafana Mimir 3.1 includes some features that are experimental. Use these features with caution and report any issues that you encounter:
- New usage-tracker component to enforce series limits before data is ingested.
- Zone-aware memberlist routing to reduce cross-AZ data transfer.
- Query planning in query-frontends with distributed execution across queriers.
- Support in MQE for experimental PromQL extended range selector modifiers (
smoothed,anchored). - Support in MQE for the experimental
info()PromQL function. - MQE optimization passes: multi-aggregation, subset selector elimination, common subexpression elimination for range vector expressions.
- Per-zone store-gateway shard size (
-store-gateway.tenant-shard-size-per-zone). - Running ingesters with no tokens in the ring when ingest storage is enabled (
-ingester.ring.num-tokens=0). - Per-sample HA deduplication (
-distributor.ha-tracker.per-sample-dedupe). - Per-tenant early head compaction for ingesters based on owned series count.
- Store-gateway excluded zones (
-store-gateway.sharding-ring.excluded-zones). - Controlling OTLP metric name suffix addition and translation strategy via request headers, gated by
-api.otlp-translation-headers-enabled. - Memberlist propagation delay tracker (
-memberlist.propagation-delay-tracker.enabled). - Reporting the number of samples read per query in MQE.
Bug fixes
For a detailed list of bug fixes, refer to the CHANGELOG.
Helm chart improvements
The Grafana Mimir Helm chart is released independently. Refer to the Grafana Mimir Helm chart documentation.
Changelog
3.1.0-rc.0
Grafana Mimir
- [CHANGE] Query-frontend: Renamed
minimum_step_sizefilter inblocked_queriesconfiguration tostep_size_shorter_thanto follow the naming convention oftime_range_longer_than. Users withminimum_step_sizein their runtime configuration must rename the field. #15081 - [CHANGE] Query-frontend:
blocked_queriesconfiguration is now validated at load time; a configuration error is returned if a rule has an emptypattern, or hasregex: truewith apatternthat is not a valid regular expression. #14978 - [CHANGE] Ingester: Changed default value of
-include-tenant-id-in-profile-labelsfrom false to true. #13375 - [CHANGE] Hash ring: removed experimental support for disabling heartbeats (setting
-*.ring.heartbeat-period=0) and heartbeat timeouts (setting-*.ring.heartbeat-timeout=0). These configurations are now invalid. #13104 - [CHANGE] Distributor: removed experimental flag
-distributor.metric-relabeling-enabled. #13143 - [CHANGE] Compactor: removed experimental flag
-compactor.no-blocks-file-cleanup-enabled. Cleanup of remaining files when no blocks exist is now always enabled. #13108 - [CHANGE] Ruler: Add "unknown" alert rule state to alerts and rules on the
GET <prometheus-http-prefix>/api/v1/alertsend point. Alerts are in the "unknown" state when they haven't yet been evaluated since the ruler started. #13060 - [CHANGE] All: remove experimental feature that allowed disabling ring heartbeats and timeouts. #13142
- [CHANGE] Store-gateway: Removed experimental `-blocks-storage.bucket-store.index...
3.0.6
2.17.10
What's Changed
- chore(deps): update module github.com/go-jose/go-jose/v4 to v4.1.4 [security] (release-2.17) by @renovate-sh-app[bot] in #14918
- [release 2.17] Backport of ruler: Fix rule expressions with leading newlines failing to parse by @zenador in #15032
- [2.17] Upgrade to Go 1.25.9 by @tcard in #15042
- [2.17] Update deps to address vulnerabilities by @tcard in #15050
Full Changelog: mimir-2.17.9...mimir-2.17.10
2.17.9
This release contains 2 PRs from 1 authors. Thank you!
Changelog
2.17.9
Grafana Mimir
- [BUGFIX] Update to Go v1.25.8 to address CVE-2026-27142, CVE-2026-27139, CVE-2026-25679, CVE-2026-27138, CVE-2026-27137. #14908
All changes in this release: mimir-2.17.8...mimir-2.17.9
2.17.8
This release contains 4 PRs from 3 authors. Thank you!
Changelog
2.17.8
Grafana Mimir
- [BUGFIX] Update module google.golang.org/grpc to v1.79.3 to address CVE-2026-33186 #14762
All changes in this release: mimir-2.17.7...mimir-2.17.8
3.0.5
This release contains 3 PRs from 3 authors. Thank you!
Changelog
3.0.5
Grafana Mimir
- [BUGFIX] Update to google.golang.org/grpc to address CVE-2026-33186. #14761
All changes in this release: mimir-3.0.4...mimir-3.0.5