GoBackup is an open-source backup tool with a web UI that automates database dumps and file system backups, then uploads them to storage backends like S3, R2, MinIO, Backblaze B2, SFTP, or local disk. It supports PostgreSQL, MySQL, MariaDB, MongoDB, and Redis as backup sources. When you self-host it, you own the reliability of your backup pipeline — and backup tools have a particularly nasty failure mode: they fail silently, and you only discover the gap when you need to restore. Vigilmon gives you HTTP uptime monitoring, TCP port probes, cron heartbeats, and alerting so GoBackup failures surface before a restore is needed.
What You'll Set Up
- HTTP uptime monitor for the GoBackup web UI (port 2703)
- Database source connectivity probes (PostgreSQL, MySQL, MongoDB, Redis)
- Storage backend connectivity check
- Backup job execution cron heartbeats
- Backup schedule adherence monitoring (missed backup detection)
- Notification delivery health check
- SSL/TLS certificate expiry alert
Prerequisites
- GoBackup running and reachable over HTTP/HTTPS (default port 2703)
- At least one backup source and storage backend configured
- A free Vigilmon account
Step 1: Monitor the GoBackup Web UI
The Go HTTP server hosts the web UI where you can trigger backups manually, view job history, and manage configuration. If it stops responding, you lose operational visibility into your backup pipeline.
- Log in to vigilmon.online and click Add Monitor.
- Set Type to
HTTP / HTTPS. - Enter your GoBackup URL:
https://backup.yourdomain.com(orhttp://your-server-ip:2703for a direct install). - Set Check interval to
1 minute. - Set Expected HTTP status to
200. - Click Save.
A 200 response confirms the Go process is running and the UI is being served. Note that a healthy web UI does not mean backup jobs are running — you need the cron heartbeats in Step 5 for that.
Step 2: Monitor Database Source Connectivity
GoBackup connects to each backup source database to dump its data. If the connection fails, the backup job fails — but silently, unless you have alerting configured. Add a TCP port probe for each database source:
PostgreSQL:
- Click Add Monitor → TCP Port.
- Host: your PostgreSQL server hostname or IP.
- Port:
5432. - Check interval:
1 minute. - Click Save.
MySQL / MariaDB:
Same steps, port 3306.
MongoDB:
Same steps, port 27017.
Redis:
Same steps, port 6379.
These TCP probes confirm the database processes are accepting connections. A connection refused here means GoBackup's next scheduled backup will fail at the dump step — you want to know before the backup window, not after.
Step 3: Monitor Storage Backend Connectivity
GoBackup uploads completed backup archives to a storage backend. If the backend is unreachable, the dump succeeds but the upload fails — leaving you with a completed-looking job and no backup in storage.
S3 / R2 / MinIO (HTTP-based):
- Click Add Monitor →
HTTP / HTTPS. - URL: your S3-compatible endpoint (e.g.
https://s3.amazonaws.comor your MinIO URL). - Expected HTTP status:
200,403, or405— any response short of a connection error confirms the endpoint is reachable. - Check interval:
5 minutes. - Click Save.
SFTP backend:
- Click Add Monitor → TCP Port.
- Host: your SFTP server hostname or IP.
- Port:
22. - Check interval:
5 minutes. - Click Save.
Backblaze B2:
Add an HTTP monitor pointing at https://api.backblazeb2.com — a reachable response confirms B2's API is up.
Local disk:
For local disk backends, add a cron heartbeat (see Step 5) that checks available disk space and pings Vigilmon only when sufficient space is available:
#!/bin/bash
AVAIL=$(df /mnt/backup --output=avail | tail -1)
# Alert if less than 10 GB free
if [ "$AVAIL" -gt 10485760 ]; then
curl -s https://vigilmon.online/heartbeat/YOUR_DISK_TOKEN
fi
If the ping goes silent, you have less than 10 GB free and the next backup will fail.
Step 4: Monitor Backup Job API Endpoint
GoBackup exposes an API for triggering and querying backup jobs. Probe it to confirm the backup execution engine is running:
- Click Add Monitor →
HTTP / HTTPS. - URL:
https://backup.yourdomain.com/api/status(or the health/status endpoint for your GoBackup version — check the API docs or network tab). - Expected HTTP status:
200. - Check interval:
5 minutes. - Click Save.
Step 5: Backup Job Execution Cron Heartbeats
This is the most critical monitor for a backup tool. A heartbeat tells Vigilmon "the backup job ran and completed successfully." If the heartbeat goes silent — because the job errored, the host's cron daemon stopped, or the GoBackup process crashed — Vigilmon alerts you.
Set up one heartbeat per backup job:
In Vigilmon:
- Click Add Monitor → Cron Heartbeat.
- Set the expected ping interval to match your backup schedule (e.g.
1440minutes for a daily backup). - Copy the heartbeat URL:
https://vigilmon.online/heartbeat/YOUR_TOKEN. - Name the monitor after the job: e.g.
GoBackup — PostgreSQL nightly.
In your backup script or wrapper:
If you trigger GoBackup via its CLI (gobackup run --model your_model), wrap it:
#!/bin/bash
gobackup run --model postgresql_production
if [ $? -eq 0 ]; then
curl -s https://vigilmon.online/heartbeat/YOUR_TOKEN
fi
If GoBackup runs on its own schedule, add a post-backup webhook hook in your GoBackup config:
models:
postgresql_production:
# ... source and storage config ...
notification:
webhook:
url: https://vigilmon.online/heartbeat/YOUR_TOKEN
on_success: true
on_failure: false
The heartbeat only fires on success — a failure leaves it silent, and Vigilmon alerts when the interval expires without a ping.
Step 6: Missed Backup Detection
Set the heartbeat interval in Vigilmon to 10–20% longer than your backup schedule. For example, if you back up daily at 02:00, set the heartbeat interval to 1500 minutes (25 hours) instead of 1440. This gives the backup job a grace window for occasional slow runs without triggering false alerts, while still catching genuinely missed backups.
For weekly backups, set the interval to 7200 minutes (5 days) to account for schedule drift.
Step 7: Backup Completion Notification Delivery
GoBackup can send completion notifications via webhook, SMTP, or Slack. These notifications are distinct from Vigilmon heartbeats — they notify your team via their existing channels. Verify the notification pipeline is working by checking that notifications arrive after a successful backup run.
For webhook notifications, add a Vigilmon HTTP monitor that watches an endpoint you control (e.g. a simple HTTP bin or your own status service) to confirm GoBackup's webhook delivery is reaching external services. If GoBackup's webhook calls start failing, you will only know if you are watching outbound traffic — or if you use the heartbeat approach from Step 5, where silence equals failure.
Step 8: SSL/TLS Certificate Expiry
The GoBackup web UI and API are often accessed by scripts and automation tools. A lapsed certificate breaks these callers without any immediate error message on the UI side.
- Open the HTTP monitor created in Step 1.
- Enable Monitor SSL certificate.
- Set Alert when certificate expires in less than
21 days. - Click Save.
Step 9: Configure Alert Channels
- Go to Alert Channels in Vigilmon and add Slack, email, or a webhook.
- Set Consecutive failures before alert to
1on the cron heartbeat monitors — a missed backup heartbeat is always actionable, not noise. - Route database connectivity and heartbeat alerts to a higher-urgency channel — these failures have a direct impact on your recovery point objective (RPO).
Summary
| Monitor | Target | What It Catches |
|---|---|---|
| HTTP — web UI | https://backup.yourdomain.com | GoBackup process down, UI unavailable |
| TCP — PostgreSQL | :5432 | Database source unreachable |
| TCP — MySQL/MariaDB | :3306 | Database source unreachable |
| TCP — MongoDB | :27017 | Database source unreachable |
| TCP — Redis | :6379 | Database source unreachable |
| HTTP — storage backend | S3/MinIO endpoint | Storage unreachable, uploads will fail |
| TCP — SFTP backend | :22 | SFTP server unreachable |
| HTTP — GoBackup API | /api/status | Backup execution engine down |
| Cron heartbeat | per-job post-backup ping | Backup job failure, missed schedule |
| SSL certificate | backup domain | TLS renewal failure |
Backup tools fail silently by nature — a successful-looking job with a failed upload leaves you with zero actual backups. With Vigilmon watching every layer from database source connectivity to storage backend reachability to per-job heartbeats, you know about a broken backup pipeline before your next restore attempt, not after.