Skip to content

Commit 3c6603d

Browse files
authored
Merge pull request #7071 from yeya24/head-stale-series-metric
Ingester: Add head stale series metric
2 parents 275a9de + b4924f7 commit 3c6603d

File tree

3 files changed

+23
-0
lines changed

3 files changed

+23
-0
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@
8282
* [ENHANCEMENT] Implement versioned transactions for writes to DynamoDB ring. #6986
8383
* [ENHANCEMENT] Add source metadata to requests(api vs ruler) #6947
8484
* [ENHANCEMENT] Add new metric `cortex_discarded_series` and `cortex_discarded_series_per_labelset` to track number of series that have a discarded sample. #6995
85+
* [ENHANCEMENT] Ingester: Add `cortex_ingester_tsdb_head_stale_series` metric to keep track of number of stale series on head. #7071
8586
* [BUGFIX] Ingester: Avoid error or early throttling when READONLY ingesters are present in the ring #6517
8687
* [BUGFIX] Ingester: Fix labelset data race condition. #6573
8788
* [BUGFIX] Compactor: Cleaner should not put deletion marker for blocks with no-compact marker. #6576

pkg/ingester/metrics.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,7 @@ type tsdbMetrics struct {
343343
tsdbHeadTruncateFail *prometheus.Desc
344344
tsdbHeadTruncateTotal *prometheus.Desc
345345
tsdbHeadGcDuration *prometheus.Desc
346+
tsdbHeadStaleSeries *prometheus.Desc
346347
tsdbActiveAppenders *prometheus.Desc
347348
tsdbSeriesNotFound *prometheus.Desc
348349
tsdbChunks *prometheus.Desc
@@ -470,6 +471,10 @@ func newTSDBMetrics(r prometheus.Registerer) *tsdbMetrics {
470471
"cortex_ingester_tsdb_head_gc_duration_seconds",
471472
"Runtime of garbage collection in the TSDB head.",
472473
nil, nil),
474+
tsdbHeadStaleSeries: prometheus.NewDesc(
475+
"cortex_ingester_tsdb_head_stale_series",
476+
"Total number of stale series in the head block.",
477+
[]string{"user"}, nil),
473478
tsdbActiveAppenders: prometheus.NewDesc(
474479
"cortex_ingester_tsdb_head_active_appenders",
475480
"Number of currently active TSDB appender transactions.",
@@ -623,6 +628,7 @@ func (sm *tsdbMetrics) Describe(out chan<- *prometheus.Desc) {
623628
out <- sm.tsdbWALWritesFailed
624629
out <- sm.tsdbHeadTruncateFail
625630
out <- sm.tsdbHeadTruncateTotal
631+
out <- sm.tsdbHeadStaleSeries
626632
out <- sm.tsdbHeadGcDuration
627633
out <- sm.tsdbActiveAppenders
628634
out <- sm.tsdbSeriesNotFound
@@ -684,6 +690,7 @@ func (sm *tsdbMetrics) Collect(out chan<- prometheus.Metric) {
684690
data.SendSumOfCounters(out, sm.tsdbHeadTruncateFail, "prometheus_tsdb_head_truncations_failed_total")
685691
data.SendSumOfCounters(out, sm.tsdbHeadTruncateTotal, "prometheus_tsdb_head_truncations_total")
686692
data.SendSumOfSummaries(out, sm.tsdbHeadGcDuration, "prometheus_tsdb_head_gc_duration_seconds")
693+
data.SendSumOfGaugesPerUser(out, sm.tsdbHeadStaleSeries, "prometheus_tsdb_head_stale_series")
687694
data.SendSumOfGauges(out, sm.tsdbActiveAppenders, "prometheus_tsdb_head_active_appenders")
688695
data.SendSumOfCounters(out, sm.tsdbSeriesNotFound, "prometheus_tsdb_head_series_not_found_total")
689696
data.SendSumOfGauges(out, sm.tsdbChunks, "prometheus_tsdb_head_chunks")

pkg/ingester/metrics_test.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -428,6 +428,11 @@ func TestTSDBMetrics(t *testing.T) {
428428
# HELP cortex_ingester_tsdb_exemplar_exemplars_in_storage Number of TSDB exemplars currently in storage.
429429
# TYPE cortex_ingester_tsdb_exemplar_exemplars_in_storage gauge
430430
cortex_ingester_tsdb_exemplar_exemplars_in_storage 30
431+
# HELP cortex_ingester_tsdb_head_stale_series Total number of stale series in the head block.
432+
# TYPE cortex_ingester_tsdb_head_stale_series gauge
433+
cortex_ingester_tsdb_head_stale_series{user="user1"} 382695
434+
cortex_ingester_tsdb_head_stale_series{user="user2"} 2659397
435+
cortex_ingester_tsdb_head_stale_series{user="user3"} 30969
431436
`))
432437
require.NoError(t, err)
433438
}
@@ -691,6 +696,10 @@ func TestTSDBMetricsWithRemoval(t *testing.T) {
691696
# HELP cortex_ingester_tsdb_exemplar_exemplars_in_storage Number of TSDB exemplars currently in storage.
692697
# TYPE cortex_ingester_tsdb_exemplar_exemplars_in_storage gauge
693698
cortex_ingester_tsdb_exemplar_exemplars_in_storage 20
699+
# HELP cortex_ingester_tsdb_head_stale_series Total number of stale series in the head block.
700+
# TYPE cortex_ingester_tsdb_head_stale_series gauge
701+
cortex_ingester_tsdb_head_stale_series{user="user1"} 382695
702+
cortex_ingester_tsdb_head_stale_series{user="user2"} 2659397
694703
`))
695704
require.NoError(t, err)
696705
}
@@ -1018,5 +1027,11 @@ func populateTSDBMetrics(base float64) *prometheus.Registry {
10181027
})
10191028
exemplarsOutOfOrderTotal.Add(3)
10201029

1030+
headStaleSeries := promauto.With(r).NewGauge(prometheus.GaugeOpts{
1031+
Name: "prometheus_tsdb_head_stale_series",
1032+
Help: "Total number of stale series in the head block.",
1033+
})
1034+
headStaleSeries.Set(31 * base)
1035+
10211036
return r
10221037
}

0 commit comments

Comments
 (0)