Module: check_mk
Branch: master
Commit: a4a0b91ac264fe6ce70822572cd649c40568b6df
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=a4a0b91ac264fe…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Tue Feb 4 14:46:50 2014 +0100
Added local check for monitoring write access to NFS/GlusterFS
---
doc/treasures/{ => localchecks}/check_bi_local.py | 0
doc/treasures/localchecks/check_mount_rw | 105 +++++++++++++++++++++
2 files changed, 105 insertions(+)
diff --git a/doc/treasures/check_bi_local.py
b/doc/treasures/localchecks/check_bi_local.py
similarity index 100%
rename from doc/treasures/check_bi_local.py
rename to doc/treasures/localchecks/check_bi_local.py
diff --git a/doc/treasures/localchecks/check_mount_rw
b/doc/treasures/localchecks/check_mount_rw
new file mode 100755
index 0000000..2135d9c
--- /dev/null
+++ b/doc/treasures/localchecks/check_mount_rw
@@ -0,0 +1,105 @@
+#!/bin/bash
+
+#The MIT License (MIT)
+#Henry Huang (
http://blog.unicsolution.com)
+#Most updated file:
https://github.com/bbhenry/check_mk_local/edit/master/check_mount_rw
+
+PROGNAME=`basename $0`
+PROGPATH=`echo $0 | sed -e 's,[\\/][^\\/][^\\/]*$,,'`
+REVISION="1.0"
+FQDNNAME=`hostname -f`
+TESTFILE="test-rw-$FQDNNAME"
+RAND=$RANDOM
+
+print_usage() {
+ echo "Usage: $PROGNAME"
+}
+
+print_help() {
+ print_revision $PROGNAME $REVISION
+ echo ""
+ print_usage
+ echo ""
+ echo "This plugin will write temporary file to all detected nfs and glusterfs
directories and read them to verify the network mount points are working without
fail"
+ echo ""
+ exit 0
+}
+
+check_mount_rw() {
+ MOUNTPOINTS=(`grep -E 'glusterfs|nfs' /proc/mounts | awk '{
gsub("fuse.glusterfs","glusterfs",$3); print
$2":"toupper($3) }'`)
+
+ for a in "${MOUNTPOINTS[@]}"
+ do
+ DIRECTORY=`echo $a | cut -f1 -d:`
+ CONNECTIONTYPE=`echo $a | cut -f2 -d:`
+
+ timeout 1s ls $DIRECTORY/$TESTFILE
+ RET_V=$?
+ if [[ $RET_V -eq 124 || $RET_V -eq 137 ]]; then
+ echo "2 Mount_${CONNECTIONTYPE}_RW_:$DIRECTORY - Accessing mount point $DIRECTORY
timed out"
+ continue
+ elif [[ $RET_V -eq 0 ]]; then
+ echo "2 Mount_${CONNECTIONTYPE}_RW_:$DIRECTORY - Test file $DIRECTORY/$TESTFILE
already exist"
+ rm -f $DIRECTORY/$TESTFILE
+ continue
+ fi
+
+ timeout 1s echo $RAND > $DIRECTORY/$TESTFILE
+ RET_W=$?
+ if [[ $RET_W -eq 124 || $RET_W -eq 137 ]]; then
+ echo "2 Mount_${CONNECTIONTYPE}_RW_:$DIRECTORY - Writing test file to
$DIRECTORY/$TESTFILE timed out"
+ continue
+ elif [[ $RET_W -ne 0 ]]; then
+ echo "3 Mount_${CONNECTIONTYPE}_RW_:$DIRECTORY - Unknown write error $RET_W has
occured while writing test file to $DIRECTORY"
+ continue
+ fi
+
+ TESTREAD=`timeout 1s cat $DIRECTORY/$TESTFILE`
+ RET_R=$?
+ if [[ $RET_R -eq 124 || $RET_R -eq 137 ]]; then
+ echo "2 Mount_${CONNECTIONTYPE}_RW_:$DIRECTORY - Reading test from
$DIRECTORY/$TESTFILE timed out"
+ continue
+ elif [[ $RET_R -ne 0 ]]; then
+ echo "3 Mount_${CONNECTIONTYPE}_RW_:$DIRECTORY - Unknown read error $RET_R has
occured while reading test file from $DIRECTORY/$TESTFILE"
+ continue
+ fi
+
+ if [[ $TESTREAD -eq $RAND ]]; then
+ timeout 1s rm -f $DIRECTORY/$TESTFILE
+ RET_RM=$?
+ if [[ $RET_RM -eq 124 || $RET_RM -eq 137 ]]; then
+ echo "2 Mount_${CONNECTIONTYPE}_RW_:$DIRECTORY - Removing the test file from
$DIRECTORY/$TESTFILE timed out"
+ continue
+ elif [[ $RET_RM -ne 0 ]]; then
+ echo "2 Mount_${CONNECTIONTYPE}_RW_:$DIRECTORY - Failed to remove the test file
from $DIRECTORY/$TESTFILE"
+ continue
+ else
+ echo "0 Mount_${CONNECTIONTYPE}_RW_:$DIRECTORY - Write and read test to the
$DIRECTORY mount point was successful"
+ continue
+ fi
+ else
+ echo "2 Mount_${CONNECTIONTYPE}_RW_:$DIRECTORY - Content in the test file from
$DIRECTORY/$TESTFILE does not match the source input"
+ continue
+ fi
+ done
+}
+
+while getopts "hv" opt; do
+ case "$opt" in
+ h)
+ print_help
+ exit 0
+ ;;
+ v)
+ echo "$PROGNAME version: $REVISION"
+ exit 0
+ ;;
+ \?)
+ print_help
+ exit 0
+ ;;
+ esac
+done
+
+check_mount_rw
+exit 0