@@ -34,6 +34,27 @@ show_version() {
3434
3535echoerr () { 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+
3758check_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
6281collect_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
@@ -101,8 +117,7 @@ save_data() {
101117 echo " $data " > " $TMP_DIR /$filename "
102118 # compress data
103119 gzip " $TMP_DIR /$filename "
104- [ " $VERBOSE_MODE " -eq " 1" ] && logger -s " Data saved temporarily." \
105- -p daemon.info
120+ log -i -v " Data saved temporarily."
106121 fi
107122 # get process id of the process sending data
108123 pid=$( pgrep -f " openwisp-monitoring.*--mode send" )
@@ -112,17 +127,15 @@ save_data() {
112127}
113128
114129handle_sigusr1 () {
115- [ " $VERBOSE_MODE " -eq " 1" ] && logger -s " SIGUSR1 received! Sending data." \
116- -p daemon.info
130+ log -i -v " SIGUSR1 received! Sending data."
117131 return 0
118132}
119133
120134send_data () {
121135 while true ; do
122136 for file in " $TMP_DIR " /* ; do
123137 if [ ! -f " $file " ]; then
124- [ " $VERBOSE_MODE " -eq " 1" ] && logger -s " No data file found to send." \
125- -p daemon.info
138+ log -i -v " No data file found to send. Checking after $INTERVAL seconds"
126139 trap handle_sigusr1 USR1
127140 # SIGUSR1 signal received, interrupt sleep and continue sending data
128141 sleep " $INTERVAL " &
@@ -149,32 +162,25 @@ send_data() {
149162 while true ; do
150163 if [ " $failures " -eq " $MAX_RETRIES " ]; then
151164 [ -f " $RESPONSE_FILE " ] && error_message=" \" $( cat " $RESPONSE_FILE " ) \" " || error_message=' "".'
152- if [ " $VERBOSE_MODE " -eq " 1" ]; then
153- logger -s " Data not sent successfully. Response code is \" $response_code \" ." \
154- " Error message is $error_message " \
155- -p daemon.err
156- elif [ " $FAILING " -eq " 0" ]; then
165+ log -e -v " Data not sent successfully. Response code is \" $response_code \" ." \
166+ " Error message is $error_message "
167+ # check if agent was already passing or not to avoid repeating log messages
168+ if [ " $FAILING " -eq " 0" ]; then
157169 FAILING=1
158- logger -s " Data not sent successfully. Response code is \" $response_code \" ." \
159- " Error message is $error_message " \
160- " Run with verbose mode to find more." \
161- -t openwisp-monitoring \
162- -p daemon.err
170+ [ " $VERBOSE_MODE " -ne " 1" ] && log -e -n " Data not sent successfully. Response code is \" $response_code \" ." \
171+ " Run with verbose mode to find more."
163172 fi
164173 break
165174 fi
166175 # send data
167176 response_code=$( $CURL_COMMAND -H " Content-Type: application/json" -d " $data " " $url " )
168177 if [ " $response_code " = " 200" ]; then
169- if [ " $VERBOSE_MODE " -eq " 1" ]; then
170- logger -s " Data sent successfully." \
171- -p daemon.info
172- elif [ " $FAILING " -eq " 1" ]; then
173- logger -s " Data sent successfully." \
174- -t openwisp-monitoring \
175- -p daemon.info
178+ log -i -v " Data sent successfully."
179+ # check if agent was already failing or not to avoid repeating log messages
180+ if [ " $FAILING " -eq " 1" ]; then
176181 FAILING=0
177182 rm -f " $RESPONSE_FILE "
183+ [ " $VERBOSE_MODE " -ne " 1" ] && log -i -n " Data sent successfully."
178184 fi
179185 # remove saved data
180186 rm -f " $filename "
@@ -187,8 +193,7 @@ send_data() {
187193 break
188194 else
189195 timeout=$( /usr/sbin/openwisp-get-random-number 2 15)
190- [ " $VERBOSE_MODE " -eq " 1" ] && logger -s " Data not sent successfully. Retrying in $timeout seconds." \
191- -p daemon.warn
196+ log -w -v " Data not sent successfully. Retrying in $timeout seconds."
192197 failures=$(( failures + 1 ))
193198 sleep " $timeout "
194199 fi
@@ -288,8 +293,7 @@ main() {
288293 shift
289294 ;;
290295 -* )
291- echo " Invalid option: $1 "
292- exit 1
296+ echoerr " Invalid option: $1 "
293297 ;;
294298 * ) break ;;
295299 esac
0 commit comments