Skip to content

Commit 396f559

Browse files
[feature] Use gzip to compress data #64
Closes #64
1 parent bac6d54 commit 396f559

1 file changed

Lines changed: 13 additions & 8 deletions

File tree

openwrt-openwisp-monitoring/files/monitoring.agent

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -87,11 +87,13 @@ save_data() {
8787
memory_available="$(check_available_memory)"
8888
if [ "$memory_available" -eq "0" ]; then
8989
data="$(collect_data)"
90-
file_name="$(date -u +'%d-%m-%Y_%H:%M:%S')"
90+
filename="$(date -u +'%d-%m-%Y_%H:%M:%S')"
9191
# make directory
9292
mkdir -p "$TMP_DIR"
9393
# save data with file_name
94-
echo "$data" >"$TMP_DIR/$file_name"
94+
echo "$data" >"$TMP_DIR/$filename"
95+
# compress data
96+
gzip "$TMP_DIR/$filename"
9597
[ "$VERBOSE_MODE" -eq "1" ] && logger -s "Data saved temporarily" \
9698
-p daemon.info
9799
fi
@@ -124,16 +126,20 @@ send_data() {
124126
basefilename=${file##*/}
125127
filename=${basefilename%.*}
126128
# remove previous saved response if exist
127-
if [ "$filename" = "response" ]; then
128-
rm "$RESPONSE_FILE" 2>/dev/null && continue
129-
fi
129+
[ "$filename" = "response" ] && rm "$file" 2>/dev/null && continue
130130
# extra zeroes are added for nanoseconds precision
131131
url="$URL&time=$filename.000000"
132132
# retry sending data in case of failure
133133
failures=0
134134
timeout=1
135135
# check if the data is latest or old one
136-
[ "$(echo "$TMP_DIR"/* | awk '{print $2}')" ] || url="$url&current=true"
136+
[ "$(echo "$TMP_DIR"/*.gz | awk '{print $2}')" ] || url="$url&current=true"
137+
if [ "${basefilename##*.}" = "gz" ]; then
138+
# decompress file
139+
gzip -d "$file"
140+
fi
141+
filename="$TMP_DIR/$filename"
142+
data=$(cat "$filename")
137143
while true; do
138144
if [ "$failures" -eq "$MAX_RETRIES" ]; then
139145
[ -f "$RESPONSE_FILE" ] && error_message="\"$(cat "$RESPONSE_FILE")\"" || error_message='"".'
@@ -152,7 +158,6 @@ send_data() {
152158
break
153159
fi
154160
# send data
155-
data=$(cat "$file")
156161
response_code=$($CURL_COMMAND -H "Content-Type: application/json" -d "$data" "$url")
157162
if [ "$response_code" = "200" ]; then
158163
if [ "$VERBOSE_MODE" -eq "1" ]; then
@@ -166,7 +171,7 @@ send_data() {
166171
[ -f "$RESPONSE_FILE" ] && rm "$RESPONSE_FILE"
167172
fi
168173
# remove saved data
169-
[ -f "$file" ] && rm "$file"
174+
[ -f "$filename" ] && rm "$filename"
170175
break
171176
else
172177
timeout=$((timeout * 2))

0 commit comments

Comments
 (0)