Skip to content

Commit 6e42b48

Browse files
committed
bring in prometheus/parquet-common code to new package (#11490)
* bring in prometheus/parquet-common code to new package; replace efficient-go errors with pkg/errors; satisfy mimir-prometheus ChunkSeries interface * revert breaking upgrade to thanos/objstore * fix test require * attempt to update go version for strange errors * fix stringlabels issues * update license headers with AGPL and upstream attribution * fix errors.Is lints fix errors.Is lints * fix sort and cancel cause lints * correct go.mod & vendor in from main to solve conflicts * use env var to flag parquet promql acceptance * fix deps from main again * fix deps from main again * fix deps from main again * fix deps from main again implement new parquet-converter service (#11499) * bring in parquet-converter from parquet-mimir PoC * make docs * make reference-help * stop using the compactor's config * remove BlockRanges config, convert all levels of blocks * drop unused BlockWithExtension struct * rename ownBlock to own * move index fetch outside of for loop * lowercase logs * wording: compact => convert * some cleanup * skip blocks for which compaction mark failed download * simplfy convertBlock function * cleanup * Write Compact Mark * remove parquetIndex, we don't neeed it yet at least * use MetaFetcher to discover blocks * make reference-help and mark as experimental * cleanup: we don't need indexes anymore * revert index loader changes * basic TestParquetConverter * make reference-help * lint * happy linter * make docs * fix: correctly initialize memerlist KV for parquet converter * lint: sort lines * more wording fixes: compact => convert * licence header * version 1 * remove parquet-converter from 'backend' and 'all' modules it's experimental and meant to be run alone * address docs feedback * remove unused consts * increase timeout for a test TestPartitionReader_ShouldNotMissRecordsIfKafkaReturnsAFetchBothWithAnErrorAndSomeRecords parquet-converter: Introduce metrics and ring test (#11600) * parquet-converter: Introduce metrics and ring test This commit introduces a ring test to verify that sharding is working as expected. It also introduces metrics to measure total conversions, failures and durations. Signed-off-by: Jesus Vazquez <jesus.vazquez@grafana.com> converter: proper error handling to measure failures parquet converter in docker compose (#11633) * add parquet-converter to docker-compose microservices setup * format jsonnet fix(parquet converter): close TSDB block after conversion (#11635) parquet: vendor back from parquet-common (#11644) introduce store-gateway.parquet-enabled flag & docs (#11722) upgrade prometheus parquet-common dependency (#11723) parquet store-gateways introduce stores interface (#11724) * declare Stores interface satisfied by BucketStores and future Parquet store * add casts to for uses of existing impl which are not protected by interface * stub out parquet bucket stores implementation * most minimal initialization of Parquet Bucket Stores when flag is enabled * license header parquet: Scaffolding for parquet bucket store Series() (#11729) * parquet: Scaffolding for parquet bucket store * use parquetshardopener and be sure to close them * gci pkg/storegateway/parquet_bucket_stores.go Signed-off-by: Jesus Vazquez <jesus.vazquez@grafana.com> --------- Signed-off-by: Jesus Vazquez <jesus.vazquez@grafana.com> fix split between Parquet Stores and each tenant's Store (#11735) fix split between Parquet Stores and each tenant's Store parquet store-gateways blocks sync and lazy reader (#11759) parquet-bucket-store: finish implementing Stores interface (#11772) We're trying to mirror the existing bucket store structure for the parquet implementation and in this PR i'm just trying to implement some of the necessary methods starting with building up the series sets for labels calls. - Series - LabelNames - LabelValues --------- Signed-off-by: Jesus Vazquez <jesus.vazquez@grafana.com> Signed-off-by: Nicolás Pazos <npazosmendez@gmail.com> Co-authored-by: Nicolas Pazos <nicolas.pazos-mendez@grafana.com> Co-authored-by: Nicolás Pazos <npazosmendez@gmail.com> fix(parquet): share `ReaderPoolMetrics` instance (#11851) We create multiple instances of `ReaderPool`, passing the registry and creating the metrics on the fly causes panics. fix(parquet store gateway): close things that should be closed (#11865) feat(parquet store gateway): support download labels file without validating (#11866) Signed-off-by: Nicolás Pazos <npazosmendez@gmail.com> Co-authored-by: francoposa <franco@francoposa.io> fix(parquet store gateway): pass blockReader to bucket block constructor (#11875) fix: don't stop nil services fix(parquet store gateways): correctly locate labels parquet files locally (#11894) parquet bucket store: add some debug logging (#11925) Adding few log statements to the existing code path with useful information to understand when and why we are returning 0 series. Signed-off-by: Jesus Vazquez <jesus.vazquez@grafana.com> parquet store gateways: several fixes and basic tests (#11929) Co-authored-by: francoposa <franco@francoposa.io> Co-authored-by: Jesus Vazquez <jesus.vazquez@grafana.com> parquet converter: include user id in converter counter metrics (#11966) Adding user id to the converter metrics to better track converter progress through tenants. Signed-off-by: Jesus Vazquez <jesus.vazquez@grafana.com> Parquet converter: Implement priority queue for block conversion (#11980) This PR redesigns the parquet converter to use a non-blocking priority queue that prioritises recently uploaded blocks for conversion. * Priority Queue Implementation: - Replaces blocking nested loops with a thread-safe priority queue using container/heap - Blocks are prioritized by ULID timestamp, ensuring older blocks are processed first * Separate block discovery: - There is a new discovery goroutine that periodically discovers users and blocks, enqueuing them for processing - If the block was previously processed it will be marked as converted and skipped the next time its discovered. - There is a new configuration flag `parquet-converter.max-block-age` that allows us to have a rolling window of blocks so we dont queue up all the work at once. We can set this to 30 days and only blocks up to 30 days old will be converted, when the work is completed we can go and increase that window again. - There is a new processing goroutine that continuously consumes from the priority queue and converts blocks - Main Loop remains responsive and handles only service lifecycle events * New metrics - Since we added a priority queue, I added 5 new metrics for queue monitoring: - cortex_parquet_converter_queue_size - Current queue depth - cortex_parquet_converter_queue_wait_time_seconds - Time blocks spend queued - cortex_parquet_converter_queue_items_enqueued_total - Total blocks enqueued - cortex_parquet_converter_queue_items_processed_total - Total blocks processed - cortex_parquet_converter_queue_items_dropped_total - Total blocks dropped when queue closed The idea here is that by looking at the queue metrics we can have an idea of how much scaling up we need to deal with the pending work. Also, before this PR we had no idea of how much work was left to be done but now we will. --------- Signed-off-by: Jesus Vazquez <jesus.vazquez@grafana.com> fix(parquet store gateway): obey query sharding matchers (#12018) Inefficient, but at least correct query sharding. The new test on sharding fails on the base branch. It's not trivial to add caching to the hashes like the main path does, because we don't have a `SeriesRef` to use as a cache key at the block level (to match what the main path does). We could in theory use something like the row number in the parquet file, but we don't have easy access to that in this part of the code. In any case, the priority right now is correctness, we'll work on optimizing later as appropriate. For referece, see how query sharding is handled on the main path: https://github.com/grafana/mimir/blob/604775d447c0a9e893fa6930ef8f2d403ebe6757/pkg/storegateway/series_refs.go#L1021-L1047 fix(parquet store gateway): panic in Series call with SkipChunks (#12020) `chunksIt` is `nil` when `SkipChunks` is `true`. parquet-converter debug log messages (#12021) Co-authored-by: Jesus Vazquez <jesus.vazquez@grafana.com> chore(parquet): Bump parquet-common dependency (#12023) Brings the last commit from parquet-common [0811a700a852759c16799358b4424d9888afec3f](prometheus-community/parquet-common@0811a70) See link for the diff between the two commits prometheus-community/parquet-common@76512c6...0811a70 --------- Co-authored-by: francoposa <franco@francoposa.io> feature(parquet): Implement store-gateway limits (#12040) This PR is based on the upstream work prometheus-community/parquet-common#81 The idea is to implement a set of basic quota limiters that can protect us against potential bad queries for the gateways. Note we had to bring bits of the code available in the querier in upstream because we have our own chunk querier in Mimir. --------- Signed-off-by: Jesus Vazquez <jesus.vazquez@grafana.com>
1 parent e577b58 commit 6e42b48

File tree

341 files changed

+317781
-19
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

341 files changed

+317781
-19
lines changed

cmd/mimir/config-descriptor.json

Lines changed: 556 additions & 0 deletions
Large diffs are not rendered by default.

cmd/mimir/help-all.txt.tmpl

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -609,6 +609,12 @@ Usage of ./cmd/mimir/mimir:
609609
How long to cache list of blocks for each tenant. (default 5m0s)
610610
-blocks-storage.bucket-store.metadata-cache.tenants-list-ttl duration
611611
How long to cache list of tenants in the bucket. (default 15m0s)
612+
-blocks-storage.bucket-store.parquet-max-chunk-size-bytes uint
613+
Maximum size in bytes that can be fetched from the parquet chunks file. If the size exceeds this value the query will stop with limit error.
614+
-blocks-storage.bucket-store.parquet-max-data-size-bytes uint
615+
Maximum size in bytes that can be fetched from the parquet labels and chunks data files combined in a single query. If the size exceeds this value the query will stop with limit error.
616+
-blocks-storage.bucket-store.parquet-max-row-count uint
617+
Maximum number of rows in a parquet file. If the number of rows exceeds this value the query will stop with limit error.
612618
-blocks-storage.bucket-store.partitioner-max-gap-bytes uint
613619
Max size - in bytes - of a gap for which the partitioner aggregates together two bucket GET object requests. (default 524288)
614620
-blocks-storage.bucket-store.posting-offsets-in-mem-sampling int
@@ -1969,6 +1975,90 @@ Usage of ./cmd/mimir/mimir:
19691975
Maximum time to wait for ring stability at startup. If the overrides-exporter ring keeps changing after this period of time, it will start anyway. (default 5m0s)
19701976
-overrides-exporter.ring.wait-stability-min-duration duration
19711977
Minimum time to wait for ring stability at startup, if set to positive value. Set to 0 to disable.
1978+
-parquet-converter.conversion-interval duration
1979+
The frequency at which the conversion runs. (default 1m0s)
1980+
-parquet-converter.data-dir string
1981+
Directory to temporarily store blocks during conversion. This directory is not required to persist between restarts. (default "./data-parquet-converter/")
1982+
-parquet-converter.disabled-tenants comma-separated-list-of-strings
1983+
Comma-separated list of tenants that cannot have their TSDB blocks converted into Parquet. If specified, and the Parquet-converter would normally pick a given tenant to convert the blocks to Parquet (via -parquet-converter.enabled-tenants or sharding), it is ignored instead.
1984+
-parquet-converter.discovery-interval duration
1985+
The frequency at which user and block discovery runs. (default 5m0s)
1986+
-parquet-converter.enabled-tenants comma-separated-list-of-strings
1987+
Comma-separated list of tenants that can have their TSDB blocks converted into Parquet. If specified, the Parquet-converter only converts these tenants. Otherwise, it converts all tenants. Subject to sharding.
1988+
-parquet-converter.max-block-age duration
1989+
Maximum age of blocks to convert. Blocks older than this will be skipped. Set to 0 to disable age filtering.
1990+
-parquet-converter.ring.consul.acl-token string
1991+
ACL Token used to interact with Consul.
1992+
-parquet-converter.ring.consul.cas-retry-delay duration
1993+
Maximum duration to wait before retrying a Compare And Swap (CAS) operation. (default 1s)
1994+
-parquet-converter.ring.consul.client-timeout duration
1995+
HTTP timeout when talking to Consul (default 20s)
1996+
-parquet-converter.ring.consul.consistent-reads
1997+
Enable consistent reads to Consul.
1998+
-parquet-converter.ring.consul.hostname string
1999+
Hostname and port of Consul. (default "localhost:8500")
2000+
-parquet-converter.ring.consul.watch-burst-size int
2001+
Burst size used in rate limit. Values less than 1 are treated as 1. (default 1)
2002+
-parquet-converter.ring.consul.watch-rate-limit float
2003+
Rate limit when watching key or prefix in Consul, in requests per second. 0 disables the rate limit. (default 1)
2004+
-parquet-converter.ring.etcd.dial-timeout duration
2005+
The dial timeout for the etcd connection. (default 10s)
2006+
-parquet-converter.ring.etcd.endpoints string
2007+
The etcd endpoints to connect to.
2008+
-parquet-converter.ring.etcd.max-retries int
2009+
The maximum number of retries to do for failed ops. (default 10)
2010+
-parquet-converter.ring.etcd.password string
2011+
Etcd password.
2012+
-parquet-converter.ring.etcd.tls-ca-path string
2013+
Path to the CA certificates to validate server certificate against. If not set, the host's root CA certificates are used.
2014+
-parquet-converter.ring.etcd.tls-cert-path string
2015+
Path to the client certificate, which will be used for authenticating with the server. Also requires the key path to be configured.
2016+
-parquet-converter.ring.etcd.tls-cipher-suites string
2017+
Override the default cipher suite list (separated by commas).
2018+
-parquet-converter.ring.etcd.tls-enabled
2019+
Enable TLS.
2020+
-parquet-converter.ring.etcd.tls-insecure-skip-verify
2021+
Skip validating server certificate.
2022+
-parquet-converter.ring.etcd.tls-key-path string
2023+
Path to the key for the client certificate. Also requires the client certificate to be configured.
2024+
-parquet-converter.ring.etcd.tls-min-version string
2025+
Override the default minimum TLS version. Allowed values: VersionTLS10, VersionTLS11, VersionTLS12, VersionTLS13
2026+
-parquet-converter.ring.etcd.tls-server-name string
2027+
Override the expected name on the server certificate.
2028+
-parquet-converter.ring.etcd.username string
2029+
Etcd username.
2030+
-parquet-converter.ring.heartbeat-period duration
2031+
Period at which to heartbeat to the ring. 0 = disabled. (default 15s)
2032+
-parquet-converter.ring.heartbeat-timeout duration
2033+
The heartbeat timeout after which parquet-converters are considered unhealthy within the ring. 0 = never (timeout disabled). (default 1m0s)
2034+
-parquet-converter.ring.instance-addr string
2035+
IP address to advertise in the ring. Default is auto-detected.
2036+
-parquet-converter.ring.instance-enable-ipv6
2037+
Enable using a IPv6 instance address. (default false)
2038+
-parquet-converter.ring.instance-id string
2039+
Instance ID to register in the ring. (default "<hostname>")
2040+
-parquet-converter.ring.instance-interface-names string
2041+
List of network interface names to look up when finding the instance IP address. (default [<private network interfaces>])
2042+
-parquet-converter.ring.instance-port int
2043+
Port to advertise in the ring (defaults to -server.grpc-listen-port).
2044+
-parquet-converter.ring.multi.mirror-enabled
2045+
Mirror writes to secondary store.
2046+
-parquet-converter.ring.multi.mirror-timeout duration
2047+
Timeout for storing value to secondary store. (default 2s)
2048+
-parquet-converter.ring.multi.primary string
2049+
Primary backend storage used by multi-client.
2050+
-parquet-converter.ring.multi.secondary string
2051+
Secondary backend storage used by multi-client.
2052+
-parquet-converter.ring.prefix string
2053+
The prefix for the keys in the store. Should end with a /. (default "parquet-converters/")
2054+
-parquet-converter.ring.store string
2055+
Backend storage to use for the ring. Supported values are: consul, etcd, inmemory, memberlist, multi. (default "memberlist")
2056+
-parquet-converter.ring.wait-active-instance-timeout duration
2057+
Timeout for waiting on Parquet-converter to become ACTIVE in the ring. (default 10m0s)
2058+
-parquet-converter.ring.wait-stability-max-duration duration
2059+
Maximum time to wait for ring stability at startup. If the Parquet-converter ring keeps changing after this period of time, the Parquet-converter starts anyway. (default 5m0s)
2060+
-parquet-converter.ring.wait-stability-min-duration duration
2061+
Minimum time to wait for ring stability at startup. Set to 0 to disable.
19722062
-print.config
19732063
Print the config and exit.
19742064
-querier.active-series-results-max-size-bytes int
@@ -3109,6 +3199,8 @@ Usage of ./cmd/mimir/mimir:
31093199
[experimental] Multiple of the default replication factor that should be used for recent blocks. Minimum value is 2 (default 2)
31103200
-store-gateway.enabled-tenants comma-separated-list-of-strings
31113201
Comma separated list of tenants that can be loaded by the store-gateway. If specified, only blocks for these tenants will be loaded by the store-gateway, otherwise all tenants can be loaded. Subject to sharding.
3202+
-store-gateway.parquet-enabled
3203+
[experimental] Whether to query Parquet files for block instead of the native Prometheus TSDB files.
31123204
-store-gateway.sharding-ring.auto-forget-enabled
31133205
[deprecated] When enabled, a store-gateway is automatically removed from the ring after failing to heartbeat the ring for a period longer than the configured -store-gateway.sharding-ring.auto-forget-unhealthy-periods times the configured -store-gateway.sharding-ring.heartbeat-timeout. This setting is deprecated. Set -store-gateway.sharding-ring.auto-forget-unhealthy-periods to 0 to disable auto-forget. (default true)
31143206
-store-gateway.sharding-ring.auto-forget-unhealthy-periods int

cmd/mimir/help.txt.tmpl

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -543,6 +543,26 @@ Usage of ./cmd/mimir/mimir:
543543
List of network interface names to look up when finding the instance IP address. (default [<private network interfaces>])
544544
-overrides-exporter.ring.store string
545545
Backend storage to use for the ring. Supported values are: consul, etcd, inmemory, memberlist, multi. (default "memberlist")
546+
-parquet-converter.conversion-interval duration
547+
The frequency at which the conversion runs. (default 1m0s)
548+
-parquet-converter.data-dir string
549+
Directory to temporarily store blocks during conversion. This directory is not required to persist between restarts. (default "./data-parquet-converter/")
550+
-parquet-converter.discovery-interval duration
551+
The frequency at which user and block discovery runs. (default 5m0s)
552+
-parquet-converter.max-block-age duration
553+
Maximum age of blocks to convert. Blocks older than this will be skipped. Set to 0 to disable age filtering.
554+
-parquet-converter.ring.consul.hostname string
555+
Hostname and port of Consul. (default "localhost:8500")
556+
-parquet-converter.ring.etcd.endpoints string
557+
The etcd endpoints to connect to.
558+
-parquet-converter.ring.etcd.password string
559+
Etcd password.
560+
-parquet-converter.ring.etcd.username string
561+
Etcd username.
562+
-parquet-converter.ring.instance-interface-names string
563+
List of network interface names to look up when finding the instance IP address. (default [<private network interfaces>])
564+
-parquet-converter.ring.store string
565+
Backend storage to use for the ring. Supported values are: consul, etcd, inmemory, memberlist, multi. (default "memberlist")
546566
-print.config
547567
Print the config and exit.
548568
-querier.cardinality-analysis-enabled

development/mimir-microservices-mode/docker-compose.jsonnet

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ std.manifestYamlDoc({
3535

3636
// If true, a query-tee instance with a single backend is started.
3737
enable_query_tee: false,
38+
39+
// If true, start parquet-converter
40+
enable_parquet: false,
3841
},
3942

4043
// We explicitely list all important services here, so that it's easy to disable them by commenting out.
@@ -44,6 +47,7 @@ std.manifestYamlDoc({
4447
self.read_components + // Querier, Frontend and query-scheduler, if enabled.
4548
self.store_gateways(3) +
4649
self.compactor +
50+
(if $._config.enable_parquet then self.parquet_converter else {}) +
4751
self.rulers(2) +
4852
self.alertmanagers(3) +
4953
self.nginx +
@@ -142,6 +146,14 @@ std.manifestYamlDoc({
142146
}),
143147
},
144148

149+
parquet_converter:: {
150+
'parquet-converter': mimirService({
151+
name: 'parquet-converter',
152+
target: 'parquet-converter',
153+
httpPort: 8040,
154+
}),
155+
},
156+
145157
rulers(count):: if count <= 0 then {} else {
146158
['ruler-%d' % id]: mimirService({
147159
name: 'ruler-' + id,
@@ -170,6 +182,8 @@ std.manifestYamlDoc({
170182
target: 'store-gateway',
171183
httpPort: 8010 + id,
172184
jaegerApp: 'store-gateway-%d' % id,
185+
extraArguments:
186+
if $._config.enable_parquet then '-store-gateway.parquet-enabled=true' else '',
173187
})
174188
for id in std.range(1, count)
175189
},

docs/sources/mimir/configure/configuration-parameters/index.md

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -453,6 +453,124 @@ overrides_exporter:
453453
# CLI flag: -overrides-exporter.enabled-metrics
454454
[enabled_metrics: <string> | default = "ingestion_rate,ingestion_burst_size,max_global_series_per_user,max_global_series_per_metric,max_global_exemplars_per_user,max_fetched_chunks_per_query,max_fetched_series_per_query,max_fetched_chunk_bytes_per_query,ruler_max_rules_per_rule_group,ruler_max_rule_groups_per_tenant"]
455455

456+
parquet_converter:
457+
# (advanced) Comma-separated list of tenants that can have their TSDB blocks
458+
# converted into Parquet. If specified, the Parquet-converter only converts
459+
# these tenants. Otherwise, it converts all tenants. Subject to sharding.
460+
# CLI flag: -parquet-converter.enabled-tenants
461+
[enabled_tenants: <string> | default = ""]
462+
463+
# (advanced) Comma-separated list of tenants that cannot have their TSDB
464+
# blocks converted into Parquet. If specified, and the Parquet-converter would
465+
# normally pick a given tenant to convert the blocks to Parquet (via
466+
# -parquet-converter.enabled-tenants or sharding), it is ignored instead.
467+
# CLI flag: -parquet-converter.disabled-tenants
468+
[disabled_tenants: <string> | default = ""]
469+
470+
# Directory to temporarily store blocks during conversion. This directory is
471+
# not required to persist between restarts.
472+
# CLI flag: -parquet-converter.data-dir
473+
[data_dir: <string> | default = "./data-parquet-converter/"]
474+
475+
# The frequency at which the conversion runs.
476+
# CLI flag: -parquet-converter.conversion-interval
477+
[conversion_interval: <duration> | default = 1m]
478+
479+
# The frequency at which user and block discovery runs.
480+
# CLI flag: -parquet-converter.discovery-interval
481+
[discovery_interval: <duration> | default = 5m]
482+
483+
# Maximum age of blocks to convert. Blocks older than this will be skipped.
484+
# Set to 0 to disable age filtering.
485+
# CLI flag: -parquet-converter.max-block-age
486+
[max_block_age: <duration> | default = 0s]
487+
488+
sharding_ring:
489+
# The key-value store used to share the hash ring across multiple instances.
490+
kvstore:
491+
# Backend storage to use for the ring. Supported values are: consul, etcd,
492+
# inmemory, memberlist, multi.
493+
# CLI flag: -parquet-converter.ring.store
494+
[store: <string> | default = "memberlist"]
495+
496+
# (advanced) The prefix for the keys in the store. Should end with a /.
497+
# CLI flag: -parquet-converter.ring.prefix
498+
[prefix: <string> | default = "parquet-converters/"]
499+
500+
# The consul block configures the consul client.
501+
# The CLI flags prefix for this block configuration is:
502+
# parquet-converter.ring
503+
[consul: <consul>]
504+
505+
# The etcd block configures the etcd client.
506+
# The CLI flags prefix for this block configuration is:
507+
# parquet-converter.ring
508+
[etcd: <etcd>]
509+
510+
multi:
511+
# (advanced) Primary backend storage used by multi-client.
512+
# CLI flag: -parquet-converter.ring.multi.primary
513+
[primary: <string> | default = ""]
514+
515+
# (advanced) Secondary backend storage used by multi-client.
516+
# CLI flag: -parquet-converter.ring.multi.secondary
517+
[secondary: <string> | default = ""]
518+
519+
# (advanced) Mirror writes to secondary store.
520+
# CLI flag: -parquet-converter.ring.multi.mirror-enabled
521+
[mirror_enabled: <boolean> | default = false]
522+
523+
# (advanced) Timeout for storing value to secondary store.
524+
# CLI flag: -parquet-converter.ring.multi.mirror-timeout
525+
[mirror_timeout: <duration> | default = 2s]
526+
527+
# (advanced) Period at which to heartbeat to the ring. 0 = disabled.
528+
# CLI flag: -parquet-converter.ring.heartbeat-period
529+
[heartbeat_period: <duration> | default = 15s]
530+
531+
# (advanced) The heartbeat timeout after which parquet-converters are
532+
# considered unhealthy within the ring. 0 = never (timeout disabled).
533+
# CLI flag: -parquet-converter.ring.heartbeat-timeout
534+
[heartbeat_timeout: <duration> | default = 1m]
535+
536+
# (advanced) Instance ID to register in the ring.
537+
# CLI flag: -parquet-converter.ring.instance-id
538+
[instance_id: <string> | default = "<hostname>"]
539+
540+
# List of network interface names to look up when finding the instance IP
541+
# address.
542+
# CLI flag: -parquet-converter.ring.instance-interface-names
543+
[instance_interface_names: <list of strings> | default = [<private network interfaces>]]
544+
545+
# (advanced) Port to advertise in the ring (defaults to
546+
# -server.grpc-listen-port).
547+
# CLI flag: -parquet-converter.ring.instance-port
548+
[instance_port: <int> | default = 0]
549+
550+
# (advanced) IP address to advertise in the ring. Default is auto-detected.
551+
# CLI flag: -parquet-converter.ring.instance-addr
552+
[instance_addr: <string> | default = ""]
553+
554+
# (advanced) Enable using a IPv6 instance address. (default false)
555+
# CLI flag: -parquet-converter.ring.instance-enable-ipv6
556+
[instance_enable_ipv6: <boolean> | default = false]
557+
558+
# (advanced) Minimum time to wait for ring stability at startup. Set to 0 to
559+
# disable.
560+
# CLI flag: -parquet-converter.ring.wait-stability-min-duration
561+
[wait_stability_min_duration: <duration> | default = 0s]
562+
563+
# (advanced) Maximum time to wait for ring stability at startup. If the
564+
# Parquet-converter ring keeps changing after this period of time, the
565+
# Parquet-converter starts anyway.
566+
# CLI flag: -parquet-converter.ring.wait-stability-max-duration
567+
[wait_stability_max_duration: <duration> | default = 5m]
568+
569+
# (advanced) Timeout for waiting on Parquet-converter to become ACTIVE in
570+
# the ring.
571+
# CLI flag: -parquet-converter.ring.wait-active-instance-timeout
572+
[wait_active_instance_timeout: <duration> | default = 10m]
573+
456574
# The common block holds configurations that configure multiple components at a
457575
# time.
458576
[common: <common>]
@@ -2931,6 +3049,7 @@ The `etcd` block configures the etcd client. The supported CLI flags `<prefix>`
29313049
- `ingester.partition-ring`
29323050
- `ingester.ring`
29333051
- `overrides-exporter.ring`
3052+
- `parquet-converter.ring`
29343053
- `query-scheduler.ring`
29353054
- `ruler.ring`
29363055
- `store-gateway.sharding-ring`
@@ -3036,6 +3155,7 @@ The `consul` block configures the consul client. The supported CLI flags `<prefi
30363155
- `ingester.partition-ring`
30373156
- `ingester.ring`
30383157
- `overrides-exporter.ring`
3158+
- `parquet-converter.ring`
30393159
- `query-scheduler.ring`
30403160
- `ruler.ring`
30413161
- `store-gateway.sharding-ring`
@@ -4774,6 +4894,22 @@ bucket_store:
47744894
# CLI flag: -blocks-storage.bucket-store.series-fetch-preference
47754895
[series_fetch_preference: <float> | default = 0.75]
47764896
4897+
# (advanced) Maximum number of rows in a parquet file. If the number of rows
4898+
# exceeds this value the query will stop with limit error.
4899+
# CLI flag: -blocks-storage.bucket-store.parquet-max-row-count
4900+
[parquet_max_row_count: <int> | default = 0]
4901+
4902+
# (advanced) Maximum size in bytes that can be fetched from the parquet chunks
4903+
# file. If the size exceeds this value the query will stop with limit error.
4904+
# CLI flag: -blocks-storage.bucket-store.parquet-max-chunk-size-bytes
4905+
[parquet_max_chunk_size_bytes: <int> | default = 0]
4906+
4907+
# (advanced) Maximum size in bytes that can be fetched from the parquet labels
4908+
# and chunks data files combined in a single query. If the size exceeds this
4909+
# value the query will stop with limit error.
4910+
# CLI flag: -blocks-storage.bucket-store.parquet-max-data-size-bytes
4911+
[parquet_max_data_size_bytes: <int> | default = 0]
4912+
47774913
tsdb:
47784914
# Directory to store TSDBs (including WAL) in the ingesters. This directory is
47794915
# required to be persisted between restarts.
@@ -5369,6 +5505,11 @@ dynamic_replication:
53695505
# ignored instead.
53705506
# CLI flag: -store-gateway.disabled-tenants
53715507
[disabled_tenants: <string> | default = ""]
5508+
5509+
# (experimental) Whether to query Parquet files for block instead of the native
5510+
# Prometheus TSDB files.
5511+
# CLI flag: -store-gateway.parquet-enabled
5512+
[parquet_enabled: <boolean> | default = false]
53725513
```
53735514

53745515
### memcached

0 commit comments

Comments
 (0)