Skip to content

Commit 926a691

Browse files
mdisibiocstyanpstibrany
authored
Support ingesting exemplars into TSDB when blocks storage is enabled (cortexproject#4124)
* Add experimental support for ingesting exemplars from remote write into tsdb when blocks storage is enabled. Signed-off-by: Martin Disibio <mdisibio@gmail.com> * Comment for clarity Signed-off-by: Martin Disibio <mdisibio@gmail.com> * Skip entire exemplar loop if series ref missing Signed-off-by: Martin Disibio <mdisibio@gmail.com> * Add exemplar metrics for distributor received/in and validation discarded per reason Signed-off-by: Martin Disibio <mdisibio@gmail.com> * Fix spacing Signed-off-by: Martin Disibio <mdisibio@gmail.com> * Comments Signed-off-by: Martin Disibio <mdisibio@gmail.com> * Don't alloc empty sample slice when validating series with only exemplars Signed-off-by: Martin Disibio <mdisibio@gmail.com> * Track exemplars that can't be ingested due to missing ref as failed Signed-off-by: Martin Disibio <mdisibio@gmail.com> * Address some review comments. Signed-off-by: Callum Styan <callumstyan@gmail.com> * Address more review comments. Signed-off-by: Callum Styan <callumstyan@gmail.com> * Update ingester tests for new exemplar metric names Signed-off-by: Martin Disibio <mdisibio@gmail.com> * make doc for new max_exemplars Signed-off-by: Martin Disibio <mdisibio@gmail.com> * Update distributor validation messages and comments based on feedback. Count runes in exemplar labels instead of bytes Signed-off-by: Martin Disibio <mdisibio@gmail.com> * Convert some exemplar metrics to global instead of per-user based on feedback about limiting cardinality. Update other code formatting and logic based on review feedback Signed-off-by: Martin Disibio <mdisibio@gmail.com> * Update pkg/util/validation/errors.go Simplify string formatting Co-authored-by: Peter Štibraný <peter.stibrany@grafana.com> Signed-off-by: Martin Disibio <mdisibio@gmail.com> * Add test cases based on review comments Signed-off-by: Martin Disibio <mdisibio@gmail.com> * Update changelog Signed-off-by: Martin Disibio <mdisibio@gmail.com> Co-authored-by: Callum Styan <callumstyan@gmail.com> Co-authored-by: Peter Štibraný <peter.stibrany@grafana.com>
1 parent 5d55a28 commit 926a691

19 files changed

+1124
-60
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
* `cortex_alertmanager_state_initial_sync_duration_seconds`
1616
* `cortex_alertmanager_state_persist_total`
1717
* `cortex_alertmanager_state_persist_failed_total`
18+
* [ENHANCEMENT] Blocks storage: support ingesting exemplars. Enabled by setting new CLI flag `-blocks-storage.tsdb.max-exemplars=<n>` or config option `blocks_storage.tsdb.max_exemplars` to positive value. #4124
1819
* [BUGFIX] Purger: fix `Invalid null value in condition for column range` caused by `nil` value in range for WriteBatch query. #4128
1920

2021
## 1.9.0 in progress

docs/blocks-storage/querier.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -806,4 +806,9 @@ blocks_storage:
806806
# limit the number of concurrently opening TSDB's on startup
807807
# CLI flag: -blocks-storage.tsdb.max-tsdb-opening-concurrency-on-startup
808808
[max_tsdb_opening_concurrency_on_startup: <int> | default = 10]
809+
810+
# Enables support for exemplars in TSDB and sets the maximum number that
811+
# will be stored. 0 or less means disabled.
812+
# CLI flag: -blocks-storage.tsdb.max-exemplars
813+
[max_exemplars: <int> | default = 0]
809814
```

docs/blocks-storage/store-gateway.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -852,4 +852,9 @@ blocks_storage:
852852
# limit the number of concurrently opening TSDB's on startup
853853
# CLI flag: -blocks-storage.tsdb.max-tsdb-opening-concurrency-on-startup
854854
[max_tsdb_opening_concurrency_on_startup: <int> | default = 10]
855+
856+
# Enables support for exemplars in TSDB and sets the maximum number that
857+
# will be stored. 0 or less means disabled.
858+
# CLI flag: -blocks-storage.tsdb.max-exemplars
859+
[max_exemplars: <int> | default = 0]
855860
```

docs/configuration/config-file-reference.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4943,6 +4943,11 @@ tsdb:
49434943
# limit the number of concurrently opening TSDB's on startup
49444944
# CLI flag: -blocks-storage.tsdb.max-tsdb-opening-concurrency-on-startup
49454945
[max_tsdb_opening_concurrency_on_startup: <int> | default = 10]
4946+
4947+
# Enables support for exemplars in TSDB and sets the maximum number that will
4948+
# be stored. 0 or less means disabled.
4949+
# CLI flag: -blocks-storage.tsdb.max-exemplars
4950+
[max_exemplars: <int> | default = 0]
49464951
```
49474952

49484953
### `compactor_config`

docs/configuration/v1-guarantees.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,3 +70,4 @@ Currently experimental features are:
7070
- `-ingester.stream-chunks-when-using-blocks` CLI flag
7171
- `-ingester_stream_chunks_when_using_blocks` (boolean) field in runtime config file
7272
- Instance limits in ingester and distributor
73+
- Exemplar storage, currently in-memory only within the Ingester based on Prometheus exemplar storage (`-blocks-storage.tsdb.max-exemplars`)

0 commit comments

Comments
 (0)