| #!/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" |
| } |