Skip to content

Releases: thanos-io/thanos

v0.29.0

03 Nov 14:49
v0.29.0
194e1fa
Compare
Choose a tag to compare

v0.29.0 is out after 69 days of work since v0.28.0! Thank you to all 35 contributors who have contributed to this release. It wouldn't be the same without you. v0.29.0 has no changes since the release candidate.

Some of the highlights include OpenTelemetry support, Azure support has been improved with a new SDK, increased query speed, receive has new features to limit series per tenant.

First, let's celebrate new contributors, and then you can find the changelog where you can find all of the details. Please try it out and let us know if you spot any problems!

New Contributors

Fixed

  • #5642 Receive: Log labels correctly in writer debug messages.
  • #5655 Receive: Fix recreating already pruned tenants.
  • #5702 Store: Upgrade minio-go/v7 to fix panic caused by leaked goroutines.
  • #5736 Compact: Fix crash in GatherNoCompactionMarkFilter.NoCompactMarkedBlocks.
  • #5763 Compact: Enable metadata cache.
  • #5759 Compact: Fix missing duration log key.
  • #5799 Query Frontend: Fixed sharding behaviour for vector matches. Now queries with sharding should work properly where the query looks like: foo and without (lbl) bar.

Added

  • #5565 Receive: Allow remote write request limits to be defined per file and tenant (experimental).
  • #5654 Query: add --grpc-compression flag that controls the compression used in gRPC client. With the flag it is now possible to compress the traffic between Query and StoreAPI nodes - you get lower network usage in exchange for a bit higher CPU/RAM usage.
  • #5650 Query Frontend: Add sharded queries metrics. thanos_frontend_sharding_middleware_queries_total shows how many queries were sharded or not sharded.
  • #5658 Query Frontend: Introduce new optional parameters (query-range.min-split-interval, query-range.max-split-interval, query-range.horizontal-shards) to implement more dynamic horizontal query splitting.
  • #5721 Store: Add metric thanos_bucket_store_empty_postings_total for number of empty postings when fetching series.
  • #5723 Compactor: Support disable block viewer UI.
  • #5674 Query Frontend/Store: Add support connecting to redis using TLS.
  • #5734 Store: Support disable block viewer UI.
  • #5411 Tracing: Add OpenTelemetry Protocol exporter.
  • #5779 Objstore: Support specifying S3 storage class.
  • #5741 Query: add metrics on how much data is being selected by downstream Store APIs.
  • #5673 Receive: Reload tenant limit configuration on file change.
  • #5749 Query Frontend: Added small LRU cache to cache query analysis results.

Changed

  • #5738 Global: replace crypto/sha256 with minio/sha256-simd to make hash calculation faster in metadata and reloader packages.
  • #5648 Query Frontend: cache vertical shards in query-frontend.
  • #5753 Build with Go 1.19.
  • #5255 Query: Use k-way merging for the proxying logic. The proxying sub-system now uses much less resources (~25-80% less CPU usage, ~30-50% less RAM usage according to our benchmarks). Reduces query duration by a few percent on queries with lots of series.
  • #5690 Compact: update --debug.accept-malformed-index flag to apply to downsampling. Previously the flag only applied to compaction, and fatal errors would still occur when downsampling was attempted.
  • #5707 Objstore: Update objstore to latest version which includes a refactored Azure Storage Account implementation with a new SDK.
  • #5641 Store: Remove hardcoded labels in shard matcher.
  • #5641 Query: Inject unshardable le label in query analyzer.
  • #5685 Receive: Make active/head series limiting configuration per tenant by adding it to new limiting config.
  • #5411 Tracing: Change Jaeger exporter from OpenTracing to OpenTelemetry. Options RPC Metrics, Gen128Bit and Disabled are now deprecated and won't have any effect when set ⚠️.
  • #5767 *: Upgrade Prometheus to v2.39.0.
  • #5771 *: Upgrade Prometheus to v2.39.1.

Full Changelog: v0.28.1...v0.29.0

v0.29.0-rc.0

21 Oct 14:56
v0.29.0-rc.0
f354173
Compare
Choose a tag to compare
v0.29.0-rc.0 Pre-release
Pre-release

v0.29.0-rc.0 is out after 56 days of work since v0.28.0! Thank you to all 35 contributors who have contributed to this release. It wouldn't be the same without you.

Some of the highlights include OpenTelemetry support, Azure support has been improved with a new SDK, increased query speed, receive has new features to limit series per tenant.

First, let's celebrate new contributors, and then you can find the changelog where you can find all of the details. Please try out this RC and let us know if you spot any problems!

New Contributors

Fixed

  • #5642 Receive: Log labels correctly in writer debug messages.
  • #5655 Receive: Fix recreating already pruned tenants.
  • #5702 Store: Upgrade minio-go/v7 to fix panic caused by leaked goroutines.
  • #5736 Compact: Fix crash in GatherNoCompactionMarkFilter.NoCompactMarkedBlocks.
  • #5763 Compact: Enable metadata cache.
  • #5759 Compact: Fix missing duration log key.
  • #5799 Query Frontend: Fixed sharding behaviour for vector matches. Now queries with sharding should work properly where the query looks like: foo and without (lbl) bar.

Added

  • #5565 Receive: Allow remote write request limits to be defined per file and tenant (experimental).
  • #5654 Query: add --grpc-compression flag that controls the compression used in gRPC client. With the flag it is now possible to compress the traffic between Query and StoreAPI nodes - you get lower network usage in exchange for a bit higher CPU/RAM usage.
  • #5650 Query Frontend: Add sharded queries metrics. thanos_frontend_sharding_middleware_queries_total shows how many queries were sharded or not sharded.
  • #5658 Query Frontend: Introduce new optional parameters (query-range.min-split-interval, query-range.max-split-interval, query-range.horizontal-shards) to implement more dynamic horizontal query splitting.
  • #5721 Store: Add metric thanos_bucket_store_empty_postings_total for number of empty postings when fetching series.
  • #5723 Compactor: Support disable block viewer UI.
  • #5674 Query Frontend/Store: Add support connecting to redis using TLS.
  • #5734 Store: Support disable block viewer UI.
  • #5411 Tracing: Add OpenTelemetry Protocol exporter.
  • #5779 Objstore: Support specifying S3 storage class.
  • #5741 Query: add metrics on how much data is being selected by downstream Store APIs.
  • #5673 Receive: Reload tenant limit configuration on file change.
  • #5749 Query Frontend: Added small LRU cache to cache query analysis results.

Changed

  • #5738 Global: replace crypto/sha256 with minio/sha256-simd to make hash calculation faster in metadata and reloader packages.
  • #5648 Query Frontend: cache vertical shards in query-frontend.
  • #5753 Build with Go 1.19.
  • #5255 Query: Use k-way merging for the proxying logic. The proxying sub-system now uses much less resources (~25-80% less CPU usage, ~30-50% less RAM usage according to our benchmarks). Reduces query duration by a few percent on queries with lots of series.
  • #5690 Compact: update --debug.accept-malformed-index flag to apply to downsampling. Previously the flag only applied to compaction, and fatal errors would still occur when downsampling was attempted.
  • #5707 Objstore: Update objstore to latest version which includes a refactored Azure Storage Account implementation with a new SDK.
  • #5641 Store: Remove hardcoded labels in shard matcher.
  • #5641 Query: Inject unshardable le label in query analyzer.
  • #5685 Receive: Make active/head series limiting configuration per tenant by adding it to new limiting config.
  • #5411 Tracing: Change Jaeger exporter from OpenTracing to OpenTelemetry. Options RPC Metrics, Gen128Bit and Disabled are now deprecated and won't have any effect when set ⚠️.
  • #5767 *: Upgrade Prometheus to v2.39.0.
  • #5771 *: Upgrade Prometheus to v2.39.1.

Full Changelog: v0.28.1...v0.29.0-rc.0

v0.28.1

06 Oct 18:54
41a8ce6
Compare
Choose a tag to compare

What's Changed

Fixed

  • #5702 Store: Upgrade minio-go/v7 to fix panic caused by leaked goroutines.

Full Changelog: v0.28.0...v0.28.1

v0.28.0

26 Aug 19:29
7f58065
Compare
Choose a tag to compare

What's Changed

Fixed

  • #5502 Receive: Handle exemplar storage errors as conflict error.
  • #5534 Query: Set struct return by query API alerts same as prometheus API.
  • #5554 Query/Receiver: Fix querying exemplars from multi-tenant receivers.
  • #5583 Query: Fix data race between Respond() and query/queryRange functions. Fixes #5410.

Added

  • #5440 HTTP metrics: export number of in-flight HTTP requests.
  • #5424 Receive: Export metrics regarding size of remote write requests.
  • #5420 Receive: Automatically remove stale tenants.
  • #5472 Receive: Add new tenant metrics to example dashboard.
  • #5475 Compact/Store: Added --block-files-concurrency allowing to configure number of go routines for downloading and uploading block files during compaction.
  • #5470 Receive: Expose TSDB stats as metrics for all tenants.
  • #5493 Compact: Added --compact.blocks-fetch-concurrency allowing to configure number of goroutines for downloading blocks during compactions.
  • #5480 Query: Expose endpoint info timeout as a hidden flag --endpoint.info-timeout.
  • #5527 Receive: Add per request limits for remote write. Added four new hidden flags --receive.write-request-limits.max-size-bytes, --receive.write-request-limits.max-series, --receive.write-request-limits.max-samples and --receive.write-request-limits.max-concurrency for limiting requests max body size, max amount of series, max amount of samples and max amount of concurrent requests.
  • #5520 Receive: Meta-monitoring based active series limiting (experimental). This mode is only available if Receiver is in Router or RouterIngestor mode, and config is provided. Added four new hidden flags receive.tenant-limits.max-head-series for the max active series for the tenant, receive.tenant-limits.meta-monitoring-url for the Meta-monitoring URL, receive.tenant-limits.meta-monitoring-query for specifying the PromQL query to execute and receive.tenant-limits.meta-monitoring-client for specifying HTTP client configs.
  • #5555 Query: Added --query.active-query-path flag, allowing the user to configure the directory to create an active query tracking file, queries.active, for different resolution.
  • #5566 Receive: Added experimental support to enable chunk write queue via --tsdb.write-queue-size flag.
  • #5575 Receive: Add support for gRPC compression with snappy.
  • #5508 Receive: Validate labels in write requests.
  • #5439 Mixin: Add Alert ThanosQueryOverload to Mixin.
  • #5342 Query/Query Frontend: Implement vertical sharding at query frontend for range queries.
  • #5561 Query Frontend: Support instant query vertical sharding.
  • #5453 Compact: Skip erroneous empty non *AggrChunk chunks during 1h downsampling of 5m resolution blocks.
  • #5607 Query: Support custom lookback delta from request in query api.

Changed

  • #5447 Promclient: Ignore 405 status codes for Prometheus buildVersion requests.
  • #5451 Azure: Reduce memory usage by not buffering file downloads entirely in memory.
  • #5484 Update Prometheus deps to v2.36.2.
  • #5511 Update Prometheus deps to v2.37.0.
  • #5588 Store: Improve index header reading performance by sorting values first.
  • #5596 Store: Filter external labels from matchers on LabelValues/LabelNames to improve performance.

New Contributors

Full Changelog: v0.27.0...v0.28.0

v0.28.0-rc.0

23 Aug 17:22
681ab36
Compare
Choose a tag to compare
v0.28.0-rc.0 Pre-release
Pre-release

What's Changed

Fixed

  • #5502 Receive: Handle exemplar storage errors as conflict error.
  • #5534 Query: Set struct return by query API alerts same as prometheus API.
  • #5554 Query/Receiver: Fix querying exemplars from multi-tenant receivers.
  • #5583 Query: Fix data race between Respond() and query/queryRange functions. Fixes #5410.

Added

  • #5440 HTTP metrics: export number of in-flight HTTP requests.
  • #5424 Receive: Export metrics regarding size of remote write requests.
  • #5420 Receive: Automatically remove stale tenants.
  • #5472 Receive: Add new tenant metrics to example dashboard.
  • #5475 Compact/Store: Added --block-files-concurrency allowing to configure number of go routines for downloading and uploading block files during compaction.
  • #5470 Receive: Expose TSDB stats as metrics for all tenants.
  • #5493 Compact: Added --compact.blocks-fetch-concurrency allowing to configure number of goroutines for downloading blocks during compactions.
  • #5480 Query: Expose endpoint info timeout as a hidden flag --endpoint.info-timeout.
  • #5527 Receive: Add per request limits for remote write. Added four new hidden flags --receive.write-request-limits.max-size-bytes, --receive.write-request-limits.max-series, --receive.write-request-limits.max-samples and --receive.write-request-limits.max-concurrency for limiting requests max body size, max amount of series, max amount of samples and max amount of concurrent requests.
  • #5520 Receive: Meta-monitoring based active series limiting (experimental). This mode is only available if Receiver is in Router or RouterIngestor mode, and config is provided. Added four new hidden flags receive.tenant-limits.max-head-series for the max active series for the tenant, receive.tenant-limits.meta-monitoring-url for the Meta-monitoring URL, receive.tenant-limits.meta-monitoring-query for specifying the PromQL query to execute and receive.tenant-limits.meta-monitoring-client for specifying HTTP client configs.
  • #5555 Query: Added --query.active-query-path flag, allowing the user to configure the directory to create an active query tracking file, queries.active, for different resolution.
  • #5566 Receive: Added experimental support to enable chunk write queue via --tsdb.write-queue-size flag.
  • #5575 Receive: Add support for gRPC compression with snappy.
  • #5508 Receive: Validate labels in write requests.
  • #5439 Mixin: Add Alert ThanosQueryOverload to Mixin.
  • #5342 Query/Query Frontend: Implement vertical sharding at query frontend for range queries.
  • #5561 Query Frontend: Support instant query vertical sharding.
  • #5453 Compact: Skip erroneous empty non *AggrChunk chunks during 1h downsampling of 5m resolution blocks.- #5607 Query: Support custom lookback delta from request in query api.
  • #5607 Query: Support custom lookback delta from request in query api.

Changed

  • #5447 Promclient: Ignore 405 status codes for Prometheus buildVersion requests.
  • #5451 Azure: Reduce memory usage by not buffering file downloads entirely in memory.
  • #5484 Update Prometheus deps to v2.36.2.
  • #5511 Update Prometheus deps to v2.37.0.
  • #5588 Store: Improve index header reading performance by sorting values first.
  • #5596 Store: Filter external labels from matchers on LabelValues/LabelNames to improve performance.

New Contributors

Full Changelog: v0.27.0...v0.28.0-rc.0

v0.27.0

05 Jul 15:14
v0.27.0
f68bb36
Compare
Choose a tag to compare

What's Changed

Fixed

  • #5339 Receive: When running in routerOnly mode, an interupt (SIGINT) will now exit the process.
  • #5357 Store: Fix groupcache handling by making sure slashes in the cache's key are not getting interpreted by the router anymore.
  • #5427 Receive: Fix Ketama hashring replication consistency. With the Ketama hashring, replication is currently handled by choosing subsequent nodes in the list of endpoints. This can lead to existing nodes getting more series when the hashring is scaled. This change makes replication to choose subsequent nodes from the hashring which should not create new series in old nodes when the hashring is scaled. Ketama hashring can be used by setting --receive.hashrings-algorithm=ketama.

Added

  • #5337 Thanos Object Store: Add the prefix option to buckets.
  • #5409 S3: Add option to force DNS style lookup.
  • #5352 Cache: Add cache metrics to groupcache: thanos_cache_groupcache_bytes, thanos_cache_groupcache_evictions_total, thanos_cache_groupcache_items and thanos_cache_groupcache_max_bytes.
  • #5391 Receive: Add relabeling support with the flag --receive.relabel-config-file or alternatively --receive.relabel-config.
  • #5408 Receive: Add support for consistent hashrings. The flag --receive.hashrings-algorithm uses default hashmod but can also be set to ketama to leverage consistent hashrings. More technical information can be found here: https://dgryski.medium.com/consistent-hashing-algorithmic-tradeoffs-ef6b8e2fcae8.
  • #5402 Receive: Implement api/v1/status/tsdb.

Changed

New Contributors

Full Changelog: v0.26.0...v0.27.0

v0.27.0-rc.0

21 Jun 20:37
v0.27.0-rc.0
8d8c9fe
Compare
Choose a tag to compare
v0.27.0-rc.0 Pre-release
Pre-release

What's Changed

Fixed

  • #5339 Receive: When running in routerOnly mode, an interupt (SIGINT) will now exit the process.
  • #5357 Store: Fix groupcache handling by making sure slashes in the cache's key are not getting interpreted by the router anymore.
  • #5427 Receive: Fix Ketama hashring replication consistency. With the Ketama hashring, replication is currently handled by choosing subsequent nodes in the list of endpoints. This can lead to existing nodes getting more series when the hashring is scaled. This change makes replication to choose subsequent nodes from the hashring which should not create new series in old nodes when the hashring is scaled. Ketama hashring can be used by setting --receive.hashrings-algorithm=ketama

Added

  • #5337 Thanos Object Store: Add the prefix option to buckets.
  • #5409 S3: Add option to force DNS style lookup.
  • #5352 Cache: Add cache metrics to groupcache: thanos_cache_groupcache_bytes, thanos_cache_groupcache_evictions_total, thanos_cache_groupcache_items and thanos_cache_groupcache_max_bytes
  • #5391 Receive: Add relabeling support with the flag --receive.relabel-config-file or alternatively --receive.relabel-config
  • #5408 Receive: Add support for consistent hashrings. The flag --receive.hashrings-algorithm uses default hashmod but can also be set to ketama to leverage consistent hashrings. More technical information can be found here: https://dgryski.medium.com/consistent-hashing-algorithmic-tradeoffs-ef6b8e2fcae8
  • #5402 Receive: Implement api/v1/status/tsdb.

Changed

New Contributors

Full Changelog: v0.26.0...v0.27.0-rc.0

v0.26.0

05 May 14:03
v0.26.0
17c5764
Compare
Choose a tag to compare

What's Changed

Fixed

  • #5281 Blocks: Use correct separators for filesystem paths and object storage paths respectively.
  • #5300 Query: Ignore cache on queries with deduplication off.

Added

  • #5220 Query Frontend: Add --query-frontend.forward-header flag, forward headers to downstream querier.
  • #5250 Querier: Expose Query and QueryRange APIs through GRPC.
  • #5290 Add support for ppc64le

Changed

  • #4838 Tracing: Chanced client for Stackdriver which deprecated "type: STACKDRIVER" in tracing YAML configuration. Use type: GOOGLE_CLOUD instead (STACKDRIVER type remains for backward compatibility).
  • #5170 All: Upgraded the TLS version from TLS1.2 to TLS1.3.
  • #5205 Rule: Add ruler labels as external labels in stateless ruler mode.
  • #5206 Cache: Add timeout for groupcache's fetch operation.
  • #5218 Tools: Thanos tools bucket downsample is now running continously.
  • #5231 Tools: Bucket verify tool ignores blocks with deletion markers.
  • #5244 Query: Promote negative offset and @ modifier to stable features as per Prometheus #10121.
  • #5255 InfoAPI: Set store API unavailable when stores are not ready.
  • #5256 Update Prometheus deps v2.33.5.
  • #5271 DNS: Fix miekgdns resolver to work with CNAME records too.

Removed

  • #5145 UI: Remove old Prometheus UI.

New Contributors

Full Changelog: v0.25.2...v0.26.0

v0.26.0-rc.0

29 Apr 16:39
v0.26.0-rc.0
f5ac521
Compare
Choose a tag to compare
v0.26.0-rc.0 Pre-release
Pre-release

What's Changed

Fixed

  • #5281 Blocks: Use correct separators for filesystem paths and object storage paths respectively.
  • #5300 Query: Ignore cache on queries with deduplication off.

Added

  • #5220 Query Frontend: Add --query-frontend.forward-header flag, forward headers to downstream querier.
  • #5250 Querier: Expose Query and QueryRange APIs through GRPC.
  • #5290 Add support for ppc64le

Changed

  • #4838 Tracing: Chanced client for Stackdriver which deprecated "type: STACKDRIVER" in tracing YAML configuration. Use type: GOOGLE_CLOUD instead (STACKDRIVER type remains for backward compatibility).
  • #5170 All: Upgraded the TLS version from TLS1.2 to TLS1.3.
  • #5205 Rule: Add ruler labels as external labels in stateless ruler mode.
  • #5206 Cache: Add timeout for groupcache's fetch operation.
  • #5218 Tools: Thanos tools bucket downsample is now running continously.
  • #5231 Tools: Bucket verify tool ignores blocks with deletion markers.
  • #5244 Query: Promote negative offset and @ modifier to stable features as per Prometheus #10121.
  • #5255 InfoAPI: Set store API unavailable when stores are not ready.
  • #5256 Update Prometheus deps v2.33.5.
  • #5271 DNS: Fix miekgdns resolver to work with CNAME records too.

Removed

  • #5145 UI: Remove old Prometheus UI.

New Contributors

Full Changelog: v0.25.2...v0.26.0-rc.0

v0.25.2

24 Mar 12:24
v0.25.2
e8eb0bd
Compare
Choose a tag to compare

Fixed

  • #5202 Exemplars: Return empty data instead of nil if no data available.
  • #5242 Ruler: Make ruler use the correct WAL directory.

Full Changelog: v0.25.1...v0.25.2