feat: add prometheus collectors config

This commit is contained in:
Zhongwen Deng 2022-10-25 09:41:58 +08:00
parent 2d606c1159
commit 6710736243
4 changed files with 137 additions and 3 deletions

View File

@ -980,7 +980,7 @@ desc("authorization") ->
desc(_) ->
undefined.
translations() -> ["ekka", "kernel", "emqx", "gen_rpc"].
translations() -> ["ekka", "kernel", "emqx", "gen_rpc", "prometheus"].
translation("ekka") ->
[{"cluster_discovery", fun tr_cluster_discovery/1}];
@ -997,7 +997,37 @@ translation("emqx") ->
{"local_override_conf_file", fun tr_local_override_conf_file/1}
];
translation("gen_rpc") ->
[{"default_client_driver", fun tr_default_config_driver/1}].
[{"default_client_driver", fun tr_default_config_driver/1}];
translation("prometheus") ->
[
{"vm_dist_collector_metrics", fun tr_vm_dist_collector/1},
{"mnesia_collector_metrics", fun tr_mnesia_collector/1},
{"vm_statistics_collector_metrics", fun tr_vm_statistics_collector/1},
{"vm_system_info_collector_metrics", fun tr_vm_system_info_collector/1},
{"vm_memory_collector_metrics", fun tr_vm_memory_collector/1},
{"vm_msacc_collector_metrics", fun tr_vm_msacc_collector/1}
].
tr_vm_dist_collector(Conf) ->
metrics_enabled(conf_get("prometheus.vm_dist_collector", Conf, enabled)).
tr_mnesia_collector(Conf) ->
metrics_enabled(conf_get("prometheus.mnesia_collector", Conf, enabled)).
tr_vm_statistics_collector(Conf) ->
metrics_enabled(conf_get("prometheus.vm_statistics_collector", Conf, enabled)).
tr_vm_system_info_collector(Conf) ->
metrics_enabled(conf_get("prometheus.vm_system_info_collector", Conf, enabled)).
tr_vm_memory_collector(Conf) ->
metrics_enabled(conf_get("prometheus.vm_system_info_collector", Conf, enabled)).
tr_vm_msacc_collector(Conf) ->
metrics_enabled(conf_get("prometheus.vm_system_info_collector", Conf, enabled)).
metrics_enabled(enabled) -> all;
metrics_enabled(disabled) -> [].
tr_default_config_driver(Conf) ->
conf_get("rpc.driver", Conf).

View File

@ -30,4 +30,41 @@ emqx_prometheus_schema {
zh: """开启或关闭 Prometheus 数据推送"""
}
}
vm_dist_collector {
desc {
en: """Enable or disable VM distribution collector, collects information about the sockets and processes involved in the Erlang distribution mechanism."""
zh: """开启或关闭 VM 分布采集器,收集 Erlang 分布机制中涉及的套接字和进程的信息。"""
}
}
mnesia_collector {
desc {
en: """Enable or disable Mnesia collector, collects Mnesia metrics mainly using mnesia:system_info/1 ."""
zh: """开启或关闭 Mnesia 采集器, 使用 mnesia:system_info/1 收集 Mnesia 相关指标"""
}
}
vm_statistics_collector {
desc {
en: """Enable or disable VM statistics collector, collects Erlang VM metrics using erlang:statistics/1 ."""
zh: """开启或关闭 VM 统计采集器, 使用 erlang:statistics/1 收集 Erlang VM 相关指标"""
}
}
vm_system_info_collector {
desc {
en: """Enable or disable VM system info collector, collects Erlang VM metrics using erlang:system_info/1 ."""
zh: """开启或关闭 VM 系统信息采集器, 使用 erlang:system_info/1 收集 Erlang VM 相关指标"""
}
}
vm_memory_collector {
desc {
en: """Enable or disable VM memory collector, collects information about memory dynamically allocated by the Erlang emulator using erlang:memory/0 , also provides basic (D)ETS statistics ."""
zh: """开启或关闭 VM 内存采集器, 使用 erlang:memory/0 收集 Erlang 虚拟机动态分配的内存信息,同时提供基本的 (D)ETS 统计信息"""
}
}
vm_msacc_collector {
desc {
en: """Enable or disable VM msacc collector, collects microstate accounting metrics using erlang:statistics(microstate_accounting) ."""
zh: """开启或关闭 VM msacc 采集器, 使用 erlang:statistics(microstate_accounting) 收集微状态计数指标"""
}
}
}

View File

@ -59,6 +59,66 @@ fields("prometheus") ->
required => true,
desc => ?DESC(enable)
}
)},
{vm_dist_collector,
?HOCON(
hoconsc:enum([enabled, disabled]),
#{
default => enabled,
required => true,
hidden => true,
desc => ?DESC(vm_dist_collector)
}
)},
{mnesia_collector,
?HOCON(
hoconsc:enum([enabled, disabled]),
#{
default => enabled,
required => true,
hidden => true,
desc => ?DESC(mnesia_collector)
}
)},
{vm_statistics_collector,
?HOCON(
hoconsc:enum([enabled, disabled]),
#{
default => enabled,
required => true,
hidden => true,
desc => ?DESC(vm_statistics_collector)
}
)},
{vm_system_info_collector,
?HOCON(
hoconsc:enum([enabled, disabled]),
#{
default => enabled,
required => true,
hidden => true,
desc => ?DESC(vm_system_info_collector)
}
)},
{vm_memory_collector,
?HOCON(
hoconsc:enum([enabled, disabled]),
#{
default => enabled,
required => true,
hidden => true,
desc => ?DESC(vm_memory_collector)
}
)},
{vm_msacc_collector,
?HOCON(
hoconsc:enum([enabled, disabled]),
#{
default => enabled,
required => true,
hidden => true,
desc => ?DESC(vm_msacc_collector)
}
)}
].

View File

@ -28,6 +28,12 @@
" push_gateway_server = \"http://127.0.0.1:9091\"\n"
" interval = \"1s\"\n"
" enable = true\n"
" vm_dist_collector = enabled\n"
" mnesia_collector = enabled\n"
" vm_statistics_collector = disabled\n"
" vm_system_info_collector = disabled\n"
" vm_memory_collector = enabled\n"
" vm_msacc_collector = enabled\n"
"}\n"
>>).
@ -71,7 +77,8 @@ t_start_stop(_) ->
%% wait the interval timer tigger
timer:sleep(2000).
t_test(_) ->
t_collector_no_crash_test(_) ->
prometheus_text_format:format(),
ok.
t_only_for_coverage(_) ->