diff --git a/check_lysrdiff b/check_lysrdiff index 8a5f1a6d60d0ffebbba8b1cf1cd57196311b424d..00d8ae40336bee5a8cd5c619b40b9a2d5bb3946c 100755 --- a/check_lysrdiff +++ b/check_lysrdiff @@ -8,14 +8,14 @@ activity=26 stale=40 usage () { - echo $0: usage: $0 '[ opt ] partno' >&2 + echo $0: usage: $0 '[ opt ] diskno partno' >&2 echo options: >&2 echo ' --activty N Warn if no backup completed in the last N hours.' >&2 echo ' --stale N Critical if oldest backup is more than N hours old.' >&2 exit 3 } -while [ $# -gt 1 ] +while [ $# -gt 2 ] do case "x$1" in x--activity) @@ -33,23 +33,25 @@ do esac done -if [ $# != 1 ] +if [ $# != 2 ] then usage fi -partno=$1 -BASE=/lysrdiff/$partno/perm +disk=$1 +part=$2 +BASE=/lysrdiff/$disk/perm/$part if [ ! -f $BASE/lysrdiff.id ] then - echo CRITICAL - $BASE: no such file + echo CRITICAL - $BASE/lysrdiff.id: no such file exit 2 fi -if [ "`cat $BASE/lysrdiff.id`" != "$partno perm" ] +if [ "`cat $BASE/lysrdiff.id`" != "$disk perm $part" ] then - echo CRITICAL - found `cat $BASE/lysrdiff.id` instead of $lysrdiff >&2 + echo CRITICAL - found `cat $BASE/lysrdiff.id` instead of $disk perm $part \ + >&2 exit 2 fi @@ -57,14 +59,14 @@ acttime=`date '+%Y-%m-%d %H:%M:%S' -d "$activity hours ago"` staletime=`date '+%Y-%m-%d %H:%M:%S' -d "$stale hours ago"` statecache=/tmp/lysrdiff-nagios-state -state=$statecache-$partno +state=$statecache-$disk-$part find $BASE/lysrdiff/state -type f \ -printf "%TY-%Tm-%Td %TH:%TM:%TS %P\n" \ - | sort > $statecache.$partno.$$ -mv -f $statecache.$partno.$$ $state || { + | sort > $statecache.$disk.$part.$$ +mv -f $statecache.$disk.$part.$$ $state || { echo UNKNOWN - mv failed - rm $statecache.$partno.$$ + rm $statecache.$disk.$part.$$ exit 3 } rm -f $state-stale $state-active || { @@ -75,21 +77,21 @@ rm -f $state-stale $state-active || { echo $staletime MARKER \ | sort $state - \ -| grep -- '-start$\|MARKER' \ +| grep -- '--start$\|MARKER' \ | sed -e '/MARKER$/,$d' \ > $state-stale echo $acttime MARKER \ | sort $state - \ -| grep -- '-end$\|MARKER' \ +| grep -- '--end$\|MARKER' \ | sed -e '0,/MARKER$/d' \ > $state-active -FAILED=`grep -c -- '-fail$' $state` +FAILED=`grep -c -- '--fail$' $state` STALE=`wc -l < $state-stale` ACTIVITY=`wc -l < $state-active` -if [ $FAILED -gt 0 ] +if [ $FAILED -gt 10 ] then echo -n "CRITICAL - $FAILED failed backups" if [ $STALE -gt 0 ] @@ -97,7 +99,7 @@ then echo -n " (also $STALE stale)" fi echo -n ": " - sed -n 's/-fail$//p' $state \ + sed -n 's/--fail$//p' $state \ |awk 'BEGIN { sz = 0 } NR > 1 && sz < 198 { printf ", "; sz += 2 } sz < 200 { printf "%s", $3; sz += length($3) } @@ -105,14 +107,51 @@ then |sed s'/, \([^,]*\)$/ and \1/' echo '. | activity='$ACTIVITY stale=$STALE failed=$FAILED rm $state $state-stale $state-active + exit 2 +fi +if [ $STALE -gt 10 ] +then + echo -n "CRITICAL - $STALE stale backups" + if [ $FAILED -gt 0 ] + then + echo -n " (also $FAILED failed)" + fi + ( sed -n 's/--fail$//p' $state; sed 's/--start$//' $state-stale; ) \ + |awk 'BEGIN { sz = 0 } + NR > 1 && sz < 198 { printf ", "; sz += 2 } + sz < 200 { printf "%s", $3; sz += length($3) } + END { if (sz >= 200) printf ", others" } ' \ + |sed s'/, \([^,]*\)$/ and \1/' + echo '. | activity='$ACTIVITY stale=$STALE failed=$FAILED + rm $state $state-stale $state-active exit 2 fi +if [ $FAILED -gt 0 ] +then + echo -n "WARNING - $FAILED failed backups" + if [ $STALE -gt 0 ] + then + echo -n " (also $STALE stale)" + fi + echo -n ": " + sed -n 's/--fail$//p' $state \ + |awk 'BEGIN { sz = 0 } + NR > 1 && sz < 198 { printf ", "; sz += 2 } + sz < 200 { printf "%s", $3; sz += length($3) } + END { if (sz >= 200) printf ", others" } ' \ + |sed s'/, \([^,]*\)$/ and \1/' + echo '. | activity='$ACTIVITY stale=$STALE failed=$FAILED + rm $state $state-stale $state-active + + exit 1 +fi + if [ $STALE -gt 0 ] then - echo -n "CRITICAL - $STALE stale backups: " - sed 's/-start$//' $state-stale \ + echo -n "WARNING - $STALE stale backups: " + sed 's/--start$//' $state-stale \ |awk 'BEGIN { sz = 0 } NR > 1 && sz < 198 { printf ", "; sz += 2 } sz < 200 { printf "%s", $3; sz += length($3) } @@ -120,7 +159,7 @@ then |sed s'/, \([^,]*\)$/ and \1/' echo '. | activity='$ACTIVITY stale=$STALE failed=0 rm $state $state-stale $state-active - exit 2 + exit 1 fi if [ $ACTIVITY = 0 ]