HEX
Server: LiteSpeed
System: Linux s3604.bom1.stableserver.net 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64
User: dmstechonline (1480)
PHP: 7.4.33
Disabled: NONE
Upload Files
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