File: //lib64/nagios/plugins/check_a2_backups
#!/bin/bash
# KLY - 2023-03-20 - Check if we are instead using jetbackup - SYSENG-18454
rpm -q jetbackup5-base --quiet
if [[ $? -eq 0 ]]; then
echo "Backups - handled by Jetbackup"
exit 0
fi
# BFENG-1633 - disabling alerts for vplatorm servers.
if [[ $(hostname) =~ vplatform ]]; then
echo "Backups - Platform servers need not be backed up"
exit 0
fi
# LC - 12/12/2017 - Added option to consider Backup maintenance period | OPS-709
m_start=200 #2:00 AM - Maintenance start
m_finish=530 #5:00 AM - Maintenance finish + 30m grace time
check_hour=$(date +%H%M | sed 's/^0//')
if [[ ${check_hour} -ge ${m_start} ]] && [[ ${check_hour} -le ${m_finish} ]]; then
echo "Backups - Backup maintenance period"
exit 0
fi
# LC - 15/3/2023 - Additionally exclude JBK servers
if [ -e /root/.no_backup_mounts ] || [[ $(hostname) =~ dedibackup ]] || [[ $(hostname) =~ jbk ]]; then
echo "Backups - Not supposed to be backed up or mounted"
exit 0
fi
CHECKFILE=var/log/messages
VALID=0
LAST_SNAPSHOT_DAY=""
NEWENOUGH=0
RECENT_THRESHOLD=`date +%Y%m%d -d '15 days ago'`
BACKUP_SERVER=`cat /etc/a2dp/backup_location`
if [ ! -d /app/backups ] || [ ! -e /etc/a2dp/backup_location ]; then
echo "Backups - Seemingly NOT being backed up AT ALL!"
exit 2
fi
for DATE in `ls -1 /app/backups | sort`; do
BACKUP_DIR=/app/backups/$DATE
BACKUP_FILE=$BACKUP_DIR/$CHECKFILE
if [[ ! -e $BACKUP_FILE ]]; then
continue
fi
if [[ ! $DATE =~ ^[0-9]{8}$ ]]; then
continue
fi
FILE_EPOCH=`stat -c %Y "$BACKUP_FILE" 2>/dev/null`
if [[ -z $FILE_EPOCH ]]; then
FILE_EPOCH=`stat -f %m "$BACKUP_FILE" 2>/dev/null`
fi
if [[ -z $FILE_EPOCH ]]; then
continue
fi
FILE_DAY=`date -d "@$FILE_EPOCH" +%Y%m%d 2>/dev/null`
if [[ -z $FILE_DAY ]]; then
continue
fi
DIR_DAY_EPOCH=`date -d "$DATE" +%s 2>/dev/null`
FILE_DAY_EPOCH=`date -d "$FILE_DAY" +%s 2>/dev/null`
if [[ -z $DIR_DAY_EPOCH || -z $FILE_DAY_EPOCH ]]; then
continue
fi
DAY_DIFF=$(( (DIR_DAY_EPOCH - FILE_DAY_EPOCH) / 86400 ))
if (( DAY_DIFF != 1 )); then
continue
fi
if [[ $FILE_DAY == $LAST_SNAPSHOT_DAY ]]; then
continue
fi
VALID=$(( VALID + 1 ))
LAST_SNAPSHOT_DAY=$FILE_DAY
if [[ $FILE_DAY -ge $RECENT_THRESHOLD ]]; then
NEWENOUGH=1
fi
done
case "$VALID" in
0)
MESSAGE="2 Backups - $BACKUP_SERVER: No Valid Backups"
EXITCODE=2
;;
1|2|3|4|5)
MESSAGE="1 Backups - $BACKUP_SERVER: Only $VALID valid Backups"
if (( $NEWENOUGH != 1 )); then
MESSAGE="$MESSAGE and none are new enough"
fi
EXITCODE=1
;;
*)
if (( $NEWENOUGH != 1 )); then
MESSAGE="1 Backups - $VALID valid backups but none are new enough"
EXITCODE=1
else
MESSAGE="0 Backups - $VALID valid backups"
EXITCODE=0
fi
;;
esac
if ! mountpoint -q /app/backups ; then
MESSAGE="2 Backups - $BACKUP_SERVER: NFS not mounted"
EXITCODE=2
fi
if [[ -z ${EXITCODE} ]]; then
EXITCODE=0
fi
echo $MESSAGE
exit $EXITCODE