Make the rrddump.sh script do all the work, including cleanup.
authorMatt Amos <zerebubuth@gmail.com>
Tue, 24 Jan 2017 13:06:50 +0000 (13:06 +0000)
committerMatt Amos <zerebubuth@gmail.com>
Tue, 24 Jan 2017 13:06:50 +0000 (13:06 +0000)
cookbooks/munin/files/default/rrddump.sh
cookbooks/munin/templates/default/rrddump.cron.erb

index 7e54630bca2d353b019d26c9ae83a8513bcc7c5b..08942038eeefd6e4e58e176eea80a049e15d2aa9 100644 (file)
@@ -2,6 +2,9 @@
 
 RRD_DIR=/var/lib/munin/openstreetmap
 DIR=`mktemp -d`
 
 RRD_DIR=/var/lib/munin/openstreetmap
 DIR=`mktemp -d`
+DUMP_DIR=/srv/munin.openstreetmap.org/dumps
+TARGET_TGZ=`date "+munin-data-%Y-%m-%d.tar.gz"`
+KEEP_OLD_COUNT=3
 
 function cleanup {
   rm -rf "$DIR"
 
 function cleanup {
   rm -rf "$DIR"
@@ -9,6 +12,8 @@ function cleanup {
 
 trap cleanup EXIT
 
 
 trap cleanup EXIT
 
+set -e
+
 cd "$RRD_DIR"
 for f in *.rrd; do
   rrdtool dump "$f" "$DIR/${f}.xml"
 cd "$RRD_DIR"
 for f in *.rrd; do
   rrdtool dump "$f" "$DIR/${f}.xml"
@@ -16,4 +21,13 @@ for f in *.rrd; do
 done
 
 cd "$DIR"
 done
 
 cd "$DIR"
-find -name "*.xml" -print0 | tar zcf - --null -T -
+find -name "*.xml" -print0 | tar zcf "dump.tar.gz" --null -T -
+
+# if we got here, then the file was created okay so we're okay to delete any
+# old files.
+find "${DUMP_DIR}" -name "munin-data-*.tar.gz" -print0 | \
+    sort -z -r | \
+    tail -z -n "+${KEEP_OLD_COUNT}" | \
+    xargs --null rm -f
+
+mv dump.tar.gz "${DUMP_DIR}/${TARGET_TGZ}"
index 604917336b919c469104cb50f616f74e8fd72085..33087c3fd3375a5086171fab244cb42613770dc0 100644 (file)
@@ -1,3 +1,3 @@
 MAILTO=zerebubuth@gmail.com
 MAILTO=zerebubuth@gmail.com
-# do the dump in the early hours of the morning and follow, if successful, by a cleanup of the old files. i don't think these are of any historical interest, so just keep three consecutive.
-43 3 * * * www-data nice /usr/local/bin/rrddump > /srv/munin.openstreetmap.org/dumps/`date "+munin-data-%Y-%m-%d.tar.gz"` && ls -1 /srv/munin.openstreetmap.org/dumps/munin-data-*.tar.gz | sort -r | tail -n +4 | xargs rm -f
+# do the dump & cleanup in the early hours of the morning
+43 3 * * * www-data nice /usr/local/bin/rrddump