mirror of https://github.com/openwrt/packages.git
74 lines
1.9 KiB
Bash
74 lines
1.9 KiB
Bash
#!/bin/sh /etc/rc.common
|
|
# Copyright (C) 2013-2017 OpenWrt.org
|
|
|
|
START=60
|
|
USE_PROCD=1
|
|
|
|
_log() {
|
|
logger -p daemon.info -t prometheus-node-exporter-ucode "$@"
|
|
}
|
|
|
|
start_service() {
|
|
. /lib/functions/network.sh
|
|
|
|
local interface port bind4 bind6
|
|
|
|
config_load prometheus-node-exporter-ucode.main
|
|
config_get interface "main" listen_interface "loopback"
|
|
config_get port "main" listen_port 9101
|
|
config_get keepalive "main" http_keepalive 70
|
|
|
|
[ "$interface" = "*" ] || {
|
|
network_get_ipaddr bind4 "$interface"
|
|
network_get_ipaddr6 bind6 "$interface"
|
|
[ -n "$bind4$bind6" ] || {
|
|
_log "defering start until listen interface $interface becomes ready"
|
|
return 0
|
|
}
|
|
}
|
|
|
|
procd_open_instance
|
|
|
|
procd_set_param command /usr/sbin/uhttpd -f -c /dev/null -h /dev/null -S -D -o /metrics -O /usr/share/ucode/node-exporter/metrics.uc
|
|
|
|
if [ "$interface" = "*" ]; then
|
|
procd_append_param command -p $port
|
|
else
|
|
[ -n "$bind4" ] && procd_append_param command -p $bind4:$port
|
|
[ -n "$bind6" ] && procd_append_param command -p [$bind6]:$port
|
|
fi
|
|
[ $keepalive -gt 0 ] && procd_append_param command -k $keepalive
|
|
|
|
procd_add_jail prometheus-node-exporter-ucode log procfs sysfs ubus
|
|
procd_add_jail_mount "/usr/lib/uhttpd_ucode.so"
|
|
procd_add_jail_mount "/lib/libubus.so*"
|
|
procd_add_jail_mount "/lib/libuci.so"
|
|
procd_add_jail_mount "/usr/lib/ucode"
|
|
procd_add_jail_mount "/usr/lib/libnl*.so*"
|
|
procd_add_jail_mount "/usr/share/ucode/node-exporter"
|
|
procd_add_jail_mount "/etc/config"
|
|
|
|
# TODO breaks the dsl collector?
|
|
#procd_set_param user nobody
|
|
#procd_set_param group nogroup
|
|
procd_set_param no_new_privs 1
|
|
|
|
procd_set_param stdout 1
|
|
procd_set_param stderr 1
|
|
procd_set_param respawn
|
|
|
|
procd_close_instance
|
|
}
|
|
|
|
service_triggers()
|
|
{
|
|
local interface
|
|
|
|
procd_add_reload_trigger "prometheus-node-exporter-ucode"
|
|
|
|
config_load prometheus-node-exporter-ucode.main
|
|
config_get interface "main" listen_interface "loopback"
|
|
|
|
[ "$interface" = "*" ] || procd_add_reload_interface_trigger "$interface"
|
|
}
|