-
Notifications
You must be signed in to change notification settings - Fork 20
/
monitoring.init
executable file
·105 lines (90 loc) · 3.3 KB
/
monitoring.init
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#!/bin/sh /etc/rc.common
#
# OpenWISP Monitoring Daemon
# shellcheck disable=SC2034
START=99
STOP=15
USE_PROCD=1
PROG="/usr/sbin/openwisp_monitoring"
PROG_NAME="OpenWISP monitoring daemon"
time_to_seconds() {
time=$1
{ [ "$time" -ge 1 ] 2>/dev/null && seconds="$time"; } \
|| { [ "${time%s}" -ge 1 ] 2>/dev/null && seconds="${time%s}"; } \
|| { [ "${time%m}" -ge 1 ] 2>/dev/null && seconds=$((${time%m} * 60)); } \
|| { [ "${time%h}" -ge 1 ] 2>/dev/null && seconds=$((${time%h} * 3600)); } \
|| { [ "${time%d}" -ge 1 ] 2>/dev/null && seconds=$((${time%d} * 86400)); }
echo $seconds
unset seconds
unset time
}
start_service() {
# for openwisp_config
config_load openwisp
config_get base_url http url
config_get uuid http uuid
config_get key http key
config_get_bool verify_ssl http verify_ssl "1"
config_get respawn_threshold http respawn_threshold
config_get respawn_timeout http respawn_timeout
config_get respawn_retry http respawn_retry
[ -n "$base_url" ] && base_url="--url $base_url"
[ -n "$uuid" ] && uuid="--uuid $uuid"
[ -n "$key" ] && key="--key $key"
[ -n "$verify_ssl" ] && verify_ssl="--verify_ssl $verify_ssl"
if [ -z "$base_url" ]; then
logger -s "url is not set, please add it to /etc/config/openwisp" \
-t openwisp_monitoring \
-p daemon.err
exit 1
fi
if [ -z "$uuid" ] || [ -z "$key" ]; then
logger -s "uuid or key are not set, please add these to /etc/config/openwisp" \
-t openwisp_monitoring \
-p daemon.err
exit 1
fi
# for openwisp_monitoring
config_load openwisp_monitoring
config_get monitored_interfaces monitoring monitored_interfaces "*"
config_get interval monitoring interval "300"
config_get_bool verbose_mode monitoring verbose_mode "0"
config_get required_memory monitoring required_memory "0.05"
config_get max_retries monitoring max_retries "5"
interval="$(time_to_seconds "$interval")"
if [ "$interval" -lt 1 ]; then
logger -s "Interval is invalid. Use time value(eg: '10', '2m', '3h', '1d')" \
-t openwisp_monitoring \
-p daemon.err
exit 1
fi
interval="--interval $interval"
verbose="--verbose_mode ${verbose_mode:-0}"
set -- --monitored_interfaces \""$monitored_interfaces"\"
monitored_interfaces="$*"
required_memory="--required_memory $required_memory"
max_retries="--max_retries $max_retries"
procd_open_instance "openwisp_monitoring_collect_data"
# shellcheck disable=SC2086
procd_set_param command $PROG $interval $monitored_interfaces $verbose $required_memory --mode collect
procd_set_param respawn "${respawn_threshold:-3600}" "${respawn_timeout:-5}" "${respawn_retry:-5}"
[ "$verbose_mode" -eq "1" ] && procd_set_param stdout 1 && procd_set_param stderr 1
procd_close_instance
procd_open_instance "openwisp_monitoring_send_data"
# shellcheck disable=SC2086
procd_set_param command $PROG $base_url $uuid $key $verify_ssl $interval $verbose $max_retries --mode send
procd_set_param respawn "${respawn_threshold:-3600}" "${respawn_timeout:-5}" "${respawn_retry:-5}"
[ "$verbose_mode" -eq "1" ] && procd_set_param stdout 1 && procd_set_param stderr 1
procd_close_instance
logger -s "$PROG_NAME started" \
-t openwisp_monitoring \
-p daemon.info
}
stop_service() {
logger -s "$PROG_NAME stopping" \
-t openwisp_monitoring \
-p daemon.info
}
service_triggers() {
procd_add_reload_trigger "openwisp" "openwisp_monitoring"
}