feat: add prometheus.push_gateway.enable config
This commit is contained in:
parent
c4eb9f86e7
commit
b2e168d508
|
@ -64,15 +64,12 @@ to_recommend_type(Conf) ->
|
||||||
}.
|
}.
|
||||||
|
|
||||||
to_push_gateway(Conf) ->
|
to_push_gateway(Conf) ->
|
||||||
Init = maps:with([<<"interval">>, <<"headers">>, <<"job_name">>], Conf),
|
Init = maps:with([<<"interval">>, <<"headers">>, <<"job_name">>, <<"enable">>], Conf),
|
||||||
case maps:get(<<"push_gateway_server">>, Conf, "") of
|
case maps:get(<<"push_gateway_server">>, Conf, "") of
|
||||||
"" ->
|
"" ->
|
||||||
Init#{<<"url">> => <<"">>};
|
Init#{<<"enable">> => false};
|
||||||
Url ->
|
Url ->
|
||||||
case maps:get(<<"enable">>, Conf, false) of
|
Init#{<<"url">> => Url}
|
||||||
false -> Init#{<<"url">> => <<"">>};
|
|
||||||
true -> Init#{<<"url">> => Url}
|
|
||||||
end
|
|
||||||
end.
|
end.
|
||||||
|
|
||||||
to_collectors(Conf) ->
|
to_collectors(Conf) ->
|
||||||
|
@ -134,6 +131,9 @@ update_auth(_, _) ->
|
||||||
conf() ->
|
conf() ->
|
||||||
emqx_config:get(?PROMETHEUS).
|
emqx_config:get(?PROMETHEUS).
|
||||||
|
|
||||||
is_push_gateway_server_enabled(#{enable := true, push_gateway_server := Url}) -> Url =/= "";
|
is_push_gateway_server_enabled(#{enable := true, push_gateway_server := Url}) ->
|
||||||
is_push_gateway_server_enabled(#{push_gateway := #{url := Url}}) -> Url =/= "";
|
Url =/= "";
|
||||||
is_push_gateway_server_enabled(_) -> false.
|
is_push_gateway_server_enabled(#{push_gateway := #{url := Url, enable := Enable}}) ->
|
||||||
|
Enable andalso Url =/= "";
|
||||||
|
is_push_gateway_server_enabled(_) ->
|
||||||
|
false.
|
||||||
|
|
|
@ -72,12 +72,21 @@ fields(recommend_setting) ->
|
||||||
];
|
];
|
||||||
fields(push_gateway) ->
|
fields(push_gateway) ->
|
||||||
[
|
[
|
||||||
|
{enable,
|
||||||
|
?HOCON(
|
||||||
|
boolean(),
|
||||||
|
#{
|
||||||
|
default => false,
|
||||||
|
required => true,
|
||||||
|
desc => ?DESC(push_gateway_enable)
|
||||||
|
}
|
||||||
|
)},
|
||||||
{url,
|
{url,
|
||||||
?HOCON(
|
?HOCON(
|
||||||
string(),
|
string(),
|
||||||
#{
|
#{
|
||||||
required => false,
|
required => false,
|
||||||
default => <<"">>,
|
default => <<"http://127.0.0.1:9091">>,
|
||||||
validator => fun ?MODULE:validate_url/1,
|
validator => fun ?MODULE:validate_url/1,
|
||||||
desc => ?DESC(push_gateway_url)
|
desc => ?DESC(push_gateway_url)
|
||||||
}
|
}
|
||||||
|
@ -197,7 +206,7 @@ fields(legacy_deprecated_setting) ->
|
||||||
)},
|
)},
|
||||||
{headers,
|
{headers,
|
||||||
?HOCON(
|
?HOCON(
|
||||||
list({string(), string()}),
|
typerefl:alias("map", list({string(), string()}), #{}, [string(), string()]),
|
||||||
#{
|
#{
|
||||||
default => #{},
|
default => #{},
|
||||||
required => false,
|
required => false,
|
||||||
|
@ -214,7 +223,6 @@ fields(legacy_deprecated_setting) ->
|
||||||
desc => ?DESC(legacy_job_name)
|
desc => ?DESC(legacy_job_name)
|
||||||
}
|
}
|
||||||
)},
|
)},
|
||||||
|
|
||||||
{enable,
|
{enable,
|
||||||
?HOCON(
|
?HOCON(
|
||||||
boolean(),
|
boolean(),
|
||||||
|
@ -353,11 +361,6 @@ validate_url(Url) ->
|
||||||
S =:= <<"http">>
|
S =:= <<"http">>
|
||||||
->
|
->
|
||||||
ok;
|
ok;
|
||||||
%% default is ""
|
|
||||||
#{path := []} ->
|
|
||||||
ok;
|
|
||||||
#{path := <<>>} ->
|
|
||||||
ok;
|
|
||||||
_ ->
|
_ ->
|
||||||
{error, "Invalid url"}
|
{error, "Invalid url"}
|
||||||
end.
|
end.
|
||||||
|
|
|
@ -53,6 +53,7 @@
|
||||||
},
|
},
|
||||||
<<"push_gateway">> =>
|
<<"push_gateway">> =>
|
||||||
#{
|
#{
|
||||||
|
<<"enable">> => true,
|
||||||
<<"headers">> => #{<<"Authorization">> => <<"some-authz-tokens">>},
|
<<"headers">> => #{<<"Authorization">> => <<"some-authz-tokens">>},
|
||||||
<<"interval">> => <<"1s">>,
|
<<"interval">> => <<"1s">>,
|
||||||
<<"job_name">> => <<"${name}~${host}">>,
|
<<"job_name">> => <<"${name}~${host}">>,
|
||||||
|
|
|
@ -180,11 +180,11 @@ t_prometheus_api(_) ->
|
||||||
),
|
),
|
||||||
#{
|
#{
|
||||||
<<"push_gateway">> :=
|
<<"push_gateway">> :=
|
||||||
#{<<"url">> := Url} = PushGateway,
|
#{<<"url">> := Url, <<"enable">> := Enable} = PushGateway,
|
||||||
<<"collectors">> := Collector
|
<<"collectors">> := Collector
|
||||||
} = Conf,
|
} = Conf,
|
||||||
Pid = erlang:whereis(emqx_prometheus),
|
Pid = erlang:whereis(emqx_prometheus),
|
||||||
?assertEqual(Url =/= "", undefined =/= Pid, {Url, Pid}),
|
?assertEqual(Enable, undefined =/= Pid, {Url, Pid}),
|
||||||
|
|
||||||
NewConf = Conf#{
|
NewConf = Conf#{
|
||||||
<<"push_gateway">> => PushGateway#{
|
<<"push_gateway">> => PushGateway#{
|
||||||
|
@ -250,7 +250,7 @@ t_prometheus_api(_) ->
|
||||||
emqx_config:get([prometheus])
|
emqx_config:get([prometheus])
|
||||||
),
|
),
|
||||||
|
|
||||||
NewConf1 = Conf#{<<"push_gateway">> => PushGateway#{<<"url">> => <<"">>}},
|
NewConf1 = Conf#{<<"push_gateway">> => PushGateway#{<<"enable">> => false}},
|
||||||
{ok, _Response3} = emqx_mgmt_api_test_util:request_api(put, Path, "", Auth, NewConf1),
|
{ok, _Response3} = emqx_mgmt_api_test_util:request_api(put, Path, "", Auth, NewConf1),
|
||||||
?assertEqual(undefined, erlang:whereis(emqx_prometheus)),
|
?assertEqual(undefined, erlang:whereis(emqx_prometheus)),
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,24 @@
|
||||||
## Prometheus
|
## Prometheus
|
||||||
|
|
||||||
## EMQX's Prometheus scraping endpoint is enabled by default without authentication.
|
## EMQX's Prometheus scraping endpoint is enabled by default without authentication.
|
||||||
## And there is no way to turn it off.
|
## You can enable basic authentication by setting enable_basic_auth to true.
|
||||||
## You can inspect it with a curl command: curl -f "127.0.0.1:18083/api/v5/prometheus/stats"
|
## You can inspect it with a curl command: curl -f "127.0.0.1:18083/api/v5/prometheus/stats"
|
||||||
|
|
||||||
prometheus {
|
prometheus {
|
||||||
# turn off this expensive collector
|
enable_basic_auth = false
|
||||||
vm_dist_collector = disabled
|
push_gateway {
|
||||||
|
enable = false
|
||||||
|
url = "http://127.0.0.1:9091"
|
||||||
|
headers {Authorization = "Basic YWRtaW46Y2JraG55eWd5QDE="}
|
||||||
|
interval = 15s
|
||||||
|
job_name = "${name}/instance/${name}~${host}"
|
||||||
|
}
|
||||||
|
collectors {
|
||||||
|
mnesia = disabled
|
||||||
|
vm_dist = disabled
|
||||||
|
vm_memory = disabled
|
||||||
|
vm_msacc = disabled
|
||||||
|
vm_statistics = disabled
|
||||||
|
vm_system_info = enabled
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,8 +37,9 @@ recommend_setting.desc:
|
||||||
"""Recommended setting"""
|
"""Recommended setting"""
|
||||||
|
|
||||||
push_gateway_url.desc:
|
push_gateway_url.desc:
|
||||||
"""URL of Pushgateway server. Pushgateway is optional, should not be configured if prometheus is to scrape EMQX.
|
"""URL of Pushgateway server. Pushgateway is optional, should not be configured if prometheus is to scrape EMQX."""
|
||||||
Set url to "" to disable push gateway"""
|
push_gateway_enable.desc:
|
||||||
|
"""Enable or disable Pushgateway"""
|
||||||
|
|
||||||
mnesia_collector.desc:
|
mnesia_collector.desc:
|
||||||
"""Collects Mnesia metrics mainly using <code> mnesia:system_info/1 </code>"""
|
"""Collects Mnesia metrics mainly using <code> mnesia:system_info/1 </code>"""
|
||||||
|
@ -61,42 +62,42 @@ vm_system_info_collector.desc:
|
||||||
"""Enable or disable VM system info collector."""
|
"""Enable or disable VM system info collector."""
|
||||||
|
|
||||||
legacy_deprecated_setting.desc:
|
legacy_deprecated_setting.desc:
|
||||||
"""Deprecated"""
|
"""Deprecated since 5.4.0"""
|
||||||
|
|
||||||
legacy_enable.desc:
|
legacy_enable.desc:
|
||||||
"""Deprecated, use `prometheus.push_gateway.url` instead"""
|
"""Deprecated since 5.4.0, use `prometheus.push_gateway.url` instead"""
|
||||||
|
|
||||||
legacy_headers.desc:
|
legacy_headers.desc:
|
||||||
"""Deprecated, use `prometheus.push_gateway.headers` instead"""
|
"""Deprecated since 5.4.0, use `prometheus.push_gateway.headers` instead"""
|
||||||
|
|
||||||
legacy_interval.desc:
|
legacy_interval.desc:
|
||||||
"""Deprecated, use `prometheus.push_gateway.interval` instead"""
|
"""Deprecated since 5.4.0, use `prometheus.push_gateway.interval` instead"""
|
||||||
|
|
||||||
legacy_job_name.desc:
|
legacy_job_name.desc:
|
||||||
"""Deprecated, use `prometheus.push_gateway.job_name` instead"""
|
"""Deprecated since 5.4.0, use `prometheus.push_gateway.job_name` instead"""
|
||||||
|
|
||||||
legacy_push_gateway_server.desc:
|
legacy_push_gateway_server.desc:
|
||||||
"""Deprecated, use `prometheus.push_gateway.url` instead"""
|
"""Deprecated since 5.4.0, use `prometheus.push_gateway.url` instead"""
|
||||||
|
|
||||||
legacy_mnesia_collector.desc:
|
legacy_mnesia_collector.desc:
|
||||||
"""Deprecated, use `prometheus.collectors.mnesia` instead"""
|
"""Deprecated since 5.4.0, use `prometheus.collectors.mnesia` instead"""
|
||||||
|
|
||||||
legacy_vm_dist_collector.desc:
|
legacy_vm_dist_collector.desc:
|
||||||
"""Deprecated, use `prometheus.collectors.vm_dist` instead"""
|
"""Deprecated since 5.4.0, use `prometheus.collectors.vm_dist` instead"""
|
||||||
|
|
||||||
legacy_vm_memory_collector.desc:
|
legacy_vm_memory_collector.desc:
|
||||||
"""Deprecated, use `prometheus.collectors.vm_memory` instead"""
|
"""Deprecated since 5.4.0, use `prometheus.collectors.vm_memory` instead"""
|
||||||
|
|
||||||
legacy_vm_msacc_collector.desc:
|
legacy_vm_msacc_collector.desc:
|
||||||
"""Deprecated, use `prometheus.collectors.vm_msacc` instead"""
|
"""Deprecated since 5.4.0, use `prometheus.collectors.vm_msacc` instead"""
|
||||||
|
|
||||||
legacy_vm_statistics_collector.desc:
|
legacy_vm_statistics_collector.desc:
|
||||||
"""Deprecated, use `prometheus.collectors.vm_statistics` instead"""
|
"""Deprecated since 5.4.0, use `prometheus.collectors.vm_statistics` instead"""
|
||||||
|
|
||||||
legacy_vm_system_info_collector.desc:
|
legacy_vm_system_info_collector.desc:
|
||||||
"""Deprecated, use `prometheus.collectors.vm_system_info` instead"""
|
"""Deprecated, use `prometheus.collectors.vm_system_info` instead"""
|
||||||
|
|
||||||
legacy_deprecated_setting.desc:
|
legacy_deprecated_setting.desc:
|
||||||
"""Deprecated"""
|
"""Deprecated since 5.4.0"""
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue