Playbooks to a new Lilik
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

125 lines
2.3 KiB

#!/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" == "" ] or [ -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;;0;3600 "
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