Merge pull request #9222 from zhongwencool/add-prometheus-collector-switch

feat: add prometheus collectors config
This commit is contained in:
zhongwencool 2022-10-25 22:10:28 +08:00 committed by GitHub
commit 8fa9a06337
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 140 additions and 5 deletions

View File

@ -980,7 +980,7 @@ desc("authorization") ->
desc(_) -> desc(_) ->
undefined. undefined.
translations() -> ["ekka", "kernel", "emqx", "gen_rpc"]. translations() -> ["ekka", "kernel", "emqx", "gen_rpc", "prometheus"].
translation("ekka") -> translation("ekka") ->
[{"cluster_discovery", fun tr_cluster_discovery/1}]; [{"cluster_discovery", fun tr_cluster_discovery/1}];
@ -997,7 +997,37 @@ translation("emqx") ->
{"local_override_conf_file", fun tr_local_override_conf_file/1} {"local_override_conf_file", fun tr_local_override_conf_file/1}
]; ];
translation("gen_rpc") -> 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_memory_collector", Conf, enabled)).
tr_vm_msacc_collector(Conf) ->
metrics_enabled(conf_get("prometheus.vm_msacc_collector", Conf, enabled)).
metrics_enabled(enabled) -> all;
metrics_enabled(disabled) -> [].
tr_default_config_driver(Conf) -> tr_default_config_driver(Conf) ->
conf_get("rpc.driver", Conf). conf_get("rpc.driver", Conf).

View File

@ -30,4 +30,41 @@ emqx_prometheus_schema {
zh: """开启或关闭 Prometheus 数据推送""" 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

@ -2,7 +2,7 @@
{application, emqx_prometheus, [ {application, emqx_prometheus, [
{description, "Prometheus for EMQX"}, {description, "Prometheus for EMQX"},
% strict semver, bump manually! % strict semver, bump manually!
{vsn, "5.0.2"}, {vsn, "5.0.3"},
{modules, []}, {modules, []},
{registered, [emqx_prometheus_sup]}, {registered, [emqx_prometheus_sup]},
{applications, [kernel, stdlib, prometheus, emqx]}, {applications, [kernel, stdlib, prometheus, emqx]},

View File

@ -147,7 +147,8 @@ handle_info({timeout, R, ?TIMER_MSG}, State = #state{timer = R, push_gateway = U
Url = lists:concat([Uri, "/metrics/job/", Name, "/instance/", Name, "~", Ip]), Url = lists:concat([Uri, "/metrics/job/", Name, "/instance/", Name, "~", Ip]),
Data = prometheus_text_format:format(), Data = prometheus_text_format:format(),
httpc:request(post, {Url, [], "text/plain", Data}, [{autoredirect, true}], []), httpc:request(post, {Url, [], "text/plain", Data}, [{autoredirect, true}], []),
{noreply, ensure_timer(State)}; %% Data is too big, hibernate for saving memory and stop system monitor warning.
{noreply, ensure_timer(State), hibernate};
handle_info(_Msg, State) -> handle_info(_Msg, State) ->
{noreply, State}. {noreply, State}.

View File

@ -59,6 +59,66 @@ fields("prometheus") ->
required => true, required => true,
desc => ?DESC(enable) 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" " push_gateway_server = \"http://127.0.0.1:9091\"\n"
" interval = \"1s\"\n" " interval = \"1s\"\n"
" enable = true\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" "}\n"
>>). >>).
@ -71,7 +77,8 @@ t_start_stop(_) ->
%% wait the interval timer tigger %% wait the interval timer tigger
timer:sleep(2000). timer:sleep(2000).
t_test(_) -> t_collector_no_crash_test(_) ->
prometheus_text_format:format(),
ok. ok.
t_only_for_coverage(_) -> t_only_for_coverage(_) ->