|
|
- #!/bin/bash
-
- PROGNAME=$(basename $0)
- PROGPATH=$(echo $0 | sed -e 's,[\\/][^\\/][^\\/]*$,,')
-
- . $PROGPATH/utils.sh
-
- print_usage() {
- echo "Usage: $PROGNAME -R repo [-d log_dir] [-w warning_age] [-c critical_age]"
- echo "Usage: $PROGNAME --help"
- }
-
- print_help() {
- echo ""
- exit $STATE_OK
- }
-
- logdir=/var/log/backup-status
- wage=93600 # 26h
- cage=187200 # 52h
- repo=""
-
- while test -n "$1"; do
- case "$1" in
- --help|-h)
- print_help
- exit $STATE_OK
- ;;
- --repo|-R)
- repo=$2
- shift
- ;;
- --dir|-d)
- logdir=$2
- shift
- ;;
- --wage|-w)
- wage=$2
- shift
- ;;
- --cage|-c)
- cage=$2
- shift
- ;;
- *)
- echo "Unknown argument: $1"
- print_usage
- exit $STATE_UNKNOWN
- ;;
- esac
- shift
- done
-
- if [ "$repo" == "" ] || [ ! -d "$logdir/$repo" ]; then
- echo "Unknown repo $repo."
- exit $STATE_UNKNOWN
-
- fi
- perf=""
- message=""
- warning=0
- critical=0
- unknown=0
-
- for i in $logdir/$repo/*; do
- IFS='|' read -ra STATE < $i
- ENTRY=$(basename $i)
- END=${STATE[0]}
- START=${STATE[1]}
- BACKUP_RC=${STATE[2]}
- PRUNE_RC=${STATE[3]}
- AGE=$(( $(date +%s) - ${START} ))
- DURATION=$(( ${END} - ${START} ))
-
- case "$BACKUP_RC" in
- 0)
- ;;
- 1)
- warning=1
- message="${message} - [ Backup of ${ENTRY} returned 1. ]"
- ;;
- *)
- critical=1
- message="${message} - [ Backup of ${ENTRY} returned ${BACKUP_RC}. ]"
- ;;
- esac
-
- case "$PRUNE_RC" in
- 0)
- ;;
- 1)
- warning=1
- message="${message} - [ Prune of ${ENTRY} returned 1. ]"
- ;;
- *)
- critical=1
- message="${message} - [ Prune of ${ENTRY} returned ${PRUNE_RC}. ]"
- ;;
- esac
-
- if [ "${AGE}" -gt "${cage}" ]; then
- critical=1
- message="${message} - [ Age of ${ENTRY} is CRITICAL ]"
- elif [ "${AGE}" -gt "${wage}" ]; then
- warning=1
- message="${message} - [ Age of ${ENTRY} is WARNING ]"
- fi
-
- perf="${perf}${ENTRY}/age=${AGE}s;${wage};${cage};0;${cage} "
- perf="${perf}${ENTRY}/duration=${DURATION}s "
-
- done
-
- if [ "$critical" == "1" ]; then
- echo "BACKUP CRITICAL${message}|${perf}"
- exit $STATE_CRITICAL
- elif [ "$warning" == "1" ]; then
- echo "BACKUP WARNING${message}|${perf}"
- exit $STATE_WARNING
- else
- echo "BACKUP OK|${perf}"
- exit $STATE_OK
- fi
-
- exit $STATE_UNKNOWN
|