Skip to content

Commit f39f613

Browse files
committed
WIP
1 parent 84d7d06 commit f39f613

13 files changed

+100
-171
lines changed

Diff for: big_tests/tests/graphql_metric_SUITE.erl

+9-5
Original file line numberDiff line numberDiff line change
@@ -227,23 +227,23 @@ get_metrics_as_dicts_with_key_one(Config) ->
227227
Result = get_metrics_as_dicts_with_keys([<<"one">>], Config),
228228
ParsedResult = get_ok_value([data, metric, getMetricsAsDicts], Result),
229229
Map = dict_objects_to_map(ParsedResult),
230-
SentName = [<<"global">>, <<"xmpp_element_out">>, <<"c2s">>, <<"stanza_count">>],
230+
SentName = [metric_host_type(), <<"xmpp_element_out">>, <<"c2s">>, <<"stanza_count">>],
231231
[#{<<"key">> := <<"one">>, <<"value">> := One}] = maps:get(SentName, Map),
232232
?assert(is_integer(One)).
233233

234234
get_metrics_as_dicts_with_nonexistent_key(Config) ->
235235
Result = get_metrics_as_dicts_with_keys([<<"not_existing">>], Config),
236236
ParsedResult = get_ok_value([data, metric, getMetricsAsDicts], Result),
237237
Map = dict_objects_to_map(ParsedResult),
238-
RecvName = [<<"global">>, <<"xmpp_element_in">>, <<"c2s">>, <<"byte_size">>],
238+
RecvName = [metric_host_type(), <<"xmpp_element_in">>, <<"c2s">>, <<"byte_size">>],
239239
[] = maps:get(RecvName, Map).
240240

241241
get_metrics_as_dicts_empty_args(Config) ->
242242
%% Empty name
243243
Result = get_metrics_as_dicts([], [<<"median">>], Config),
244244
ParsedResult = get_ok_value([data, metric, getMetricsAsDicts], Result),
245245
Map = dict_objects_to_map(ParsedResult),
246-
RecvName = [<<"global">>, <<"xmpp_element_in">>, <<"c2s">>, <<"byte_size">>],
246+
RecvName = [metric_host_type(), <<"xmpp_element_in">>, <<"c2s">>, <<"byte_size">>],
247247
[#{<<"key">> := <<"median">>, <<"value">> := Median}] = maps:get(RecvName, Map),
248248
?assert(is_integer(Median)),
249249
%% Empty keys
@@ -351,12 +351,16 @@ get_cluster_metrics_empty_strings(Config) ->
351351
check_node_result_is_valid(ResList, MetricsAreGlobal) ->
352352
%% Check that result contains something
353353
Map = dict_objects_to_map(ResList),
354-
SentName = [<<"global">>, <<"xmpp_element_in">>, <<"c2s">>, <<"stanza_count">>],
354+
Prefix = case MetricsAreGlobal of
355+
true -> <<"global">>;
356+
false -> metric_host_type()
357+
end,
358+
SentName = [Prefix, <<"xmpp_element_in">>, <<"c2s">>, <<"stanza_count">>],
355359
check_spiral_dict(maps:get(SentName, Map)),
356360
[#{<<"key">> := <<"value">>,<<"value">> := V} | _] =
357361
maps:get([<<"global">>, <<"sm_unique_sessions">>, <<"count">>], Map),
358362
?assert(is_integer(V)),
359-
HistObjects = maps:get([<<"global">>, <<"xmpp_element_in">>, <<"c2s">>, <<"byte_size">>], Map),
363+
HistObjects = maps:get([Prefix, <<"xmpp_element_in">>, <<"c2s">>, <<"byte_size">>], Map),
360364
check_histogram(kv_objects_to_map(HistObjects)).
361365

362366
check_histogram(Map) ->

Diff for: big_tests/tests/metrics_api_SUITE.erl

+56-57
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ non_existent_metrics(_Config) ->
107107
assert_status(404, request(<<"GET">>, "/metrics/global/badMetric")),
108108
assert_status(404, request(<<"GET">>, "/metrics/host_type/badHostType")),
109109
assert_status(404, request(<<"GET">>,
110-
"/metrics/host_type/badHostType/c2s_message_processed.count")),
110+
"/metrics/host_type/badHostType/xmpp_element_out.c2s.stanza_count")),
111111
assert_status(404, request(<<"GET">>, ["/metrics/", HostType, "/", GlobalMetricName])),
112112
assert_status(404, request(<<"GET">>, ["/metrics/", HostType, "/badMetric"])).
113113

@@ -122,32 +122,32 @@ one_client_just_logs_in(Config) ->
122122
(Config, metrics_helper:userspec(1, Config),
123123
fun(_User1) -> end_of_story end,
124124
%% A list of metrics and their expected relative increase
125-
[{global, 'xmpp_element_in.c2s.iq_count', 0 + user_alpha(2)},
126-
{global, 'xmpp_element_out.c2s.iq_count', 0 + user_alpha(2)},
127-
{global, 'xmpp_element_in.c2s.message_count', 0},
128-
{global, 'xmpp_element_out.c2s.message_count', 0},
129-
{global, 'xmpp_element_in.c2s.presence_count', 0 + user_alpha(1)},
130-
{global, 'xmpp_element_out.c2s.presence_count', 0 + user_alpha(1)},
131-
{global, 'xmpp_element_in.c2s.stanza_count', 0 + user_alpha(3)},
132-
{global, 'xmpp_element_out.c2s.stanza_count', 0 + user_alpha(3)},
133-
{host_type(), 'sm_session.logins', 0 + user_alpha(1)},
134-
{host_type(), 'sm_session.logouts', 0 + user_alpha(1)}
125+
[{'xmpp_element_in.c2s.iq_count', 0 + user_alpha(2)},
126+
{'xmpp_element_out.c2s.iq_count', 0 + user_alpha(2)},
127+
{'xmpp_element_in.c2s.message_count', 0},
128+
{'xmpp_element_out.c2s.message_count', 0},
129+
{'xmpp_element_in.c2s.presence_count', 0 + user_alpha(1)},
130+
{'xmpp_element_out.c2s.presence_count', 0 + user_alpha(1)},
131+
{'xmpp_element_in.c2s.stanza_count', 0 + user_alpha(3)},
132+
{'xmpp_element_out.c2s.stanza_count', 0 + user_alpha(3)},
133+
{'sm_session.logins', 0 + user_alpha(1)},
134+
{'sm_session.logouts', 0 + user_alpha(1)}
135135
]).
136136

137137
two_clients_just_log_in(Config) ->
138138
instrumented_story
139139
(Config, metrics_helper:userspec(1, 1, Config),
140140
fun(_User1, _User2) -> end_of_story end,
141-
[{global, 'xmpp_element_in.c2s.iq_count', 0 + user_alpha(4)},
142-
{global, 'xmpp_element_out.c2s.iq_count', 0 + user_alpha(4)},
143-
{global, 'xmpp_element_in.c2s.message_count', 0},
144-
{global, 'xmpp_element_out.c2s.message_count', 0},
145-
{global, 'xmpp_element_in.c2s.presence_count', 0 + user_alpha(2)},
146-
{global, 'xmpp_element_out.c2s.presence_count', 0 + user_alpha(2)},
147-
{global, 'xmpp_element_in.c2s.stanza_count', 0 + user_alpha(6)},
148-
{global, 'xmpp_element_out.c2s.stanza_count', 0 + user_alpha(6)},
149-
{host_type(), 'sm_session.logins', 0 + user_alpha(2)},
150-
{host_type(), 'sm_session.logouts', 0 + user_alpha(2)}
141+
[{'xmpp_element_in.c2s.iq_count', 0 + user_alpha(4)},
142+
{'xmpp_element_out.c2s.iq_count', 0 + user_alpha(4)},
143+
{'xmpp_element_in.c2s.message_count', 0},
144+
{'xmpp_element_out.c2s.message_count', 0},
145+
{'xmpp_element_in.c2s.presence_count', 0 + user_alpha(2)},
146+
{'xmpp_element_out.c2s.presence_count', 0 + user_alpha(2)},
147+
{'xmpp_element_in.c2s.stanza_count', 0 + user_alpha(6)},
148+
{'xmpp_element_out.c2s.stanza_count', 0 + user_alpha(6)},
149+
{'sm_session.logins', 0 + user_alpha(2)},
150+
{'sm_session.logouts', 0 + user_alpha(2)}
151151
]).
152152

153153
one_message_sent(Config) ->
@@ -158,8 +158,8 @@ one_message_sent(Config) ->
158158
escalus_client:send(User1, Chat),
159159
escalus_client:wait_for_stanza(User2)
160160
end,
161-
[{global, 'xmpp_element_in.c2s.message_count', 1},
162-
{global, 'xmpp_element_out.c2s.message_count', 1}]).
161+
[{'xmpp_element_in.c2s.message_count', 1},
162+
{'xmpp_element_out.c2s.message_count', 1}]).
163163

164164
one_direct_presence_sent(Config) ->
165165
Userspec = metrics_helper:userspec(1, 1, Config),
@@ -170,10 +170,10 @@ one_direct_presence_sent(Config) ->
170170
escalus:send(User1, Presence),
171171
escalus:wait_for_stanza(User2)
172172
end,
173-
[{global, 'xmpp_element_in.c2s.presence_count', 1 + user_alpha(2)},
174-
{global, 'xmpp_element_out.c2s.presence_count', 1 + user_alpha(2)},
175-
{global, 'xmpp_element_in.c2s.stanza_count', 1 + user_alpha(6)},
176-
{global, 'xmpp_element_out.c2s.stanza_count', 1 + user_alpha(6)}]).
173+
[{'xmpp_element_in.c2s.presence_count', 1 + user_alpha(2)},
174+
{'xmpp_element_out.c2s.presence_count', 1 + user_alpha(2)},
175+
{'xmpp_element_in.c2s.stanza_count', 1 + user_alpha(6)},
176+
{'xmpp_element_out.c2s.stanza_count', 1 + user_alpha(6)}]).
177177

178178
one_iq_sent(Config) ->
179179
instrumented_story
@@ -183,11 +183,11 @@ one_iq_sent(Config) ->
183183
escalus_client:send(User1, RosterIq),
184184
escalus_client:wait_for_stanza(User1)
185185
end,
186-
[{global, 'xmpp_element_in.c2s.iq_count', 3},
187-
{global, 'xmpp_element_out.c2s.iq_count', 3},
188-
{host_type(), 'mod_roster_get.count', 1},
189-
{global, 'xmpp_element_in.c2s.stanza_count', 1 + user_alpha(3)},
190-
{global, 'xmpp_element_out.c2s.stanza_count', 1 + user_alpha(3)}]).
186+
[{'xmpp_element_in.c2s.iq_count', 3},
187+
{'xmpp_element_out.c2s.iq_count', 3},
188+
{'mod_roster_get.count', 1},
189+
{'xmpp_element_in.c2s.stanza_count', 1 + user_alpha(3)},
190+
{'xmpp_element_out.c2s.stanza_count', 1 + user_alpha(3)}]).
191191

192192
one_message_error(Config) ->
193193
instrumented_story
@@ -198,10 +198,10 @@ one_message_error(Config) ->
198198
escalus_client:send(User1, Chat),
199199
escalus_client:wait_for_stanza(User1)
200200
end,
201-
[{global, 'xmpp_element_out.c2s.error_count', 1},
202-
{global, 'xmpp_element_out.c2s.iq_error_count', 0},
203-
{global, 'xmpp_element_out.c2s.message_error_count', 1},
204-
{global, 'xmpp_element_out.c2s.presence_error_count', 0}]).
201+
[{'xmpp_element_out.c2s.error_count', 1},
202+
{'xmpp_element_out.c2s.iq_error_count', 0},
203+
{'xmpp_element_out.c2s.message_error_count', 1},
204+
{'xmpp_element_out.c2s.presence_error_count', 0}]).
205205

206206
one_iq_error(Config) ->
207207
instrumented_story
@@ -211,10 +211,10 @@ one_iq_error(Config) ->
211211
escalus_client:send(User1, BadIQ),
212212
escalus_client:wait_for_stanza(User1)
213213
end,
214-
[{global, 'xmpp_element_out.c2s.error_count', 1},
215-
{global, 'xmpp_element_out.c2s.iq_error_count', 1},
216-
{global, 'xmpp_element_out.c2s.message_error_count', 0},
217-
{global, 'xmpp_element_out.c2s.presence_error_count', 0}]).
214+
[{'xmpp_element_out.c2s.error_count', 1},
215+
{'xmpp_element_out.c2s.iq_error_count', 1},
216+
{'xmpp_element_out.c2s.message_error_count', 0},
217+
{'xmpp_element_out.c2s.presence_error_count', 0}]).
218218

219219
one_presence_error(Config) ->
220220
instrumented_story
@@ -225,10 +225,10 @@ one_presence_error(Config) ->
225225
escalus_client:send(User1, BadPres),
226226
escalus_client:wait_for_stanza(User1)
227227
end,
228-
[{global, 'xmpp_element_out.c2s.error_count', 1},
229-
{global, 'xmpp_element_out.c2s.iq_error_count', 0},
230-
{global, 'xmpp_element_out.c2s.message_error_count', 0},
231-
{global, 'xmpp_element_out.c2s.presence_error_count', 1}]).
228+
[{'xmpp_element_out.c2s.error_count', 1},
229+
{'xmpp_element_out.c2s.iq_error_count', 0},
230+
{'xmpp_element_out.c2s.message_error_count', 0},
231+
{'xmpp_element_out.c2s.presence_error_count', 1}]).
232232

233233
session_counters(Config) ->
234234
escalus:story
@@ -344,38 +344,37 @@ metrics_msg_flow(_Config) ->
344344
user_alpha(NumberOfUsers) ->
345345
%% This represents the overhead of logging in N users via escalus:story/3
346346
%% For each user,
347-
%% c2s_element_(in|out).stanza_count
347+
%% xmpp_element_(in|out).c2s.stanza_count
348348
%% and
349-
%% c2s_element_(in|out).presence_count
349+
%% xmpp_element_(in|out).c2s.presence_count
350350
%% will be bumped by +1 at login.
351351
NumberOfUsers.
352352

353-
instrumented_story(Config, UsersSpecs, StoryFun, CounterSpecs0) ->
354-
CounterSpecs = case metrics_helper:all_metrics_are_global(Config) of
355-
true -> [{global, Counter, N} || {_, Counter, N} <- CounterSpecs0];
356-
false -> CounterSpecs0
357-
end,
353+
instrumented_story(Config, UsersSpecs, StoryFun, CounterSpecs) ->
358354
Befores = fetch_all(Config, CounterSpecs),
359355
StoryResult = escalus:story(Config, UsersSpecs, StoryFun),
360356
Afters = fetch_all(Config, CounterSpecs),
361357
[ assert_counter_inc(Name, N, find(Name, Befores), find(Name, Afters))
362-
|| {_, Name, N} <- CounterSpecs ],
358+
|| {Name, N} <- CounterSpecs ],
363359
StoryResult.
364360

365361
fetch_all(Config, CounterSpecs) ->
366-
[ {Counter, fetch_counter_value(Scope, Counter, Config)}
367-
|| {Scope, Counter, _} <- CounterSpecs ].
362+
FetchCounterFun = case metrics_helper:all_metrics_are_global(Config) of
363+
true -> fun fetch_global_spiral_values/2;
364+
_ -> fun fetch_counter_value/2
365+
end,
366+
[ {Counter, FetchCounterFun(Counter, Config)}
367+
|| {Counter, _} <- CounterSpecs ].
368368

369369
find(CounterName, CounterList) ->
370370
case lists:keyfind(CounterName, 1, CounterList) of
371371
false -> error(counter_defined_incorrectly);
372372
{CounterName, Val} -> Val end.
373373

374-
fetch_counter_value(global, Counter, Config) ->
375-
fetch_global_spiral_values(Counter, Config);
376-
fetch_counter_value(HostType, Counter, Config) ->
374+
fetch_counter_value(Counter, _Config) ->
377375
Metric = atom_to_binary(Counter, utf8),
378376

377+
HostType = host_type(),
379378
HostTypeName = metrics_helper:make_host_type_name(HostType),
380379

381380
Result = request(<<"GET">>, ["/metrics/host_type/", HostTypeName, "/", Metric]),

Diff for: big_tests/tests/metrics_c2s_SUITE.erl

+1-3
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,6 @@ assert_event(Dir, ClientOrJid, Measurements, CheckElFun) when is_function(CheckE
191191
Jid = jid:from_binary(escalus_utils:get_jid(ClientOrJid)),
192192
Filter = fun(M = #{element := El}) ->
193193
maps:remove(element, M) =:= Measurements#{jid => Jid, count => 1,
194-
host_type => host_type(),
195194
byte_size => exml:xml_size(El)}
196195
andalso CheckElFun(El)
197196
end,
@@ -201,7 +200,6 @@ assert_event(Dir, ClientOrJid, Measurements, CheckElFun) when is_function(CheckE
201200
assert_events(Dir, CheckElFun) ->
202201
Filter = fun(M = #{element := El}) ->
203202
maps:remove(element, M) =:= #{jid => undefined, count => 1,
204-
host_type => host_type(),
205203
byte_size => exml:xml_size(El)}
206204
andalso CheckElFun(El)
207205
end,
@@ -210,7 +208,7 @@ assert_events(Dir, CheckElFun) ->
210208
event_name(out) -> xmpp_element_out;
211209
event_name(in) -> xmpp_element_in.
212210

213-
labels() -> #{connection_type => c2s}.
211+
labels() -> #{connection_type => c2s, host_type => host_type()}.
214212

215213
%% SM instrumentation events
216214

Diff for: big_tests/tests/mim_c2s_SUITE.erl

+2-2
Original file line numberDiff line numberDiff line change
@@ -252,5 +252,5 @@ tls_instrumentation_events() ->
252252
common_instrumentation_events() ->
253253
HostType = domain_helper:host_type(),
254254
[{c2s_message_processed, #{host_type => HostType}},
255-
{xmpp_element_in, #{connection_type => c2s}},
256-
{xmpp_element_out, #{connection_type => c2s}}].
255+
{xmpp_element_in, #{connection_type => c2s, host_type => HostType}},
256+
{xmpp_element_out, #{connection_type => c2s, host_type => HostType}}].

Diff for: big_tests/tests/s2s_SUITE.erl

+4-3
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
-include_lib("eunit/include/eunit.hrl").
1414

1515
-import(distributed_helper, [mim/0, rpc_spec/1, rpc/4]).
16+
-import(domain_helper, [host_type/0]).
1617

1718
-include_lib("common_test/include/ct.hrl").
1819

@@ -589,7 +590,7 @@ shared_secret(mim2) -> <<"9e438f25e81cf347100b">>.
589590
assert_events(TS, Config) ->
590591
TLS = proplists:get_value(requires_tls, Config, false),
591592
{DataInEvent, DataOutEvent} = data_events(TLS),
592-
Labels = #{connection_type => s2s},
593+
Labels = #{connection_type => s2s, host_type => host_type()},
593594
Opts = #{min_timestamp => TS},
594595

595596
SizeFilter = fun(#{byte_size := S}) -> S > 0 end,
@@ -665,8 +666,8 @@ group_with_tls(node1_tls_optional_node2_tls_required_trusted_with_cachain) -> tr
665666
group_with_tls(_GN) -> false.
666667

667668
tested_events() ->
668-
[{xmpp_element_in, #{connection_type => s2s}},
669-
{xmpp_element_out, #{connection_type => s2s}},
669+
[{xmpp_element_in, #{connection_type => s2s, host_type => host_type()}},
670+
{xmpp_element_out, #{connection_type => s2s, host_type => host_type()}},
670671
{tls_data_in, #{connection_type => s2s}},
671672
{tls_data_out, #{connection_type => s2s}},
672673
{tcp_data_in, #{connection_type => s2s}},

Diff for: src/c2s/mongoose_c2s.erl

+4-15
Original file line numberDiff line numberDiff line change
@@ -66,14 +66,8 @@
6666

6767
-spec instrumentation() -> [mongoose_instrument:spec()].
6868
instrumentation() ->
69-
ElementMetrics = mongoose_measurements:element_metrics(),
70-
[{tcp_data_in, #{connection_type => c2s}, #{metrics => #{byte_size => spiral}}},
71-
{tcp_data_out, #{connection_type => c2s}, #{metrics => #{byte_size => spiral}}},
72-
{tls_data_in, #{connection_type => c2s}, #{metrics => #{byte_size => spiral}}},
73-
{tls_data_out, #{connection_type => c2s}, #{metrics => #{byte_size => spiral}}},
74-
{xmpp_element_out, #{connection_type => c2s}, #{metrics => ElementMetrics}},
75-
{xmpp_element_in, #{connection_type => c2s}, #{metrics => ElementMetrics}} |
76-
lists:flatmap(fun instrumentation/1, ?ALL_HOST_TYPES)].
69+
lists:flatmap(fun instrumentation/1, ?ALL_HOST_TYPES) ++
70+
mongoose_instrument_xmpp:instrumentation(c2s).
7771

7872
-spec instrumentation(mongooseim:host_type()) -> [mongoose_instrument:spec()].
7973
instrumentation(HostType) when is_binary(HostType) ->
@@ -1233,10 +1227,5 @@ merge_states(S0 = #c2s_data{}, S1 = #c2s_data{}) ->
12331227

12341228
-spec execute_element_event(exml:element(), data(), mongoose_instrument:event_name()) -> ok.
12351229
execute_element_event(Element, #c2s_data{host_type = HostType, jid = Jid}, EventName) ->
1236-
Measurements = mongoose_measurements:measure_element(Element),
1237-
mongoose_instrument:execute(EventName, labels(),
1238-
Measurements#{host_type => HostType, jid => Jid}).
1239-
1240-
-spec labels() -> mongoose_instrument:labels().
1241-
labels() ->
1242-
#{connection_type => c2s}.
1230+
mongoose_instrument_xmpp:execute_element_event(EventName, c2s, HostType, Element,
1231+
#{jid => Jid}).

Diff for: src/component/mongoose_component_connection.erl

+2-6
Original file line numberDiff line numberDiff line change
@@ -435,9 +435,5 @@ unregister_routes(#component_data{component = Component}) ->
435435

436436
-spec execute_element_event(exml:element(), jid:lserver(), mongoose_instrument:event_name()) -> ok.
437437
execute_element_event(Element, LServer, EventName) ->
438-
Measurements = mongoose_measurements:measure_element(Element),
439-
mongoose_instrument:execute(EventName, labels(), Measurements#{lserver => LServer}).
440-
441-
-spec labels() -> mongoose_instrument:labels().
442-
labels() ->
443-
#{connection_type => component}.
438+
mongoose_instrument_xmpp:execute_element_event(EventName, component, undefined, Element,
439+
#{lserver => LServer}).

Diff for: src/component/mongoose_component_listener.erl

+2-8
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,8 @@
99
%% mongoose_listener
1010
-spec instrumentation(_) -> [mongoose_instrument:spec()].
1111
instrumentation(_) ->
12-
ElementMetrics = mongoose_measurements:element_metrics(),
13-
[{tcp_data_in, #{connection_type => component}, #{metrics => #{byte_size => spiral}}},
14-
{tcp_data_out, #{connection_type => component}, #{metrics => #{byte_size => spiral}}},
15-
{tls_data_in, #{connection_type => component}, #{metrics => #{byte_size => spiral}}},
16-
{tls_data_out, #{connection_type => component}, #{metrics => #{byte_size => spiral}}},
17-
{xmpp_element_out, #{connection_type => component}, #{metrics => ElementMetrics}},
18-
{xmpp_element_in, #{connection_type => component}, #{metrics => ElementMetrics}},
19-
{component_auth_failed, #{}, #{metrics => #{count => spiral}}}].
12+
[{component_auth_failed, #{}, #{metrics => #{count => spiral}}} |
13+
mongoose_instrument_xmpp:instrumentation(component)].
2014

2115
%% mongoose_listener
2216
-spec listener_spec(mongoose_listener:options()) -> supervisor:child_spec().

Diff for: src/instrument/mongoose_instrument_exometer.erl

+1-1
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ exometer_labels(#{} = Labels) ->
187187
[V || {_K, V} <- lists:keysort(1, maps:to_list(Labels))].
188188

189189
-spec get_host_type_prefix(mongoose_instrument:labels()) -> mongooseim:host_type_or_global().
190-
get_host_type_prefix(#{host_type := HostType}) ->
190+
get_host_type_prefix(#{host_type := HostType}) when HostType =/= undefined ->
191191
case persistent_term:get(?PREFIXES, #{}) of
192192
#{HostType := Prefix} -> Prefix;
193193
#{} -> make_host_type_prefix(HostType, all_metrics_are_global())

0 commit comments

Comments
 (0)