@@ -122,8 +122,26 @@ metric(boolean, Labels, Value0) ->
122
122
% %====================================================================
123
123
124
124
labels (Queue ) ->
125
- [{vhost , queue_vhost (Queue )},
126
- {queue , queue_name (Queue )}].
125
+ % % exclusive_consumer_tag should not be used as a label. Prometheus documentation
126
+ % % states that labels should not be used to store dimensions with high cardinality,
127
+ % % as every unique combination of key-value label pairs represents a new time
128
+ % % series, which can dramatically increase the amount of data stored.
129
+ % % As such, from the arguments only x-overflow, x-queue-mode and x-queue-type
130
+ % % should be represented as arguments.
131
+ add_if_not_empty (
132
+ {queue_mode , queue_argument (<<" x-queue-mode" >>, Queue )},
133
+ add_if_not_empty (
134
+ {type , queue_argument (<<" x-queue-type" >>, Queue , <<" classic" >>)},
135
+ add_if_not_empty (
136
+ {overflow , queue_argument (<<" x-overflow" >>, Queue )},
137
+ add_if_not_empty ({policy , queue_policy (Queue )},
138
+ [{vhost , queue_vhost (Queue )},
139
+ {queue , queue_name (Queue )}])))).
140
+
141
+ add_if_not_empty ({_ , '' }, Acc ) ->
142
+ Acc ;
143
+ add_if_not_empty (Tuple , Acc ) ->
144
+ [Tuple | Acc ].
127
145
128
146
catch_boolean (boolean ) ->
129
147
untyped ;
@@ -158,6 +176,15 @@ queue_vhost(Queue) ->
158
176
queue_name (Queue ) ->
159
177
proplists :get_value (name , Queue ).
160
178
179
+ queue_policy (Queue ) ->
180
+ proplists :get_value (policy , Queue ).
181
+
182
+ queue_argument (Arg , Queue ) ->
183
+ queue_argument (Arg , Queue , '' ).
184
+
185
+ queue_argument (Arg , Queue , Default ) ->
186
+ maps :get (Arg , proplists :get_value (arguments , Queue ), Default ).
187
+
161
188
queue_dir_size (Queue ) ->
162
189
QueueDirName = queue_dir_name (Queue ),
163
190
FullPath = [mnesia :system_info (directory ), " /queues/" , QueueDirName ],
0 commit comments