This release contains 172 contributions from 24 contributors. We also have 13 new contributors. Thank you all for the contribution!
Some notable changes release are:
- Out of order samples ingestion
- MultiKey KV ring for DynamoDB
- Snappy-block gRPC compression
- Redis as index cache and caching bucket backend
- Arm images support
- Multiples performance improvements and bug fixes
Cortex
- [CHANGE] Storage: Make Max exemplars config per tenant instead of global configuration. #5080 #5122
- [CHANGE] Alertmanager: Local file disclosure vulnerability in OpsGenie configuration has been fixed. #5045
- [CHANGE] Rename oltp_endpoint to otlp_endpoint to match opentelemetry spec and lib name. #5068
- [CHANGE] Distributor/Ingester: Log warn level on push requests when they have status code 4xx. Do not log if status is 429. #5103
- [CHANGE] Tracing: Use the default OTEL trace sampler when
-tracing.otel.exporter-type
is set toawsxray
. #5141 - [CHANGE] Ingester partial error log line to debug level. #5192
- [CHANGE] Change HTTP status code from 503/422 to 499 if a request is canceled. #5220
- [FEATURE] Querier/Query Frontend: support Prometheus /api/v1/status/buildinfo API. #4978
- [FEATURE] Ingester: Add active series to all_user_stats page. #4972
- [FEATURE] Ingester: Added
-blocks-storage.tsdb.head-chunks-write-queue-size
allowing to configure the size of the in-memory queue used before flushing chunks to the disk . #5000 - [FEATURE] Query Frontend: Log query params in query frontend even if error happens. #5005
- [FEATURE] Ingester: Enable snapshotting of In-memory TSDB on disk during shutdown via
-blocks-storage.tsdb.memory-snapshot-on-shutdown
. #5011 - [FEATURE] Query Frontend/Scheduler: Add a new counter metric
cortex_request_queue_requests_total
for total requests going to queue. #5030 - [FEATURE] Build ARM docker images. #5041
- [FEATURE] Query-frontend/Querier: Create spans to measure time to merge promql responses. #5041
- [FEATURE] Querier/Ruler: Support the new thanos promql engine. This is an experimental feature and might change in the future. #5093
- [FEATURE] Added zstd as an option for grpc compression #5092
- [FEATURE] Ring: Add new kv store option
dynamodb
. #5026 - [FEATURE] Cache: Support redis as backend for caching bucket and index cache. #5057
- [FEATURE] Querier/Store-Gateway: Added
-blocks-storage.bucket-store.ignore-blocks-within
allowing to filter out the recently created blocks from being synced by queriers and store-gateways. #5166 - [FEATURE] AlertManager/Ruler: Added support for
keep_firing_for
on alerting rulers. - [FEATURE] Alertmanager: Add support for time_intervals. #5102
- [FEATURE] Added
snappy-block
as an option for grpc compression #5215 - [FEATURE] Enable experimental out-of-order samples support. Added 2 new configs
ingester.out_of_order_time_window
andblocks-storage.tsdb.out_of_order_cap_max
. #4964 - [ENHANCEMENT] Querier: limit series query to only ingesters if
start
param is not specified. #4976 - [ENHANCEMENT] Query-frontend/scheduler: add a new limit
frontend.max-outstanding-requests-per-tenant
for configuring queue size per tenant. Started deprecating two flags-query-scheduler.max-outstanding-requests-per-tenant
and-querier.max-outstanding-requests-per-tenant
, and change their value default to 0. Now if both the old flag and new flag are specified, the old flag's queue size will be picked. #4991 - [ENHANCEMENT] Query-tee: Add
/api/v1/query_exemplars
API endpoint support. #5010 - [ENHANCEMENT] Let blocks_cleaner delete blocks concurrently(default 16 goroutines). #5028
- [ENHANCEMENT] Query Frontend/Query Scheduler: Increase upper bound to 60s for queue duration histogram metric. #5029
- [ENHANCEMENT] Query Frontend: Log Vertical sharding information when
query_stats_enabled
is enabled. #5037 - [ENHANCEMENT] Ingester: The metadata APIs should honour
querier.query-ingesters-within
whenquerier.query-store-for-labels-enabled
is true. #5027 - [ENHANCEMENT] Query Frontend: Skip instant query roundtripper if sharding is not applicable. #5062
- [ENHANCEMENT] Push reduce one hash operation of Labels. #4945 #5114
- [ENHANCEMENT] Alertmanager: Added
-alertmanager.enabled-tenants
and-alertmanager.disabled-tenants
to explicitly enable or disable alertmanager for specific tenants. #5116 - [ENHANCEMENT] Upgraded Docker base images to
alpine:3.17
. #5132 - [ENHANCEMENT] Add retry logic to S3 bucket client. #5135
- [ENHANCEMENT] Update Go version to 1.20.1. #5159
- [ENHANCEMENT] Distributor: Reuse byte slices when serializing requests from distributors to ingesters. #5193
- [ENHANCEMENT] Query Frontend: Add number of chunks and samples fetched in query stats. #5198
- [ENHANCEMENT] Implement grpc.Compressor.DecompressedSize for snappy to optimize memory allocations. #5213
- [BUGFIX] Updated
golang.org/x/net
dependency to fix CVE-2022-27664. #5008 - [BUGFIX] Fix panic when otel and xray tracing is enabled. #5044
- [BUGFIX] Fixed no compact block got grouped in shuffle sharding grouper. #5055
- [BUGFIX] Fixed ingesters with less tokens stuck in LEAVING. #5061
- [BUGFIX] Tracing: Fix missing object storage span instrumentation. #5074
- [BUGFIX] Ingester: Fix Ingesters returning empty response for metadata APIs. #5081
- [BUGFIX] Ingester: Fix panic when querying metadata from blocks that are being deleted. #5119
- [BUGFIX] Ring: Fix case when dynamodb kv reaches the limit of 25 actions per batch call. #5136
- [BUGFIX] Query-frontend: Fix shardable instant queries do not produce sorted results for
sort
,sort_desc
,topk
,bottomk
functions. #5148, #5170 - [BUGFIX] Querier: Fix
/api/v1/series
returning 5XX instead of 4XX when limits are hit. #5169 - [BUGFIX] Compactor: Fix issue that shuffle sharding planner return error if block is under visit by other compactor. #5188
- [BUGFIX] Fix S3 BucketWithRetries upload empty content issue #5217
- [BUGFIX] Query Frontend: Disable
absent
,absent_over_time
andscalar
for vertical sharding. #5221