@@ -12,10 +12,10 @@ import (
1212 "github.com/stretchr/testify/require"
1313)
1414
15- func TestManagerMetrics (t * testing.T ) {
15+ func TestManagerMetricsWithRuleGroupLabel (t * testing.T ) {
1616 mainReg := prometheus .NewPedanticRegistry ()
1717
18- managerMetrics := NewManagerMetrics ()
18+ managerMetrics := NewManagerMetrics (false )
1919 mainReg .MustRegister (managerMetrics )
2020 managerMetrics .AddUserRegistry ("user1" , populateManager (1 ))
2121 managerMetrics .AddUserRegistry ("user2" , populateManager (10 ))
@@ -134,6 +134,104 @@ cortex_prometheus_rule_group_rules{rule_group="group_two",user="user3"} 100000
134134 require .NoError (t , err )
135135}
136136
137+ func TestManagerMetricsWithoutRuleGroupLabel (t * testing.T ) {
138+ mainReg := prometheus .NewPedanticRegistry ()
139+
140+ managerMetrics := NewManagerMetrics (true )
141+ mainReg .MustRegister (managerMetrics )
142+ managerMetrics .AddUserRegistry ("user1" , populateManager (1 ))
143+ managerMetrics .AddUserRegistry ("user2" , populateManager (10 ))
144+ managerMetrics .AddUserRegistry ("user3" , populateManager (100 ))
145+
146+ managerMetrics .AddUserRegistry ("user4" , populateManager (1000 ))
147+ managerMetrics .RemoveUserRegistry ("user4" )
148+
149+ //noinspection ALL
150+ err := testutil .GatherAndCompare (mainReg , bytes .NewBufferString (`
151+ # HELP cortex_prometheus_last_evaluation_samples The number of samples returned during the last rule group evaluation.
152+ # TYPE cortex_prometheus_last_evaluation_samples gauge
153+ cortex_prometheus_last_evaluation_samples{user="user1"} 2000
154+ cortex_prometheus_last_evaluation_samples{user="user2"} 20000
155+ cortex_prometheus_last_evaluation_samples{user="user3"} 200000
156+ # HELP cortex_prometheus_rule_evaluation_duration_seconds The duration for a rule to execute.
157+ # TYPE cortex_prometheus_rule_evaluation_duration_seconds summary
158+ cortex_prometheus_rule_evaluation_duration_seconds{user="user1",quantile="0.5"} 1
159+ cortex_prometheus_rule_evaluation_duration_seconds{user="user1",quantile="0.9"} 1
160+ cortex_prometheus_rule_evaluation_duration_seconds{user="user1",quantile="0.99"} 1
161+ cortex_prometheus_rule_evaluation_duration_seconds_sum{user="user1"} 1
162+ cortex_prometheus_rule_evaluation_duration_seconds_count{user="user1"} 1
163+ cortex_prometheus_rule_evaluation_duration_seconds{user="user2",quantile="0.5"} 10
164+ cortex_prometheus_rule_evaluation_duration_seconds{user="user2",quantile="0.9"} 10
165+ cortex_prometheus_rule_evaluation_duration_seconds{user="user2",quantile="0.99"} 10
166+ cortex_prometheus_rule_evaluation_duration_seconds_sum{user="user2"} 10
167+ cortex_prometheus_rule_evaluation_duration_seconds_count{user="user2"} 1
168+ cortex_prometheus_rule_evaluation_duration_seconds{user="user3",quantile="0.5"} 100
169+ cortex_prometheus_rule_evaluation_duration_seconds{user="user3",quantile="0.9"} 100
170+ cortex_prometheus_rule_evaluation_duration_seconds{user="user3",quantile="0.99"} 100
171+ cortex_prometheus_rule_evaluation_duration_seconds_sum{user="user3"} 100
172+ cortex_prometheus_rule_evaluation_duration_seconds_count{user="user3"} 1
173+ # HELP cortex_prometheus_rule_evaluation_failures_total The total number of rule evaluation failures.
174+ # TYPE cortex_prometheus_rule_evaluation_failures_total counter
175+ cortex_prometheus_rule_evaluation_failures_total{user="user1"} 2
176+ cortex_prometheus_rule_evaluation_failures_total{user="user2"} 20
177+ cortex_prometheus_rule_evaluation_failures_total{user="user3"} 200
178+ # HELP cortex_prometheus_rule_evaluations_total The total number of rule evaluations.
179+ # TYPE cortex_prometheus_rule_evaluations_total counter
180+ cortex_prometheus_rule_evaluations_total{user="user1"} 2
181+ cortex_prometheus_rule_evaluations_total{user="user2"} 20
182+ cortex_prometheus_rule_evaluations_total{user="user3"} 200
183+ # HELP cortex_prometheus_rule_group_duration_seconds The duration of rule group evaluations.
184+ # TYPE cortex_prometheus_rule_group_duration_seconds summary
185+ cortex_prometheus_rule_group_duration_seconds{user="user1",quantile="0.01"} 1
186+ cortex_prometheus_rule_group_duration_seconds{user="user1",quantile="0.05"} 1
187+ cortex_prometheus_rule_group_duration_seconds{user="user1",quantile="0.5"} 1
188+ cortex_prometheus_rule_group_duration_seconds{user="user1",quantile="0.9"} 1
189+ cortex_prometheus_rule_group_duration_seconds{user="user1",quantile="0.99"} 1
190+ cortex_prometheus_rule_group_duration_seconds_sum{user="user1"} 1
191+ cortex_prometheus_rule_group_duration_seconds_count{user="user1"} 1
192+ cortex_prometheus_rule_group_duration_seconds{user="user2",quantile="0.01"} 10
193+ cortex_prometheus_rule_group_duration_seconds{user="user2",quantile="0.05"} 10
194+ cortex_prometheus_rule_group_duration_seconds{user="user2",quantile="0.5"} 10
195+ cortex_prometheus_rule_group_duration_seconds{user="user2",quantile="0.9"} 10
196+ cortex_prometheus_rule_group_duration_seconds{user="user2",quantile="0.99"} 10
197+ cortex_prometheus_rule_group_duration_seconds_sum{user="user2"} 10
198+ cortex_prometheus_rule_group_duration_seconds_count{user="user2"} 1
199+ cortex_prometheus_rule_group_duration_seconds{user="user3",quantile="0.01"} 100
200+ cortex_prometheus_rule_group_duration_seconds{user="user3",quantile="0.05"} 100
201+ cortex_prometheus_rule_group_duration_seconds{user="user3",quantile="0.5"} 100
202+ cortex_prometheus_rule_group_duration_seconds{user="user3",quantile="0.9"} 100
203+ cortex_prometheus_rule_group_duration_seconds{user="user3",quantile="0.99"} 100
204+ cortex_prometheus_rule_group_duration_seconds_sum{user="user3"} 100
205+ cortex_prometheus_rule_group_duration_seconds_count{user="user3"} 1
206+ # HELP cortex_prometheus_rule_group_iterations_missed_total The total number of rule group evaluations missed due to slow rule group evaluation.
207+ # TYPE cortex_prometheus_rule_group_iterations_missed_total counter
208+ cortex_prometheus_rule_group_iterations_missed_total{user="user1"} 2
209+ cortex_prometheus_rule_group_iterations_missed_total{user="user2"} 20
210+ cortex_prometheus_rule_group_iterations_missed_total{user="user3"} 200
211+ # HELP cortex_prometheus_rule_group_iterations_total The total number of scheduled rule group evaluations, whether executed or missed.
212+ # TYPE cortex_prometheus_rule_group_iterations_total counter
213+ cortex_prometheus_rule_group_iterations_total{user="user1"} 2
214+ cortex_prometheus_rule_group_iterations_total{user="user2"} 20
215+ cortex_prometheus_rule_group_iterations_total{user="user3"} 200
216+ # HELP cortex_prometheus_rule_group_last_duration_seconds The duration of the last rule group evaluation.
217+ # TYPE cortex_prometheus_rule_group_last_duration_seconds gauge
218+ cortex_prometheus_rule_group_last_duration_seconds{user="user1"} 2000
219+ cortex_prometheus_rule_group_last_duration_seconds{user="user2"} 20000
220+ cortex_prometheus_rule_group_last_duration_seconds{user="user3"} 200000
221+ # HELP cortex_prometheus_rule_group_last_evaluation_timestamp_seconds The timestamp of the last rule group evaluation in seconds.
222+ # TYPE cortex_prometheus_rule_group_last_evaluation_timestamp_seconds gauge
223+ cortex_prometheus_rule_group_last_evaluation_timestamp_seconds{user="user1"} 2000
224+ cortex_prometheus_rule_group_last_evaluation_timestamp_seconds{user="user2"} 20000
225+ cortex_prometheus_rule_group_last_evaluation_timestamp_seconds{user="user3"} 200000
226+ # HELP cortex_prometheus_rule_group_rules The number of rules.
227+ # TYPE cortex_prometheus_rule_group_rules gauge
228+ cortex_prometheus_rule_group_rules{user="user1"} 2000
229+ cortex_prometheus_rule_group_rules{user="user2"} 20000
230+ cortex_prometheus_rule_group_rules{user="user3"} 200000
231+ ` ))
232+ require .NoError (t , err )
233+ }
234+
137235func populateManager (base float64 ) * prometheus.Registry {
138236 r := prometheus .NewRegistry ()
139237
@@ -265,7 +363,7 @@ func newGroupMetrics(r prometheus.Registerer) *groupMetrics {
265363func TestMetricsArePerUser (t * testing.T ) {
266364 mainReg := prometheus .NewPedanticRegistry ()
267365
268- managerMetrics := NewManagerMetrics ()
366+ managerMetrics := NewManagerMetrics (true )
269367 mainReg .MustRegister (managerMetrics )
270368 managerMetrics .AddUserRegistry ("user1" , populateManager (1 ))
271369 managerMetrics .AddUserRegistry ("user2" , populateManager (10 ))
0 commit comments