Make the rrddump.sh script do all the work, including cleanup.
[chef.git] / cookbooks / munin / files / default / rrddump.sh
index ba7e42f94137330ea682e3b84318554095c45d62..08942038eeefd6e4e58e176eea80a049e15d2aa9 100644 (file)
@@ -2,16 +2,32 @@
 
 RRD_DIR=/var/lib/munin/openstreetmap
 DIR=`mktemp -d`
-NPROCS=8
+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"
+  rm -rf "$DIR"
 }
 
 trap cleanup EXIT
 
+set -e
+
 cd "$RRD_DIR"
-find -name "*.rrd" -print0 | xargs --null --max-procs=$NPROCS -I {} rrdtool dump {} "$DIR/{}.xml"
+for f in *.rrd; do
+  rrdtool dump "$f" "$DIR/${f}.xml"
+  touch -r "$f" "$DIR/${f}.xml"
+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}"