]> arthur.barton.de Git - nagcollect.git/blobdiff - client/lib/tests/Disks.tst
Disks.tst: Only check read-write volumes
[nagcollect.git] / client / lib / tests / Disks.tst
index 0c0451cb2e5be1614b538b9ed1b593266592692b..c353a3bae2f28d7b52c2776caad6596021739668 100644 (file)
@@ -1,15 +1,42 @@
 # NagCollect -- Nagios Data Collector for Passive Checks
-# Copyright (c)2009 Alexander Barton, alex@barton.de
-
-if [ `uname` = "Darwin" ]; then
-       SERVICE="Disks_p"
-       error=`LC_ALL=C grep "I/O" /var/log/system.log | tail -n 1`
-       if [ -n "$error" ]; then
-               msg=`echo $error | cut -d' ' -f6-`
-               STATUS=2
-               TEXT="ERROR - $msg"
-       else
-               STATUS=0
-               TEXT="OK - No I/O errors detected."
-       fi
+# Copyright (c)2009-2011 Alexander Barton, alex@barton.de
+
+# Check free space on local r/w filesystems
+
+SERVICE="DiskUsage_p"
+STATUS=4
+
+error=
+warning=
+
+TEMP="/tmp/$$.tmp"
+
+df -l -P -m | grep "^/" >"$TEMP"
+
+while read x; do
+       #dev=`echo $x | cut -d' ' -f1`
+       #blocks=`echo $x | cut -d' ' -f2`
+       #used=`echo $x | cut -d' ' -f3`
+       free=`echo $x | cut -d' ' -f4`
+       capacity=`echo $x | cut -d' ' -f5 | sed 's/%//'`
+       declare -i capacity2=100-$capacity
+       fs=`echo $x | cut -d' ' -f6`
+       [ -w "$fs" ] || continue
+       [ -n "$TEXT" ] && TEXT="$TEXT "
+       TEXT="${TEXT}${fs} ${free} MB (${capacity2}%);"
+       [ "$free" -lt 2000 -a $capacity2 -lt 5 ] && error=1
+       [ "$free" -lt 5000 -a $capacity2 -lt 10 ] && warning=1
+done < "$TEMP"
+
+if [ -n "$error" ]; then
+       STATUS=2
+       TEXT="Disk usage is CRITICAL, free space: $TEXT"
+elif [ -n "$warning" ]; then
+       STATUS=1
+       TEXT="Disk usage is WARNING, free space: $TEXT"
+else
+       STATUS=0
+       TEXT="Disk usage is OK, free space: $TEXT"
 fi
+
+rm -f "$TEMP"