|
18 | 18 |
|
19 | 19 | -import(prometheus_text_format, [escape_label_value/1]).
|
20 | 20 |
|
| 21 | +-include_lib("stdlib/include/assert.hrl"). |
| 22 | +-include_lib("kernel/include/logger.hrl"). |
21 | 23 | -include_lib("rabbit_common/include/rabbit.hrl").
|
22 | 24 |
|
23 | 25 | -behaviour(prometheus_collector).
|
@@ -298,6 +300,12 @@ deregister_cleanup(_) -> ok.
|
298 | 300 | collect_mf('detailed', Callback) ->
|
299 | 301 | collect(true, ?DETAILED_METRIC_NAME_PREFIX, vhosts_filter_from_pdict(), enabled_mfs_from_pdict(?METRICS_RAW), Callback),
|
300 | 302 | collect(true, ?CLUSTER_METRIC_NAME_PREFIX, vhosts_filter_from_pdict(), enabled_mfs_from_pdict(?METRICS_CLUSTER), Callback),
|
| 303 | + case is_mf_enabled(khepri) of |
| 304 | + true -> |
| 305 | + collect_khepri_info(Callback); |
| 306 | + false -> |
| 307 | + ok |
| 308 | + end, |
301 | 309 | %% identity is here to enable filtering on a cluster name (as already happens in existing dashboards)
|
302 | 310 | emit_identity_info(Callback),
|
303 | 311 | ok;
|
@@ -331,6 +339,20 @@ totals(Callback) ->
|
331 | 339 | end || {Table, Name, Type, Help} <- ?TOTALS],
|
332 | 340 | ok.
|
333 | 341 |
|
| 342 | +collect_khepri_info(Callback) -> |
| 343 | + ServerId = rabbit_khepri:get_server_id(node()), |
| 344 | + maps:foreach( |
| 345 | + fun (Name, #{type := Type, help := Help, values := #{ServerId := Value}}) -> |
| 346 | + Callback( |
| 347 | + create_mf( |
| 348 | + <<?DETAILED_METRIC_NAME_PREFIX/binary, |
| 349 | + "khepri_", |
| 350 | + (prometheus_model_helpers:metric_name(Name))/binary>>, |
| 351 | + Help, Type, [Value])); |
| 352 | + (_Name, _Format) -> |
| 353 | + ok |
| 354 | + end, seshat:format(ra)). |
| 355 | + |
334 | 356 | emit_identity_info(Callback) ->
|
335 | 357 | add_metric_family(build_info(), Callback),
|
336 | 358 | add_metric_family(identity_info(), Callback),
|
@@ -814,12 +836,19 @@ sum('', B) ->
|
814 | 836 | sum(A, B) ->
|
815 | 837 | A + B.
|
816 | 838 |
|
| 839 | +is_mf_enabled(MF) -> |
| 840 | + case get(prometheus_mf_filter) of |
| 841 | + undefined -> |
| 842 | + false; |
| 843 | + MFNameSet -> |
| 844 | + sets:is_element(MF, MFNameSet) |
| 845 | + end. |
| 846 | + |
817 | 847 | enabled_mfs_from_pdict(AllMFs) ->
|
818 | 848 | case get(prometheus_mf_filter) of
|
819 | 849 | undefined ->
|
820 | 850 | [];
|
821 |
| - MFNames -> |
822 |
| - MFNameSet = sets:from_list(MFNames), |
| 851 | + MFNameSet -> |
823 | 852 | [ MF || MF = {Table, _} <- AllMFs, sets:is_element(Table, MFNameSet) ]
|
824 | 853 | end.
|
825 | 854 |
|
|
0 commit comments