Checkmk Restic

Checkmk backup monitoring

#!/bin/bash

service_name="Restic Backup Files"

RESTIC_REPO=/backup/wdmycloud
RESTIC_PASSWORD=Raider2
RESTIC_BIN=/usr/local/bin/restic
MAX_BACKUP_AGE_IN_SECONDS=129600 # 36h

today=$(date +%Y-%m-%d)
today_unix=$(date --date="$today" +%s)

backup_status=$(RESTIC_PASSWORD=$RESTIC_PASSWORD $RESTIC_BIN -r $RESTIC_REPO snapshots | egrep ^[a-z0-9]{8} | tail -n 1 | tr -s ' ')
backup_hash=$(echo $backup_status | cut -f 1 -d\ )

backup_date=$(echo $backup_status | cut -f 2 -d\ )
backup_date_unix=$(date --date="$backup_date" +%s)

time_diff="$(($today_unix-$backup_date_unix))"

if [ "$time_diff" -lt "$MAX_BACKUP_AGE_IN_SECONDS" ]; then
    status=0
    status_msg="backup date: $backup_date backup hash: $backup_hash mount command: $RESTIC_BIN -r $RESTIC_REPO mount <local mountpoint>"
elif
    status=2
    status_msg="backup date: $backup_date backup hash: $backup_hash"
else
    status=3
    status_msg="status unknown"
fi

echo "$status \"$service_name\" - $status_msg "

2023-04-03 23:15 +0200