@@ -17,26 +17,42 @@ def query(environment_id)
17
17
def query_metrics ( query_context )
18
18
query_processor = method ( :process_query ) . curry [ query_context ]
19
19
20
- matched_metrics . map do |group |
20
+ groups = matched_metrics . map do |group |
21
21
metrics = group . metrics . map do |metric |
22
22
{
23
23
title : metric . title ,
24
24
weight : metric . weight ,
25
25
y_label : metric . y_label ,
26
- queries : metric . queries . map ( &query_processor )
26
+ queries : metric . queries . map ( &query_processor ) . select ( & method ( :query_with_result ) )
27
27
}
28
28
end
29
29
30
30
{
31
31
group : group . name ,
32
32
priority : group . priority ,
33
- metrics : metrics
33
+ metrics : metrics . select ( & method ( :metric_with_any_queries ) )
34
34
}
35
35
end
36
+
37
+ groups . select ( &method ( :group_with_any_metrics ) )
36
38
end
37
39
38
40
private
39
41
42
+ def metric_with_any_queries ( metric )
43
+ metric [ :queries ] &.count > 0
44
+ end
45
+
46
+ def group_with_any_metrics ( group )
47
+ group [ :metrics ] &.count > 0
48
+ end
49
+
50
+ def query_with_result ( query )
51
+ query [ :result ] &.any? do |item |
52
+ item &.[]( :values ) &.any? || item &.[]( :value ) &.any?
53
+ end
54
+ end
55
+
40
56
def process_query ( context , query )
41
57
query_with_result = query . dup
42
58
query_with_result [ :result ] =
@@ -48,22 +64,15 @@ def process_query(context, query)
48
64
query_with_result
49
65
end
50
66
51
- def process_result ( query_result )
52
- contains_metrics = query_result . all? do |item |
53
- item &.[]( :values ) &.any? || item &.[]( :value ) &.any?
54
- end
55
67
56
- contains_metrics
68
+ def available_metrics
69
+ @available_metrics ||= client_label_values || [ ]
57
70
end
58
71
59
72
def matched_metrics
60
- label_values = client_label_values || [ ]
61
- Gitlab ::Prometheus ::MetricGroup . all
62
-
63
73
result = Gitlab ::Prometheus ::MetricGroup . all . map do |group |
64
74
group . metrics . select! do |metric |
65
- matcher = Regexp . compile ( metric . detect )
66
- label_values . any? &matcher . method ( :match )
75
+ metric . required_metrics . all? ( &available_metrics . method ( :include? ) )
67
76
end
68
77
group
69
78
end
0 commit comments