From 95f111c5b6edc991a8d7fbc0681b1a77779ab137 Mon Sep 17 00:00:00 2001 From: Petter Solberg Date: Fri, 29 Dec 2023 10:54:41 +0100 Subject: [PATCH 1/6] Store: add flag ignore-deletion-marks-errors to be able to ignore errors while retrieving deletion marks Signed-off-by: Petter Solberg --- cmd/thanos/compact.go | 2 +- cmd/thanos/store.go | 7 ++++++- cmd/thanos/tools_bucket.go | 8 ++++---- pkg/block/fetcher.go | 24 +++++++++++++++--------- pkg/block/fetcher_test.go | 2 +- pkg/compact/compact_e2e_test.go | 6 +++--- pkg/replicate/replicator.go | 2 +- 7 files changed, 31 insertions(+), 20 deletions(-) diff --git a/cmd/thanos/compact.go b/cmd/thanos/compact.go index ee8158de1f..61197f24c1 100644 --- a/cmd/thanos/compact.go +++ b/cmd/thanos/compact.go @@ -231,7 +231,7 @@ func runCompact( // While fetching blocks, we filter out blocks that were marked for deletion by using IgnoreDeletionMarkFilter. // The delay of deleteDelay/2 is added to ensure we fetch blocks that are meant to be deleted but do not have a replacement yet. // This is to make sure compactor will not accidentally perform compactions with gap instead. - ignoreDeletionMarkFilter := block.NewIgnoreDeletionMarkFilter(logger, insBkt, deleteDelay/2, conf.blockMetaFetchConcurrency) + ignoreDeletionMarkFilter := block.NewIgnoreDeletionMarkFilter(logger, insBkt, deleteDelay/2, false, conf.blockMetaFetchConcurrency) duplicateBlocksFilter := block.NewDeduplicateFilter(conf.blockMetaFetchConcurrency) noCompactMarkerFilter := compact.NewGatherNoCompactionMarkFilter(logger, insBkt, conf.blockMetaFetchConcurrency) noDownsampleMarkerFilter := downsample.NewGatherNoDownsampleMarkFilter(logger, insBkt, conf.blockMetaFetchConcurrency) diff --git a/cmd/thanos/store.go b/cmd/thanos/store.go index 7d80687ec3..f5798d7f66 100644 --- a/cmd/thanos/store.go +++ b/cmd/thanos/store.go @@ -81,6 +81,7 @@ type storeConfig struct { advertiseCompatibilityLabel bool consistencyDelay commonmodel.Duration ignoreDeletionMarksDelay commonmodel.Duration + ignoreDeletionMarksErrors bool disableWeb bool webConfig webConfig label string @@ -180,6 +181,10 @@ func (sc *storeConfig) registerFlag(cmd extkingpin.FlagClause) { "Default is 24h, half of the default value for --delete-delay on compactor."). Default("24h").SetValue(&sc.ignoreDeletionMarksDelay) + cmd.Flag("ignore-deletion-marks-errors", "If true, Store Gateway will ignore errors while trying to fetch and parse deletion-marks. This is desirable if the storage provider intermittently time out or returning errors for non-existent files. "+ + "Default is false."). + Default("false").BoolVar(&sc.ignoreDeletionMarksErrors) + cmd.Flag("store.enable-index-header-lazy-reader", "If true, Store Gateway will lazy memory map index-header only once the block is required by a query."). Default("false").BoolVar(&sc.lazyIndexReaderEnabled) @@ -345,7 +350,7 @@ func runStore( return errors.Wrap(err, "create index cache") } - ignoreDeletionMarkFilter := block.NewIgnoreDeletionMarkFilter(logger, insBkt, time.Duration(conf.ignoreDeletionMarksDelay), conf.blockMetaFetchConcurrency) + ignoreDeletionMarkFilter := block.NewIgnoreDeletionMarkFilter(logger, insBkt, time.Duration(conf.ignoreDeletionMarksDelay), conf.ignoreDeletionMarksErrors, conf.blockMetaFetchConcurrency) baseBlockIDsFetcher := block.NewBaseBlockIDsFetcher(logger, insBkt) metaFetcher, err := block.NewMetaFetcher(logger, conf.blockMetaFetchConcurrency, insBkt, baseBlockIDsFetcher, dataDir, extprom.WrapRegistererWithPrefix("thanos_", reg), []block.MetadataFilter{ diff --git a/cmd/thanos/tools_bucket.go b/cmd/thanos/tools_bucket.go index e41e5deef5..d2e1c63e21 100644 --- a/cmd/thanos/tools_bucket.go +++ b/cmd/thanos/tools_bucket.go @@ -349,7 +349,7 @@ func registerBucketVerify(app extkingpin.AppClause, objStoreConfig *extflag.Path } // We ignore any block that has the deletion marker file. - filters := []block.MetadataFilter{block.NewIgnoreDeletionMarkFilter(logger, insBkt, 0, block.FetcherConcurrency)} + filters := []block.MetadataFilter{block.NewIgnoreDeletionMarkFilter(logger, insBkt, 0, false, block.FetcherConcurrency)} baseBlockIDsFetcher := block.NewBaseBlockIDsFetcher(logger, insBkt) fetcher, err := block.NewMetaFetcher(logger, block.FetcherConcurrency, insBkt, baseBlockIDsFetcher, "", extprom.WrapRegistererWithPrefix(extpromPrefix, reg), filters) if err != nil { @@ -405,7 +405,7 @@ func registerBucketLs(app extkingpin.AppClause, objStoreConfig *extflag.PathOrCo var filters []block.MetadataFilter if tbc.excludeDelete { - ignoreDeletionMarkFilter := block.NewIgnoreDeletionMarkFilter(logger, insBkt, 0, block.FetcherConcurrency) + ignoreDeletionMarkFilter := block.NewIgnoreDeletionMarkFilter(logger, insBkt, 0, false, block.FetcherConcurrency) filters = append(filters, ignoreDeletionMarkFilter) } baseBlockIDsFetcher := block.NewBaseBlockIDsFetcher(logger, insBkt) @@ -825,7 +825,7 @@ func registerBucketCleanup(app extkingpin.AppClause, objStoreConfig *extflag.Pat // While fetching blocks, we filter out blocks that were marked for deletion by using IgnoreDeletionMarkFilter. // The delay of deleteDelay/2 is added to ensure we fetch blocks that are meant to be deleted but do not have a replacement yet. // This is to make sure compactor will not accidentally perform compactions with gap instead. - ignoreDeletionMarkFilter := block.NewIgnoreDeletionMarkFilter(logger, insBkt, tbc.deleteDelay/2, tbc.blockSyncConcurrency) + ignoreDeletionMarkFilter := block.NewIgnoreDeletionMarkFilter(logger, insBkt, tbc.deleteDelay/2, false, tbc.blockSyncConcurrency) duplicateBlocksFilter := block.NewDeduplicateFilter(tbc.blockSyncConcurrency) blocksCleaner := compact.NewBlocksCleaner(logger, insBkt, ignoreDeletionMarkFilter, tbc.deleteDelay, stubCounter, stubCounter) @@ -1370,7 +1370,7 @@ func registerBucketRetention(app extkingpin.AppClause, objStoreConfig *extflag.P // While fetching blocks, we filter out blocks that were marked for deletion by using IgnoreDeletionMarkFilter. // The delay of deleteDelay/2 is added to ensure we fetch blocks that are meant to be deleted but do not have a replacement yet. // This is to make sure compactor will not accidentally perform compactions with gap instead. - ignoreDeletionMarkFilter := block.NewIgnoreDeletionMarkFilter(logger, insBkt, tbc.deleteDelay/2, tbc.blockSyncConcurrency) + ignoreDeletionMarkFilter := block.NewIgnoreDeletionMarkFilter(logger, insBkt, tbc.deleteDelay/2, false, tbc.blockSyncConcurrency) duplicateBlocksFilter := block.NewDeduplicateFilter(tbc.blockSyncConcurrency) stubCounter := promauto.With(nil).NewCounter(prometheus.CounterOpts{}) diff --git a/pkg/block/fetcher.go b/pkg/block/fetcher.go index 828503e91b..39027b7dda 100644 --- a/pkg/block/fetcher.go +++ b/pkg/block/fetcher.go @@ -878,22 +878,24 @@ func (f *ConsistencyDelayMetaFilter) Filter(_ context.Context, metas map[ulid.UL // Delay is not considered when computing DeletionMarkBlocks map. // Not go-routine safe. type IgnoreDeletionMarkFilter struct { - logger log.Logger - delay time.Duration - concurrency int - bkt objstore.InstrumentedBucketReader + logger log.Logger + delay time.Duration + ignoreErrors bool + concurrency int + bkt objstore.InstrumentedBucketReader mtx sync.Mutex deletionMarkMap map[ulid.ULID]*metadata.DeletionMark } // NewIgnoreDeletionMarkFilter creates IgnoreDeletionMarkFilter. -func NewIgnoreDeletionMarkFilter(logger log.Logger, bkt objstore.InstrumentedBucketReader, delay time.Duration, concurrency int) *IgnoreDeletionMarkFilter { +func NewIgnoreDeletionMarkFilter(logger log.Logger, bkt objstore.InstrumentedBucketReader, delay time.Duration, ignoreErrors bool, concurrency int) *IgnoreDeletionMarkFilter { return &IgnoreDeletionMarkFilter{ - logger: logger, - bkt: bkt, - delay: delay, - concurrency: concurrency, + logger: logger, + bkt: bkt, + delay: delay, + ignoreErrors: ignoreErrors, + concurrency: concurrency, } } @@ -941,6 +943,10 @@ func (f *IgnoreDeletionMarkFilter) Filter(ctx context.Context, metas map[ulid.UL level.Warn(f.logger).Log("msg", "found partial deletion-mark.json; if we will see it happening often for the same block, consider manually deleting deletion-mark.json from the object storage", "block", id, "err", err) continue } + level.Warn(f.logger).Log("msg", "failed to fetch deletion-mark.json; if you see it happening often for the same block, consider manually deleting the whole block from the object storage", "block", id, "err", err) + if f.ignoreErrors { + continue + } // Remember the last error and continue to drain the channel. lastErr = err continue diff --git a/pkg/block/fetcher_test.go b/pkg/block/fetcher_test.go index 11384e88fa..d5204511ce 100644 --- a/pkg/block/fetcher_test.go +++ b/pkg/block/fetcher_test.go @@ -1079,7 +1079,7 @@ func TestIgnoreDeletionMarkFilter_Filter(t *testing.T) { defer cancel() now := time.Now() - f := NewIgnoreDeletionMarkFilter(log.NewNopLogger(), objstore.WithNoopInstr(bkt), 48*time.Hour, 32) + f := NewIgnoreDeletionMarkFilter(log.NewNopLogger(), objstore.WithNoopInstr(bkt), 48*time.Hour, false, 32) shouldFetch := &metadata.DeletionMark{ ID: ULID(1), diff --git a/pkg/compact/compact_e2e_test.go b/pkg/compact/compact_e2e_test.go index f1e01ec4f4..690de96c6f 100644 --- a/pkg/compact/compact_e2e_test.go +++ b/pkg/compact/compact_e2e_test.go @@ -104,7 +104,7 @@ func TestSyncer_GarbageCollect_e2e(t *testing.T) { blocksMarkedForDeletion := promauto.With(nil).NewCounter(prometheus.CounterOpts{}) garbageCollectedBlocks := promauto.With(nil).NewCounter(prometheus.CounterOpts{}) blockMarkedForNoCompact := promauto.With(nil).NewCounter(prometheus.CounterOpts{}) - ignoreDeletionMarkFilter := block.NewIgnoreDeletionMarkFilter(nil, nil, 48*time.Hour, fetcherConcurrency) + ignoreDeletionMarkFilter := block.NewIgnoreDeletionMarkFilter(nil, nil, 48*time.Hour, false, fetcherConcurrency) sy, err := NewMetaSyncer(nil, nil, bkt, metaFetcher, duplicateBlocksFilter, ignoreDeletionMarkFilter, blocksMarkedForDeletion, garbageCollectedBlocks) testutil.Ok(t, err) @@ -193,7 +193,7 @@ func testGroupCompactE2e(t *testing.T, mergeFunc storage.VerticalChunkSeriesMerg reg := prometheus.NewRegistry() - ignoreDeletionMarkFilter := block.NewIgnoreDeletionMarkFilter(logger, objstore.WithNoopInstr(bkt), 48*time.Hour, fetcherConcurrency) + ignoreDeletionMarkFilter := block.NewIgnoreDeletionMarkFilter(logger, objstore.WithNoopInstr(bkt), 48*time.Hour, false, fetcherConcurrency) duplicateBlocksFilter := block.NewDeduplicateFilter(fetcherConcurrency) noCompactMarkerFilter := NewGatherNoCompactionMarkFilter(logger, objstore.WithNoopInstr(bkt), 2) insBkt := objstore.WithNoopInstr(bkt) @@ -505,7 +505,7 @@ func TestGarbageCollectDoesntCreateEmptyBlocksWithDeletionMarksOnly(t *testing.T blocksMarkedForDeletion := promauto.With(nil).NewCounter(prometheus.CounterOpts{}) garbageCollectedBlocks := promauto.With(nil).NewCounter(prometheus.CounterOpts{}) - ignoreDeletionMarkFilter := block.NewIgnoreDeletionMarkFilter(nil, objstore.WithNoopInstr(bkt), 48*time.Hour, fetcherConcurrency) + ignoreDeletionMarkFilter := block.NewIgnoreDeletionMarkFilter(nil, objstore.WithNoopInstr(bkt), 48*time.Hour, false, fetcherConcurrency) duplicateBlocksFilter := block.NewDeduplicateFilter(fetcherConcurrency) insBkt := objstore.WithNoopInstr(bkt) diff --git a/pkg/replicate/replicator.go b/pkg/replicate/replicator.go index 1f8cdef2e4..bbfd7ec556 100644 --- a/pkg/replicate/replicator.go +++ b/pkg/replicate/replicator.go @@ -242,7 +242,7 @@ func newMetaFetcher( thanosblock.NewTimePartitionMetaFilter(minTime, maxTime), } if ignoreMarkedForDeletion { - filters = append(filters, thanosblock.NewIgnoreDeletionMarkFilter(logger, fromBkt, 0, concurrency)) + filters = append(filters, thanosblock.NewIgnoreDeletionMarkFilter(logger, fromBkt, 0, false, concurrency)) } baseBlockIDsFetcher := thanosblock.NewBaseBlockIDsFetcher(logger, fromBkt) return thanosblock.NewMetaFetcher( From efaab88a3c55f61de4817ef02b63313155798a17 Mon Sep 17 00:00:00 2001 From: Petter Solberg Date: Fri, 29 Dec 2023 11:13:17 +0100 Subject: [PATCH 2/6] Updated docs for store with new flag Signed-off-by: Petter Solberg --- docs/components/store.md | 64 ++++++++++++++++++++++------------------ 1 file changed, 35 insertions(+), 29 deletions(-) diff --git a/docs/components/store.md b/docs/components/store.md index 85fd4ce688..0683d08b4e 100644 --- a/docs/components/store.md +++ b/docs/components/store.md @@ -29,14 +29,14 @@ Store node giving access to blocks in a bucket provider. Now supported GCS, S3, Azure, Swift, Tencent COS and Aliyun OSS. Flags: - --block-meta-fetch-concurrency=32 + --block-meta-fetch-concurrency=32 Number of goroutines to use when fetching block metadata from object storage. - --block-sync-concurrency=20 + --block-sync-concurrency=20 Number of goroutines to use when constructing index-cache.json blocks from object storage. Must be equal or greater than 1. - --bucket-web-label=BUCKET-WEB-LABEL + --bucket-web-label=BUCKET-WEB-LABEL External block label to use as group title in the bucket web UI --cache-index-header Cache TSDB index-headers on disk to reduce @@ -60,19 +60,19 @@ Flags: cause the store to read them. For such use cases use Prometheus + sidecar. Ignored if --no-cache-index-header option is specified. - --grpc-address="0.0.0.0:10901" + --grpc-address="0.0.0.0:10901" Listen ip:port address for gRPC endpoints (StoreAPI). Make sure this address is routable from other components. --grpc-grace-period=2m Time to wait after an interrupt received for GRPC Server. - --grpc-server-max-connection-age=60m + --grpc-server-max-connection-age=60m The grpc server max connection age. This controls how often to re-establish connections and redo TLS handshakes. --grpc-server-tls-cert="" TLS Certificate for gRPC server, leave blank to disable TLS - --grpc-server-tls-client-ca="" + --grpc-server-tls-client-ca="" TLS CA to verify clients against. If no client CA is specified, there is no client verification on server side. (tls.NoClientCert) @@ -80,14 +80,14 @@ Flags: disable TLS -h, --help Show context-sensitive help (also try --help-long and --help-man). - --http-address="0.0.0.0:10902" + --http-address="0.0.0.0:10902" Listen host:port for HTTP endpoints. --http-grace-period=2m Time to wait after an interrupt received for HTTP Server. --http.config="" [EXPERIMENTAL] Path to the configuration file that can enable TLS or authentication for all HTTP endpoints. - --ignore-deletion-marks-delay=24h + --ignore-deletion-marks-delay=24h Duration after which the blocks marked for deletion will be filtered out while fetching blocks. The idea of ignore-deletion-marks-delay @@ -108,57 +108,63 @@ Flags: blocks before being deleted from bucket. Default is 24h, half of the default value for --delete-delay on compactor. + --ignore-deletion-marks-errors + If true, Store Gateway will ignore errors while + trying to fetch and parse deletion-marks. + This is desirable if the storage provider + intermittently time out or returning errors for + non-existent files. Default is false. --index-cache-size=250MB Maximum size of items held in the in-memory index cache. Ignored if --index-cache.config or --index-cache.config-file option is specified. - --index-cache.config= + --index-cache.config= Alternative to 'index-cache.config-file' flag (mutually exclusive). Content of YAML file that contains index cache configuration. See format details: https://thanos.io/tip/components/store.md/#index-cache - --index-cache.config-file= + --index-cache.config-file= Path to YAML file that contains index cache configuration. See format details: https://thanos.io/tip/components/store.md/#index-cache --log.format=logfmt Log format to use. Possible options: logfmt or json. --log.level=info Log filtering level. - --max-time=9999-12-31T23:59:59Z + --max-time=9999-12-31T23:59:59Z End of time range limit to serve. Thanos Store will serve only blocks, which happened earlier than this value. Option can be a constant time in RFC3339 format or time duration relative to current time, such as -1d or 2h45m. Valid duration units are ms, s, m, h, d, w, y. - --min-time=0000-01-01T00:00:00Z + --min-time=0000-01-01T00:00:00Z Start of time range limit to serve. Thanos Store will serve only metrics, which happened later than this value. Option can be a constant time in RFC3339 format or time duration relative to current time, such as -1d or 2h45m. Valid duration units are ms, s, m, h, d, w, y. - --objstore.config= + --objstore.config= Alternative to 'objstore.config-file' flag (mutually exclusive). Content of YAML file that contains object store configuration. See format details: https://thanos.io/tip/thanos/storage.md/#configuration - --objstore.config-file= + --objstore.config-file= Path to YAML file that contains object store configuration. See format details: https://thanos.io/tip/thanos/storage.md/#configuration - --request.logging-config= + --request.logging-config= Alternative to 'request.logging-config-file' flag (mutually exclusive). Content of YAML file with request logging configuration. See format details: https://thanos.io/tip/thanos/logging.md/#configuration - --request.logging-config-file= + --request.logging-config-file= Path to YAML file with request logging configuration. See format details: https://thanos.io/tip/thanos/logging.md/#configuration - --selector.relabel-config= + --selector.relabel-config= Alternative to 'selector.relabel-config-file' flag (mutually exclusive). Content of YAML file that contains relabeling @@ -166,58 +172,58 @@ Flags: blocks. It follows native Prometheus relabel-config syntax. See format details: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config - --selector.relabel-config-file= + --selector.relabel-config-file= Path to YAML file that contains relabeling configuration that allows selecting blocks. It follows native Prometheus relabel-config syntax. See format details: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config - --store.enable-index-header-lazy-reader + --store.enable-index-header-lazy-reader If true, Store Gateway will lazy memory map index-header only once the block is required by a query. - --store.enable-lazy-expanded-postings + --store.enable-lazy-expanded-postings If true, Store Gateway will estimate postings size and try to lazily expand postings if it downloads less data than expanding all postings. - --store.grpc.downloaded-bytes-limit=0 + --store.grpc.downloaded-bytes-limit=0 Maximum amount of downloaded (either fetched or touched) bytes in a single Series/LabelNames/LabelValues call. The Series call fails if this limit is exceeded. 0 means no limit. - --store.grpc.series-max-concurrency=20 + --store.grpc.series-max-concurrency=20 Maximum number of concurrent Series calls. - --store.grpc.series-sample-limit=0 + --store.grpc.series-sample-limit=0 DEPRECATED: use store.limits.request-samples. - --store.grpc.touched-series-limit=0 + --store.grpc.touched-series-limit=0 DEPRECATED: use store.limits.request-series. - --store.index-header-lazy-download-strategy=eager + --store.index-header-lazy-download-strategy=eager Strategy of how to download index headers lazily. Supported values: eager, lazy. If eager, always download index header during initial load. If lazy, download index header during query time. - --store.limits.request-samples=0 + --store.limits.request-samples=0 The maximum samples allowed for a single Series request, The Series call fails if this limit is exceeded. 0 means no limit. NOTE: For efficiency the limit is internally implemented as 'chunks limit' considering each chunk contains a maximum of 120 samples. - --store.limits.request-series=0 + --store.limits.request-series=0 The maximum series allowed for a single Series request. The Series call fails if this limit is exceeded. 0 means no limit. --sync-block-duration=3m Repeat interval for syncing the blocks between local and remote view. - --tracing.config= + --tracing.config= Alternative to 'tracing.config-file' flag (mutually exclusive). Content of YAML file with tracing configuration. See format details: https://thanos.io/tip/thanos/tracing.md/#configuration - --tracing.config-file= + --tracing.config-file= Path to YAML file with tracing configuration. See format details: https://thanos.io/tip/thanos/tracing.md/#configuration From 2c26ffedc858a2a8b8c6a043af1812798616c3a7 Mon Sep 17 00:00:00 2001 From: Petter Solberg Date: Fri, 29 Dec 2023 12:09:04 +0100 Subject: [PATCH 3/6] Updated changelog with pr 7013 Signed-off-by: Petter Solberg --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0da9148564..23326c90d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,7 @@ We use *breaking :warning:* to mark changes that are not backward compatible (re - [#6943](https://github.com/thanos-io/thanos/pull/6943) Ruler: Added `keep_firing_for` field in alerting rule. - [#6972](https://github.com/thanos-io/thanos/pull/6972) Store Gateway: Apply series limit when streaming series for series actually matched if lazy postings is enabled. - [#6984](https://github.com/thanos-io/thanos/pull/6984) Store Gateway: Added `--store.index-header-lazy-download-strategy` to specify how to lazily download index headers when lazy mmap is enabled. +- [#7013](https://github.com/thanos-io/thanos/pull/7013) Store Gateway: Added `--ignore-deletion-marks-errors` to ignore errors while retrieving deletion marks. ### Changed From 27e9e36591e57e8c6db0262a5843ef8665a505db Mon Sep 17 00:00:00 2001 From: Petter Solberg Date: Fri, 29 Dec 2023 13:10:59 +0100 Subject: [PATCH 4/6] Fixed documentation format error Signed-off-by: Petter Solberg --- docs/components/store.md | 58 ++++++++++++++++++++-------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/docs/components/store.md b/docs/components/store.md index 0683d08b4e..64bc61fa05 100644 --- a/docs/components/store.md +++ b/docs/components/store.md @@ -29,14 +29,14 @@ Store node giving access to blocks in a bucket provider. Now supported GCS, S3, Azure, Swift, Tencent COS and Aliyun OSS. Flags: - --block-meta-fetch-concurrency=32 + --block-meta-fetch-concurrency=32 Number of goroutines to use when fetching block metadata from object storage. - --block-sync-concurrency=20 + --block-sync-concurrency=20 Number of goroutines to use when constructing index-cache.json blocks from object storage. Must be equal or greater than 1. - --bucket-web-label=BUCKET-WEB-LABEL + --bucket-web-label=BUCKET-WEB-LABEL External block label to use as group title in the bucket web UI --cache-index-header Cache TSDB index-headers on disk to reduce @@ -60,19 +60,19 @@ Flags: cause the store to read them. For such use cases use Prometheus + sidecar. Ignored if --no-cache-index-header option is specified. - --grpc-address="0.0.0.0:10901" + --grpc-address="0.0.0.0:10901" Listen ip:port address for gRPC endpoints (StoreAPI). Make sure this address is routable from other components. --grpc-grace-period=2m Time to wait after an interrupt received for GRPC Server. - --grpc-server-max-connection-age=60m + --grpc-server-max-connection-age=60m The grpc server max connection age. This controls how often to re-establish connections and redo TLS handshakes. --grpc-server-tls-cert="" TLS Certificate for gRPC server, leave blank to disable TLS - --grpc-server-tls-client-ca="" + --grpc-server-tls-client-ca="" TLS CA to verify clients against. If no client CA is specified, there is no client verification on server side. (tls.NoClientCert) @@ -80,14 +80,14 @@ Flags: disable TLS -h, --help Show context-sensitive help (also try --help-long and --help-man). - --http-address="0.0.0.0:10902" + --http-address="0.0.0.0:10902" Listen host:port for HTTP endpoints. --http-grace-period=2m Time to wait after an interrupt received for HTTP Server. --http.config="" [EXPERIMENTAL] Path to the configuration file that can enable TLS or authentication for all HTTP endpoints. - --ignore-deletion-marks-delay=24h + --ignore-deletion-marks-delay=24h Duration after which the blocks marked for deletion will be filtered out while fetching blocks. The idea of ignore-deletion-marks-delay @@ -108,7 +108,7 @@ Flags: blocks before being deleted from bucket. Default is 24h, half of the default value for --delete-delay on compactor. - --ignore-deletion-marks-errors + --ignore-deletion-marks-errors If true, Store Gateway will ignore errors while trying to fetch and parse deletion-marks. This is desirable if the storage provider @@ -117,54 +117,54 @@ Flags: --index-cache-size=250MB Maximum size of items held in the in-memory index cache. Ignored if --index-cache.config or --index-cache.config-file option is specified. - --index-cache.config= + --index-cache.config= Alternative to 'index-cache.config-file' flag (mutually exclusive). Content of YAML file that contains index cache configuration. See format details: https://thanos.io/tip/components/store.md/#index-cache - --index-cache.config-file= + --index-cache.config-file= Path to YAML file that contains index cache configuration. See format details: https://thanos.io/tip/components/store.md/#index-cache --log.format=logfmt Log format to use. Possible options: logfmt or json. --log.level=info Log filtering level. - --max-time=9999-12-31T23:59:59Z + --max-time=9999-12-31T23:59:59Z End of time range limit to serve. Thanos Store will serve only blocks, which happened earlier than this value. Option can be a constant time in RFC3339 format or time duration relative to current time, such as -1d or 2h45m. Valid duration units are ms, s, m, h, d, w, y. - --min-time=0000-01-01T00:00:00Z + --min-time=0000-01-01T00:00:00Z Start of time range limit to serve. Thanos Store will serve only metrics, which happened later than this value. Option can be a constant time in RFC3339 format or time duration relative to current time, such as -1d or 2h45m. Valid duration units are ms, s, m, h, d, w, y. - --objstore.config= + --objstore.config= Alternative to 'objstore.config-file' flag (mutually exclusive). Content of YAML file that contains object store configuration. See format details: https://thanos.io/tip/thanos/storage.md/#configuration - --objstore.config-file= + --objstore.config-file= Path to YAML file that contains object store configuration. See format details: https://thanos.io/tip/thanos/storage.md/#configuration - --request.logging-config= + --request.logging-config= Alternative to 'request.logging-config-file' flag (mutually exclusive). Content of YAML file with request logging configuration. See format details: https://thanos.io/tip/thanos/logging.md/#configuration - --request.logging-config-file= + --request.logging-config-file= Path to YAML file with request logging configuration. See format details: https://thanos.io/tip/thanos/logging.md/#configuration - --selector.relabel-config= + --selector.relabel-config= Alternative to 'selector.relabel-config-file' flag (mutually exclusive). Content of YAML file that contains relabeling @@ -172,32 +172,32 @@ Flags: blocks. It follows native Prometheus relabel-config syntax. See format details: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config - --selector.relabel-config-file= + --selector.relabel-config-file= Path to YAML file that contains relabeling configuration that allows selecting blocks. It follows native Prometheus relabel-config syntax. See format details: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config - --store.enable-index-header-lazy-reader + --store.enable-index-header-lazy-reader If true, Store Gateway will lazy memory map index-header only once the block is required by a query. - --store.enable-lazy-expanded-postings + --store.enable-lazy-expanded-postings If true, Store Gateway will estimate postings size and try to lazily expand postings if it downloads less data than expanding all postings. - --store.grpc.downloaded-bytes-limit=0 + --store.grpc.downloaded-bytes-limit=0 Maximum amount of downloaded (either fetched or touched) bytes in a single Series/LabelNames/LabelValues call. The Series call fails if this limit is exceeded. 0 means no limit. - --store.grpc.series-max-concurrency=20 + --store.grpc.series-max-concurrency=20 Maximum number of concurrent Series calls. - --store.grpc.series-sample-limit=0 + --store.grpc.series-sample-limit=0 DEPRECATED: use store.limits.request-samples. - --store.grpc.touched-series-limit=0 + --store.grpc.touched-series-limit=0 DEPRECATED: use store.limits.request-series. --store.index-header-lazy-download-strategy=eager Strategy of how to download index headers @@ -205,25 +205,25 @@ Flags: If eager, always download index header during initial load. If lazy, download index header during query time. - --store.limits.request-samples=0 + --store.limits.request-samples=0 The maximum samples allowed for a single Series request, The Series call fails if this limit is exceeded. 0 means no limit. NOTE: For efficiency the limit is internally implemented as 'chunks limit' considering each chunk contains a maximum of 120 samples. - --store.limits.request-series=0 + --store.limits.request-series=0 The maximum series allowed for a single Series request. The Series call fails if this limit is exceeded. 0 means no limit. --sync-block-duration=3m Repeat interval for syncing the blocks between local and remote view. - --tracing.config= + --tracing.config= Alternative to 'tracing.config-file' flag (mutually exclusive). Content of YAML file with tracing configuration. See format details: https://thanos.io/tip/thanos/tracing.md/#configuration - --tracing.config-file= + --tracing.config-file= Path to YAML file with tracing configuration. See format details: https://thanos.io/tip/thanos/tracing.md/#configuration From 6e9c90447770212c84eeb6e673667821d28534ae Mon Sep 17 00:00:00 2001 From: Petter Solberg Date: Fri, 29 Dec 2023 13:12:44 +0100 Subject: [PATCH 5/6] Fixed documentation format error Signed-off-by: Petter Solberg --- docs/components/store.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/components/store.md b/docs/components/store.md index 64bc61fa05..8be00aece0 100644 --- a/docs/components/store.md +++ b/docs/components/store.md @@ -199,7 +199,7 @@ Flags: DEPRECATED: use store.limits.request-samples. --store.grpc.touched-series-limit=0 DEPRECATED: use store.limits.request-series. - --store.index-header-lazy-download-strategy=eager + --store.index-header-lazy-download-strategy=eager Strategy of how to download index headers lazily. Supported values: eager, lazy. If eager, always download index header during From bcae744ad6cacfa785ecb5d6c3ab24c2bd2b69f9 Mon Sep 17 00:00:00 2001 From: Petter Solberg Date: Fri, 29 Dec 2023 13:29:09 +0100 Subject: [PATCH 6/6] Rerun ci Signed-off-by: Petter Solberg