Skip to content

Commit 5bdfed8

Browse files
[enhancement] Move logger calls in subroutine #57
Closes #57
1 parent 7d62793 commit 5bdfed8

2 files changed

Lines changed: 43 additions & 63 deletions

File tree

openwrt-openwisp-monitoring/files/monitoring.agent

Lines changed: 39 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,27 @@ show_version() {
3434

3535
echoerr() { echo "$@" 1>&2 && exit 1; }
3636

37+
log() {
38+
level="$1"
39+
type="$2"
40+
shift 2
41+
42+
if [ "$type" = "-v" ] && [ "$VERBOSE_MODE" -ne "1" ]; then
43+
return 0
44+
fi
45+
46+
case "$level" in
47+
-i) level=daemon.info ;;
48+
-w) level=daemon.warn ;;
49+
-e) level=daemon.err ;;
50+
-*)
51+
echoerr "Invalid message level : $level"
52+
;;
53+
esac
54+
55+
logger -s "$@" -p "$level" -t openwisp-monitoring
56+
}
57+
3758
check_available_memory() {
3859
while true; do
3960
total=$(ubus call system info | jsonfilter -e '@.memory.total')
@@ -50,9 +71,7 @@ check_available_memory() {
5071
if [ -f "$file" ]; then
5172
rm "$file"
5273
else
53-
[ "$VERBOSE_MODE" -eq "1" ] \
54-
&& logger -s "Not enough memory available, skipping collect data." \
55-
-p daemon.warn
74+
log -w -v "Not enough memory available, skipping collect data."
5675
return 1
5776
fi
5877
fi
@@ -61,14 +80,11 @@ check_available_memory() {
6180

6281
collect_data() {
6382
n=0
64-
[ "$VERBOSE_MODE" -eq "1" ] && logger -s "Collecting NetJSON Monitoring data" \
65-
-p daemon.info
83+
log -i -v "Collecting NetJSON Monitoring data"
6684
until [ "$n" -ge 5 ]; do
6785
/usr/sbin/netjson-monitoring --dump "$MONITORED_INTERFACES" && break
6886

69-
if [ "$n" -eq 5 ]; then
70-
[ "$VERBOSE_MODE" -eq "1" ] && logger -s "Collecting data failed!" -p daemon.err
71-
fi
87+
[ "$n" -eq 5 ] && log -e -v "Collecting data failed!"
7288
n=$((n + 1))
7389
sleep 5
7490
done
@@ -103,8 +119,7 @@ save_data() {
103119
echo "$data" >"$TMP_DIR/$filename"
104120
# compress data
105121
gzip "$TMP_DIR/$filename"
106-
[ "$VERBOSE_MODE" -eq "1" ] && logger -s "Data saved temporarily" \
107-
-p daemon.info
122+
log -i -v "Data saved temporarily"
108123
fi
109124
# get process id of the process sending data
110125
pid=$(pgrep -f "openwisp-monitoring.*--mode send")
@@ -114,17 +129,15 @@ save_data() {
114129
}
115130

116131
handle_sigusr1() {
117-
[ "$VERBOSE_MODE" -eq "1" ] && logger -s "SIGUSR1 received! Sending data" \
118-
-p daemon.info
132+
log -i -v "SIGUSR1 received! Sending data"
119133
return 0
120134
}
121135

122136
send_data() {
123137
while true; do
124138
for file in "$TMP_DIR"/*; do
125139
if [ ! -f "$file" ]; then
126-
[ "$VERBOSE_MODE" -eq "1" ] && logger -s "No data file found to send." \
127-
-p daemon.info
140+
log -i -v "No data file found to send. Checking after $INTERVAL seconds"
128141
trap handle_sigusr1 USR1
129142
# SIGUSR1 signal received, interrupt sleep and continue sending data
130143
sleep "$INTERVAL" &
@@ -152,40 +165,32 @@ send_data() {
152165
while true; do
153166
if [ "$failures" -eq "$MAX_RETRIES" ]; then
154167
[ -f "$RESPONSE_FILE" ] && error_message="\"$(cat "$RESPONSE_FILE")\"" || error_message='"".'
155-
if [ "$VERBOSE_MODE" -eq "1" ]; then
156-
logger -s "Data not sent successfully. Response code is \"$response_code\"." \
157-
"Error message is $error_message" \
158-
-p daemon.err
159-
elif [ "$FAILING" -eq "0" ]; then
168+
log -e -v "Data not sent successfully. Response code is \"$response_code\"." \
169+
"Error message is $error_message"
170+
# check if agent was already passing or not to avoid repeating log messages
171+
if [ "$FAILING" -eq "0" ]; then
160172
FAILING=1
161-
logger -s "Data not sent successfully. Response code is \"$response_code\"." \
162-
"Error message is $error_message" \
163-
"Run with verbose mode to find more." \
164-
-t openwisp-monitoring \
165-
-p daemon.err
173+
[ "$VERBOSE_MODE" -ne "1" ] && log -e -n "Data not sent successfully. Response code is \"$response_code\"." \
174+
"Run with verbose mode to find more."
166175
fi
167176
break
168177
fi
169178
# send data
170179
response_code=$($CURL_COMMAND -H "Content-Type: application/json" -d "$data" "$url")
171180
if [ "$response_code" = "200" ]; then
172-
if [ "$VERBOSE_MODE" -eq "1" ]; then
173-
logger -s "Data sent successfully." \
174-
-p daemon.info
175-
elif [ "$FAILING" -eq "1" ]; then
176-
logger -s "Data sent successfully" \
177-
-t openwisp-monitoring \
178-
-p daemon.info
181+
log -i -v "Data sent successfully"
182+
# check if agent was already failing or not to avoid repeating log messages
183+
if [ "$FAILING" -eq "1" ]; then
179184
FAILING=0
180185
rm -f "$RESPONSE_FILE"
186+
[ "$VERBOSE_MODE" -ne "1" ] && log -i -n "Data sent successfully"
181187
fi
182188
# remove saved data
183189
rm -f "$filename"
184190
break
185191
else
186192
timeout=$((timeout * 2))
187-
[ "$VERBOSE_MODE" -eq "1" ] && logger -s "Data not sent successfully. Retrying in $timeout seconds" \
188-
-p daemon.warn
193+
log -w -v "Data not sent successfully. Retrying in $timeout seconds"
189194
failures=$((failures + 1))
190195
sleep "$timeout"
191196
fi
@@ -247,8 +252,7 @@ main() {
247252
shift
248253
;;
249254
-*)
250-
echo "Invalid option: $1"
251-
exit 1
255+
echoerr "Invalid option: $1"
252256
;;
253257
*) break ;;
254258
esac

openwrt-openwisp-monitoring/files/monitoring.init

Lines changed: 4 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -39,20 +39,6 @@ start_service() {
3939
[ -n "$key" ] && key="--key $key"
4040
[ -n "$verify_ssl" ] && verify_ssl="--verify_ssl $verify_ssl"
4141

42-
if [ -z "$base_url" ]; then
43-
logger -s "url is not set, please add it to /etc/config/openwisp" \
44-
-t openwisp-monitoring \
45-
-p daemon.err
46-
exit 1
47-
fi
48-
49-
if [ -z "$uuid" ] || [ -z "$key" ]; then
50-
logger -s "uuid or key are not set, please add these to /etc/config/openwisp" \
51-
-t openwisp-monitoring \
52-
-p daemon.err
53-
exit 1
54-
fi
55-
5642
# for openwisp-monitoring
5743
config_load openwisp-monitoring
5844
config_get monitored_interfaces monitoring monitored_interfaces "*"
@@ -62,12 +48,8 @@ start_service() {
6248
config_get max_retries monitoring max_retries "5"
6349

6450
interval="$(time_to_seconds "$interval")"
65-
if [ "$interval" -lt 1 ]; then
66-
logger -s "Interval is invalid. Use time value(eg: '10', '2m', '3h', '1d')" \
67-
-t openwisp-monitoring \
68-
-p daemon.err
69-
exit 1
70-
fi
51+
[ -z "$interval" ] && { echo "Interval is invalid. Use time value(eg: '10', '2m', '3h', '1d')" 1>&2 && exit 1; }
52+
7153
interval="--interval $interval"
7254
verbose="--verbose_mode ${verbose_mode:-0}"
7355
set -- --monitored_interfaces \""$monitored_interfaces"\"
@@ -79,25 +61,19 @@ start_service() {
7961
# shellcheck disable=SC2086
8062
procd_set_param command $PROG $interval $monitored_interfaces $verbose $required_memory --mode collect
8163
procd_set_param respawn "${respawn_threshold:-3600}" "${respawn_timeout:-5}" "${respawn_retry:-5}"
82-
[ "$verbose_mode" -eq "1" ] && procd_set_param stdout 1 && procd_set_param stderr 1
8364
procd_close_instance
8465

8566
procd_open_instance "openwisp-monitoring_send_data"
8667
# shellcheck disable=SC2086
8768
procd_set_param command $PROG $base_url $uuid $key $verify_ssl $interval $verbose $max_retries --mode send
8869
procd_set_param respawn "${respawn_threshold:-3600}" "${respawn_timeout:-5}" "${respawn_retry:-5}"
89-
[ "$verbose_mode" -eq "1" ] && procd_set_param stdout 1 && procd_set_param stderr 1
9070
procd_close_instance
9171

92-
logger -s "$PROG_NAME started" \
93-
-t openwisp-monitoring \
94-
-p daemon.info
72+
logger -s "$PROG_NAME started" -t openwisp-monitoring -p daemon.info
9573
}
9674

9775
stop_service() {
98-
logger -s "$PROG_NAME stopping" \
99-
-t openwisp-monitoring \
100-
-p daemon.info
76+
logger -s "$PROG_NAME stopping" -t openwisp-monitoring -p daemon.info
10177
}
10278

10379
service_triggers() {

0 commit comments

Comments
 (0)