@@ -8,8 +8,134 @@ import (
8
8
"github.com/prometheus/client_golang/prometheus/promauto"
9
9
"github.com/prometheus/client_golang/prometheus/testutil"
10
10
"github.com/stretchr/testify/require"
11
+ "go.uber.org/atomic"
12
+
13
+ util_math "github.com/cortexproject/cortex/pkg/util/math"
11
14
)
12
15
16
+ func TestIngesterMetrics (t * testing.T ) {
17
+ mainReg := prometheus .NewPedanticRegistry ()
18
+ ingestionRate := util_math .NewEWMARate (0.2 , instanceIngestionRateTickInterval )
19
+ inflightPushRequests := & atomic.Int64 {}
20
+ maxInflightQueryRequests := & atomic.Int64 {}
21
+ maxInflightQueryRequests .Store (98 )
22
+ inflightPushRequests .Store (14 )
23
+
24
+ m := newIngesterMetrics (mainReg ,
25
+ false ,
26
+ true ,
27
+ func () * InstanceLimits {
28
+ return & InstanceLimits {
29
+ MaxIngestionRate : 12 ,
30
+ MaxInMemoryTenants : 1 ,
31
+ MaxInMemorySeries : 11 ,
32
+ MaxInflightPushRequests : 6 ,
33
+ }
34
+ },
35
+ ingestionRate ,
36
+ inflightPushRequests ,
37
+ maxInflightQueryRequests )
38
+
39
+ require .NotNil (t , m )
40
+
41
+ err := testutil .GatherAndCompare (mainReg , bytes .NewBufferString (`
42
+ # HELP cortex_ingester_inflight_push_requests Current number of inflight push requests in ingester.
43
+ # TYPE cortex_ingester_inflight_push_requests gauge
44
+ cortex_ingester_inflight_push_requests 14
45
+ # HELP cortex_ingester_inflight_query_requests Max number of inflight query requests in ingester.
46
+ # TYPE cortex_ingester_inflight_query_requests gauge
47
+ cortex_ingester_inflight_query_requests 98
48
+ # HELP cortex_ingester_ingested_exemplars_failures_total The total number of exemplars that errored on ingestion.
49
+ # TYPE cortex_ingester_ingested_exemplars_failures_total counter
50
+ cortex_ingester_ingested_exemplars_failures_total 0
51
+ # HELP cortex_ingester_ingested_exemplars_total The total number of exemplars ingested.
52
+ # TYPE cortex_ingester_ingested_exemplars_total counter
53
+ cortex_ingester_ingested_exemplars_total 0
54
+ # HELP cortex_ingester_ingested_metadata_failures_total The total number of metadata that errored on ingestion.
55
+ # TYPE cortex_ingester_ingested_metadata_failures_total counter
56
+ cortex_ingester_ingested_metadata_failures_total 0
57
+ # HELP cortex_ingester_ingested_metadata_total The total number of metadata ingested.
58
+ # TYPE cortex_ingester_ingested_metadata_total counter
59
+ cortex_ingester_ingested_metadata_total 0
60
+ # HELP cortex_ingester_ingested_samples_failures_total The total number of samples that errored on ingestion.
61
+ # TYPE cortex_ingester_ingested_samples_failures_total counter
62
+ cortex_ingester_ingested_samples_failures_total 0
63
+ # HELP cortex_ingester_ingested_samples_total The total number of samples ingested.
64
+ # TYPE cortex_ingester_ingested_samples_total counter
65
+ cortex_ingester_ingested_samples_total 0
66
+ # HELP cortex_ingester_ingestion_rate_samples_per_second Current ingestion rate in samples/sec that ingester is using to limit access.
67
+ # TYPE cortex_ingester_ingestion_rate_samples_per_second gauge
68
+ cortex_ingester_ingestion_rate_samples_per_second 0
69
+ # HELP cortex_ingester_instance_limits Instance limits used by this ingester.
70
+ # TYPE cortex_ingester_instance_limits gauge
71
+ cortex_ingester_instance_limits{limit="max_inflight_push_requests"} 6
72
+ cortex_ingester_instance_limits{limit="max_ingestion_rate"} 12
73
+ cortex_ingester_instance_limits{limit="max_series"} 11
74
+ cortex_ingester_instance_limits{limit="max_tenants"} 1
75
+ # HELP cortex_ingester_memory_metadata The current number of metadata in memory.
76
+ # TYPE cortex_ingester_memory_metadata gauge
77
+ cortex_ingester_memory_metadata 0
78
+ # HELP cortex_ingester_memory_series The current number of series in memory.
79
+ # TYPE cortex_ingester_memory_series gauge
80
+ cortex_ingester_memory_series 0
81
+ # HELP cortex_ingester_memory_users The current number of users in memory.
82
+ # TYPE cortex_ingester_memory_users gauge
83
+ cortex_ingester_memory_users 0
84
+ # HELP cortex_ingester_queried_chunks The total number of chunks returned from queries.
85
+ # TYPE cortex_ingester_queried_chunks histogram
86
+ cortex_ingester_queried_chunks_bucket{le="10"} 0
87
+ cortex_ingester_queried_chunks_bucket{le="80"} 0
88
+ cortex_ingester_queried_chunks_bucket{le="640"} 0
89
+ cortex_ingester_queried_chunks_bucket{le="5120"} 0
90
+ cortex_ingester_queried_chunks_bucket{le="40960"} 0
91
+ cortex_ingester_queried_chunks_bucket{le="327680"} 0
92
+ cortex_ingester_queried_chunks_bucket{le="2.62144e+06"} 0
93
+ cortex_ingester_queried_chunks_bucket{le="+Inf"} 0
94
+ cortex_ingester_queried_chunks_sum 0
95
+ cortex_ingester_queried_chunks_count 0
96
+ # HELP cortex_ingester_queried_exemplars The total number of exemplars returned from queries.
97
+ # TYPE cortex_ingester_queried_exemplars histogram
98
+ cortex_ingester_queried_exemplars_bucket{le="10"} 0
99
+ cortex_ingester_queried_exemplars_bucket{le="50"} 0
100
+ cortex_ingester_queried_exemplars_bucket{le="250"} 0
101
+ cortex_ingester_queried_exemplars_bucket{le="1250"} 0
102
+ cortex_ingester_queried_exemplars_bucket{le="6250"} 0
103
+ cortex_ingester_queried_exemplars_bucket{le="+Inf"} 0
104
+ cortex_ingester_queried_exemplars_sum 0
105
+ cortex_ingester_queried_exemplars_count 0
106
+ # HELP cortex_ingester_queried_samples The total number of samples returned from queries.
107
+ # TYPE cortex_ingester_queried_samples histogram
108
+ cortex_ingester_queried_samples_bucket{le="10"} 0
109
+ cortex_ingester_queried_samples_bucket{le="80"} 0
110
+ cortex_ingester_queried_samples_bucket{le="640"} 0
111
+ cortex_ingester_queried_samples_bucket{le="5120"} 0
112
+ cortex_ingester_queried_samples_bucket{le="40960"} 0
113
+ cortex_ingester_queried_samples_bucket{le="327680"} 0
114
+ cortex_ingester_queried_samples_bucket{le="2.62144e+06"} 0
115
+ cortex_ingester_queried_samples_bucket{le="2.097152e+07"} 0
116
+ cortex_ingester_queried_samples_bucket{le="+Inf"} 0
117
+ cortex_ingester_queried_samples_sum 0
118
+ cortex_ingester_queried_samples_count 0
119
+ # HELP cortex_ingester_queried_series The total number of series returned from queries.
120
+ # TYPE cortex_ingester_queried_series histogram
121
+ cortex_ingester_queried_series_bucket{le="10"} 0
122
+ cortex_ingester_queried_series_bucket{le="80"} 0
123
+ cortex_ingester_queried_series_bucket{le="640"} 0
124
+ cortex_ingester_queried_series_bucket{le="5120"} 0
125
+ cortex_ingester_queried_series_bucket{le="40960"} 0
126
+ cortex_ingester_queried_series_bucket{le="327680"} 0
127
+ cortex_ingester_queried_series_bucket{le="+Inf"} 0
128
+ cortex_ingester_queried_series_sum 0
129
+ cortex_ingester_queried_series_count 0
130
+ # HELP cortex_ingester_queries_total The total number of queries the ingester has handled.
131
+ # TYPE cortex_ingester_queries_total counter
132
+ cortex_ingester_queries_total 0
133
+ ` ))
134
+ require .NoError (t , err )
135
+
136
+ require .Equal (t , int64 (0 ), maxInflightQueryRequests .Load ())
137
+ }
138
+
13
139
func TestTSDBMetrics (t * testing.T ) {
14
140
mainReg := prometheus .NewPedanticRegistry ()
15
141
0 commit comments