|
|
@ -6,30 +6,94 @@ USE_PROCD=1 |
|
|
|
PROG=/usr/bin/statsd_exporter |
|
|
|
CONFFILE=/etc/prometheus-statsd-exporter.yml |
|
|
|
|
|
|
|
. /lib/functions/network.sh |
|
|
|
|
|
|
|
_log() { |
|
|
|
logger -p daemon.info -t prometheus-statsd-exporter "$@" |
|
|
|
} |
|
|
|
|
|
|
|
start_service() { |
|
|
|
local web_listen_address |
|
|
|
local web_interface web_port web_ipv6 |
|
|
|
local web_telemetry_path |
|
|
|
local statsd_listen_udp |
|
|
|
local statsd_listen_tcp |
|
|
|
local statsd_udp_interface statsd_udp_port statsd_udp_ipv6 |
|
|
|
local statsd_tcp_interface statsd_tcp_port statsd_tcp_ipv6 |
|
|
|
local statsd_mapping_config |
|
|
|
local web_ip statsd_udp_ip statsd_tcp_ip |
|
|
|
|
|
|
|
config_load "prometheus-statsd-exporter" |
|
|
|
config_get web_listen_address main web_listen_address "127.0.0.1:9102" |
|
|
|
config_get web_interface main web_interface "loopback" |
|
|
|
config_get web_port main web_port "9102" |
|
|
|
config_get web_ipv6 main web_ipv6 "0" |
|
|
|
config_get web_telemetry_path main web_telemetry_path "/metrics" |
|
|
|
config_get statsd_listen_udp main statsd_listen_udp "127.0.0.1:9125" |
|
|
|
config_get statsd_listen_tcp main statsd_listen_tcp "127.0.0.1:9125" |
|
|
|
config_get statsd_udp_interface main statsd_udp_interface "loopback" |
|
|
|
config_get statsd_udp_port main statsd_udp_port "9125" |
|
|
|
config_get statsd_udp_ipv6 main statsd_udp_ipv6 "0" |
|
|
|
config_get statsd_tcp_interface main statsd_tcp_interface "loopback" |
|
|
|
config_get statsd_tcp_port main statsd_tcp_port "9125" |
|
|
|
config_get statsd_tcp_ipv6 main statsd_tcp_ipv6 "0" |
|
|
|
config_get statsd_mapping_config main statsd_mapping_config "$CONFFILE" |
|
|
|
|
|
|
|
if [ "$web_ipv6" = 1 ]; then |
|
|
|
network_get_ipaddr6 web_ip "$web_interface" |
|
|
|
else |
|
|
|
network_get_ipaddr web_ip "$web_interface" |
|
|
|
fi |
|
|
|
|
|
|
|
network_is_up "$web_interface" && [ -n "$web_ip" ] || { |
|
|
|
_log "defering start until web interface $web_interface becomes ready" |
|
|
|
return 0 |
|
|
|
} |
|
|
|
|
|
|
|
if [ "$statsd_udp_ipv6" = 1 ]; then |
|
|
|
network_get_ipaddr6 statsd_udp_ip "$statsd_udp_interface" |
|
|
|
else |
|
|
|
network_get_ipaddr statsd_udp_ip "$statsd_udp_interface" |
|
|
|
fi |
|
|
|
|
|
|
|
network_is_up "$statsd_udp_interface" && [ -n "$statsd_udp_ip" ] || { |
|
|
|
_log "defering start until statsd udp interface $statsd_udp_interface becomes ready" |
|
|
|
return 0 |
|
|
|
} |
|
|
|
|
|
|
|
if [ "$statsd_tcp_ipv6" = 1 ]; then |
|
|
|
network_get_ipaddr6 statsd_tcp_ip "$statsd_tcp_interface" |
|
|
|
else |
|
|
|
network_get_ipaddr statsd_tcp_ip "$statsd_tcp_interface" |
|
|
|
fi |
|
|
|
|
|
|
|
network_is_up "$statsd_tcp_interface" && [ -n "$statsd_tcp_ip" ] || { |
|
|
|
_log "defering start until statsd tcp interface $statsd_tcp_interface becomes ready" |
|
|
|
return 0 |
|
|
|
} |
|
|
|
|
|
|
|
procd_open_instance |
|
|
|
procd_set_param command "$PROG" |
|
|
|
procd_append_param command --web.listen-address="$web_listen_address" |
|
|
|
procd_append_param command --web.listen-address="${web_ip}:${web_port}" |
|
|
|
procd_append_param command --web.telemetry-path="$web_telemetry_path" |
|
|
|
procd_append_param command --statsd.listen-udp="$statsd_listen_udp" |
|
|
|
procd_append_param command --statsd.listen-tcp="$statsd_listen_tcp" |
|
|
|
procd_append_param command --statsd.listen-udp="${statsd_udp_ip}:${statsd_udp_port}" |
|
|
|
procd_append_param command --statsd.listen-tcp="${statsd_tcp_ip}:${statsd_tcp_port}" |
|
|
|
procd_append_param command --statsd.mapping-config="$statsd_mapping_config" |
|
|
|
procd_append_param command --log.level="warn" |
|
|
|
|
|
|
|
procd_set_param file "$config_file" |
|
|
|
procd_set_param stdout 1 |
|
|
|
procd_set_param stderr 1 |
|
|
|
procd_set_param respawn |
|
|
|
procd_close_instance |
|
|
|
} |
|
|
|
|
|
|
|
service_triggers() |
|
|
|
{ |
|
|
|
local web_interface statsd_udp_interface statsd_tcp_interface |
|
|
|
|
|
|
|
procd_add_reload_trigger "prometheus-statsd-exporter" |
|
|
|
|
|
|
|
config_load "prometheus-statsd-exporter" |
|
|
|
config_get web_interface main web_interface "loopback" |
|
|
|
config_get statsd_udp_interface main statsd_udp_interface "loopback" |
|
|
|
config_get statsd_tcp_interface main statsd_tcp_interface "loopback" |
|
|
|
|
|
|
|
procd_add_reload_interface_trigger "$web_interface" |
|
|
|
procd_add_reload_interface_trigger "$statsd_udp_interface" |
|
|
|
procd_add_reload_interface_trigger "$statsd_tcp_interface" |
|
|
|
} |