blob: 1735236f727987d868a1fe29fd8de544e184d733 [file] [log] [blame]
b.liue9582032025-04-17 19:18:16 +08001#!/bin/sh /etc/rc.common
2# Copyright (C) 2013-2017 OpenWrt.org
3
4START=60
5USE_PROCD=1
6
7_log() {
8 logger -p daemon.info -t prometheus-node-exporter-ucode "$@"
9}
10
11start_service() {
12 . /lib/functions/network.sh
13
14 local interface port bind4 bind6
15
16 config_load prometheus-node-exporter-ucode.main
17 config_get interface "main" listen_interface "loopback"
18 config_get port "main" listen_port 9101
19 config_get keepalive "main" http_keepalive 70
20
21 [ "$interface" = "*" ] || {
22 network_get_ipaddr bind4 "$interface"
23 network_get_ipaddr6 bind6 "$interface"
24 [ -n "$bind4$bind6" ] || {
25 _log "defering start until listen interface $interface becomes ready"
26 return 0
27 }
28 }
29
30 procd_open_instance
31
32 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
33
34 if [ "$interface" = "*" ]; then
35 procd_append_param command -p $port
36 else
37 [ -n "$bind4" ] && procd_append_param command -p $bind4:$port
38 [ -n "$bind6" ] && procd_append_param command -p [$bind6]:$port
39 fi
40 [ $keepalive -gt 0 ] && procd_append_param command -k $keepalive
41
42 procd_add_jail prometheus-node-exporter-ucode log procfs sysfs ubus
43 procd_add_jail_mount "/usr/lib/uhttpd_ucode.so"
44 procd_add_jail_mount "/lib/libubus.so*"
45 procd_add_jail_mount "/lib/libuci.so"
46 procd_add_jail_mount "/usr/lib/ucode"
47 procd_add_jail_mount "/usr/lib/libnl*.so*"
48 procd_add_jail_mount "/usr/share/ucode/node-exporter"
49 procd_add_jail_mount "/etc/config"
50
51 # TODO breaks the dsl collector?
52 #procd_set_param user nobody
53 #procd_set_param group nogroup
54 procd_set_param no_new_privs 1
55
56 procd_set_param stdout 1
57 procd_set_param stderr 1
58 procd_set_param respawn
59
60 procd_close_instance
61}
62
63service_triggers()
64{
65 local interface
66
67 procd_add_reload_trigger "prometheus-node-exporter-ucode"
68
69 config_load prometheus-node-exporter-ucode.main
70 config_get interface "main" listen_interface "loopback"
71
72 [ "$interface" = "*" ] || procd_add_reload_interface_trigger "$interface"
73}