We have a background job that makes a daily database backup of our primary PostgreSQL database. We want to get alerted if the background job doesn't run successfully.
This heartbeat will expect us to make a GET or POST request to the URL provided to us every day after the first request.
Add a CRON task that will execute backup\db_full_backup.sh background job every day at midnight:
Copied!
0 0 * * * ruby /home/deploy/db_full_backup.sh >/dev/null 2>&1
Include the curl call to the heartbeat URL at the end of your backup script:
Copied!
#!/usr/bin/env bash
set -o errexit
set -o xtrace
date=`date "+%Y-%m-%d_%H:%M:%S"`
file="/dumps/mydbname.$date.dump"
time dokku postgres:export mydbname > "$file"
/usr/local/bin/aws s3 cp "$file" s3://mydbname-dbbackups/
rm "$file"
# you get this URL in the Palzin Monitor dashboard
curl "https://XXXXXXXX.palzin.app/api/heartbeat/XXXXXXXXXXXXXXXXXXXXXX"
What happens here is that the Heartbeat URL we've created above expects a GET or POST request every day since having made the first request.
If the code above fails, our background job won't make the request to the Heartbeat URL. In that case, the Heartbeat will alert the current on-call person and create an Incident.
It takes less than a minutes to setup your first monitoring.