From a8cebf5ec7d95b5341bee0db67f683ae8b472537 Mon Sep 17 00:00:00 2001 From: Per Cederqvist <ceder@lysator.liu.se> Date: Tue, 7 Aug 2007 20:13:50 +0000 Subject: [PATCH] Replace the "partno" argument with "diskno partno" to match the current lysrdiff. Also adjust for new status files with double dashes. List both failed and stale backups, if there is space for it. --- check_lysrdiff | 79 +++++++++++++++++++++++++++++++++++++------------- 1 file changed, 59 insertions(+), 20 deletions(-) diff --git a/check_lysrdiff b/check_lysrdiff index 8a5f1a6..00d8ae4 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 ] -- GitLab