no way to compare when less than two revisions
Differences
This shows you the differences between two versions of the page.
— | monitors:fs-test [2013/02/28 06:16] (current) – created - external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== xymon-fstest ====== | ||
+ | ^ Author | [[ jlaidman+xymon-fstest@rebel-it.com.au | Jeremy Laidman ]] | | ||
+ | ^ Compatibility | Xymon 4.2+ | | ||
+ | ^ Requirements | Bourne or Bash shell (or compatible), | ||
+ | ^ Download | None | | ||
+ | ^ Last Update | 2013-02-28 | | ||
+ | |||
+ | ===== Description ===== | ||
+ | This script checks filesystems and reports them in their own separate | ||
+ | tests ('' | ||
+ | |||
+ | Initially, only disks with non-green status will have the new "'' | ||
+ | Once a page exists, it will be persistent, going green when the " | ||
+ | |||
+ | If the "'' | ||
+ | |||
+ | Filesystem mount points are used in the test name, where possible (eg "''/''" | ||
+ | |||
+ | Screenshot: | ||
+ | {{ : | ||
+ | ===== Installation ===== | ||
+ | === Client side === | ||
+ | Ensure " | ||
+ | |||
+ | === Server side === | ||
+ | Copy to server/ext/ directory, create entry in tasks.cfg or new file in tasks.d/ directory. | ||
+ | |||
+ | For troubleshooting, | ||
+ | ===== Source ===== | ||
+ | ==== fs-test.sh ==== | ||
+ | |||
+ | Copy this to the " | ||
+ | |||
+ | <hidden onHidden=" | ||
+ | < | ||
+ | |||
+ | #!/bin/sh | ||
+ | |||
+ | # Checks filesystems and reports them in their own separate | ||
+ | # tests (fs_1, fs_2, ...) as well as the one combined disk test. | ||
+ | # Todo: | ||
+ | # - allow specifying filesystems to include/ | ||
+ | # - allow specifying per-filesystem thresholds | ||
+ | |||
+ | die() { echo " | ||
+ | |||
+ | [ " | ||
+ | |||
+ | do_usage() { | ||
+ | echo " | ||
+ | echo "-m match : match hostname" | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | } | ||
+ | |||
+ | map_fsname() { | ||
+ | # maps filesystem name to test name | ||
+ | # must try to keep it short (no more than 4 chars) | ||
+ | # TODO: allow mapping in hosts.cfg | ||
+ | NEWNAME="" | ||
+ | case $1 in | ||
+ | /) NEWNAME=" | ||
+ | /?) | ||
+ | /??) NEWNAME=`IFS=/; | ||
+ | /???) | ||
+ | /???? | ||
+ | esac | ||
+ | echo " | ||
+ | [ 0$DEBUG -ge 2 ] && echo " | ||
+ | } | ||
+ | |||
+ | while [ " | ||
+ | case $1 in | ||
+ | -h|--h*) | ||
+ | -d|--debug) | ||
+ | -y|--dryrun) | ||
+ | -m|--match) | ||
+ | --) | ||
+ | -*) die " | ||
+ | *) break; | ||
+ | esac | ||
+ | shift | ||
+ | done | ||
+ | |||
+ | [ 0$DEBUG -gt 0 ] && echo "Debug level: $DEBUG" | ||
+ | |||
+ | HOSTLIST=`$XYMON $XYMSRV " | ||
+ | for HOST in $HOSTLIST; do | ||
+ | if [ " | ||
+ | if [ " | ||
+ | [ 0$DEBUG -gt 1 ] && echo "Host $HOST matched $MATCHHOST" | ||
+ | else | ||
+ | [ 0$DEBUG -gt 3 ] && echo "Host $HOST did not match $MATCHHOST" | ||
+ | continue | ||
+ | fi | ||
+ | fi | ||
+ | # | ||
+ | REPORT=`$XYMON $XYMSRV " | ||
+ | REPORT=`echo " | ||
+ | [ " | ||
+ | COLOR=`$XYMON $XYMSRV " | ||
+ | # | ||
+ | [ 0$DEBUG -gt 0 ] && echo " | ||
+ | [ 0$DEBUG -gt 2 ] && { echo " | ||
+ | REPORT=`echo " | ||
+ | case $COLOR in | ||
+ | purple) | ||
+ | # no recent disk status? don't report our own | ||
+ | ;; | ||
+ | red|yellow|blue) | ||
+ | FSLIST=`echo " | ||
+ | FSLIST=`echo $FSLIST` | ||
+ | POS=0 | ||
+ | REPLIST="" | ||
+ | for FS in $FSLIST; do | ||
+ | POS=`expr $POS + 1` | ||
+ | FSCOL=`echo " | ||
+ | [ " | ||
+ | [ " | ||
+ | |||
+ | FSNAME=`map_fsname $FS` | ||
+ | [ " | ||
+ | # | ||
+ | |||
+ | TESTNAME=" | ||
+ | [ 0$DEBUG -gt 1 ] && echo " | ||
+ | MSG=" | ||
+ | $REPORT" | ||
+ | if [ 0$DRYRUN -gt 0 ]; then | ||
+ | [ 0$DEBUG -ge 1 ] && echo $XYMON $XYMSRV " | ||
+ | else | ||
+ | [ 0$DEBUG -ge 2 ] && echo $XYMON $XYMSRV " | ||
+ | $XYMON $XYMSRV " | ||
+ | fi | ||
+ | REPLIST=" | ||
+ | done | ||
+ | |||
+ | if [ 0$DEBUG -gt 0 ]; then | ||
+ | [ " | ||
+ | fi | ||
+ | |||
+ | # clean up any old fs_* names not in $REPLIST | ||
+ | TESTNAMES=`$XYMON $XYMSRV " | ||
+ | for TESTNAME in $TESTNAMES; do | ||
+ | FOUND="" | ||
+ | for REP in $REPLIST; do | ||
+ | [ " | ||
+ | done | ||
+ | if [ " | ||
+ | [ 0$DEBUG -ge 2 ] && echo " | ||
+ | if [ 0$DRYRUN -gt 0 ]; then | ||
+ | [ 0$DEBUG -ge 1 ] && echo $XYMON $XYMSRV "drop $HOST $TESTNAME" | ||
+ | else | ||
+ | $XYMON $XYMSRV "drop $HOST $TESTNAME" | ||
+ | fi | ||
+ | fi | ||
+ | done | ||
+ | ;; | ||
+ | green) | ||
+ | [ 0$DEBUG -ge 1 ] && echo "All green, nothing to do" | ||
+ | # TODO: remove any entries we have added previously | ||
+ | TESTNAMES=`$XYMON $XYMSRV " | ||
+ | for TESTNAME in $TESTNAMES; do | ||
+ | [ 0$DEBUG -ge 2 ] && echo " | ||
+ | if [ 0$DRYRUN -gt 0 ]; then | ||
+ | [ 0$DEBUG -ge 1 ] && echo $XYMON $XYMSRV "drop $HOST $TESTNAME" | ||
+ | else | ||
+ | $XYMON $XYMSRV "drop $HOST $TESTNAME" | ||
+ | fi | ||
+ | done | ||
+ | ;; | ||
+ | clear) | ||
+ | # we make all of the known filesystems clear | ||
+ | REPORT2=`$XYMON $XYMSRV " | ||
+ | if [ " | ||
+ | REPLIST="" | ||
+ | for REPLINE in $REPORT2; do | ||
+ | TESTNAME=`echo " | ||
+ | FSCOL=`echo " | ||
+ | if [ " | ||
+ | [ 0$DEBUG -gt 0 ] && echo "Not going to clearify $TESTNAME, already clear" | ||
+ | else | ||
+ | [ 0$DEBUG -gt 0 ] && echo " | ||
+ | MSG=" | ||
+ | $REPORT" | ||
+ | if [ 0$DRYRUN -gt 0 ]; then | ||
+ | echo $XYMON $XYMSRV " | ||
+ | else | ||
+ | [ 0$DEBUG -ge 1 ] && $XYMON $XYMSRV " | ||
+ | fi | ||
+ | REPLIST=" | ||
+ | fi | ||
+ | done | ||
+ | if [ 0$DEBUG -gt 0 ]; then | ||
+ | [ " | ||
+ | fi | ||
+ | else | ||
+ | [ 0$DEBUG -gt 0 ] && echo "No fs reports for $HOST" | ||
+ | fi | ||
+ | ;; | ||
+ | esac | ||
+ | [ 0$DEBUG -gt 0 ] && echo | ||
+ | done | ||
+ | |||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ==== tasks.d/ | ||
+ | |||
+ | Copy this to the " | ||
+ | |||
+ | <hidden onHidden=" | ||
+ | < | ||
+ | [fs-test] | ||
+ | ENVFILE $XYMONHOME/ | ||
+ | CMD $XYMONHOME/ | ||
+ | LOGFILE $XYMONSERVERLOGS/ | ||
+ | INTERVAL 5m | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ===== Known Bugs and Issues ===== | ||
+ | |||
+ | ===== To Do ===== | ||
+ | * allow specifying filesystems to include/ | ||
+ | * allow specifying per-filesystem thresholds | ||
+ | |||
+ | ===== Credits ===== | ||
+ | |||
+ | ===== Changelog ===== | ||
+ | |||
+ | * **2013-02-19** | ||
+ | * Initial release | ||
+ | * **2013-02-28** | ||
+ | * auto-cleanup temporary test names |