Monitoring VPS Uptime with Free Tools: Uptime Kuma, Healthchecks, and Blackbox Exporter

An unmonitored VPS is down until a user complains. Uptime monitoring is not a luxury for enterprise teams: on a single small VPS it is the difference between a five-minute outage you fix while brewing coffee and a five-hour outage you discover in your support inbox. The good news is that the best tools for the job are free and self-hostable. This guide covers three that complement each other perfectly: Uptime Kuma for heartbeat-style monitoring with a status page, Healthchecks for dead-man’s-switch monitoring of cron jobs and backups, and Blackbox Exporter for black-box probing through Prometheus.

Uptime Kuma: Heartbeat Monitoring with a Status Page

Uptime Kuma is a self-hosted, open-source monitoring tool with a clean web UI and a public status page built in. Deploy it on your VPS in one command:

docker run -d --name uptime-kuma -p 3001:3001 -v uptime-kuma:/app/data louislam/uptime-kuma:1

Open http://your-vps:3001, create the admin account, and add monitors for each service you care about: HTTP(s) for your web apps, ping for reachability, TCP port checks for SSH and databases, and keyword monitors that fail when a page stops containing expected text. A 60-second interval with two retries gives fast detection without hammering your own server. Uptime Kuma also monitors TLS certificate expiry — one of the most common causes of “random” site failures — and can send alerts to Telegram, ntfy, email, Slack, and a dozen other channels.

Healthchecks: The Dead Man’s Switch for Cron and Backups

Heartbeat monitors only tell you the server is reachable; they say nothing about whether your nightly backup actually ran. Healthchecks solves this with a dead-man’s-switch model: a scheduled job pings a unique URL when it completes, and if the ping does not arrive within the grace period, you get an alert. Self-host it with Docker:

docker run -d --name healthchecks -p 8000:8000 -e SITE_ROOT=https://hc.example.com -e REGENERATE_SETTINGS=1 healthchecks/healthchecks:latest

Then wrap any cron job so it reports success:

0 3 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 --retry 5 -o /dev/null https://hc.example.com/ping/your-uuid

If the backup script fails or the cron entry is accidentally removed, the missing ping triggers an alert. This pattern is ideal for backups, certificate renewal jobs, log rotation, and database dumps — the silent failures that heartbeat monitors can never catch.

Blackbox Exporter: Black-Box Probing with Prometheus

If you already run Prometheus on your VPS, Blackbox Exporter adds external-view probes: ICMP pings, TCP connects, and HTTP checks that measure latency from outside your services. Configure probe modules such as icmp, tcp_connect, and http_2xx in blackbox.yml, add a scrape job pointing Prometheus at the exporter, and alert on probe_success == 0 for five minutes. Combined with Uptime Kuma, it gives you both instant dashboard visibility and alerting in one stack.

ToolBest forResource footprintAlert channels
Uptime KumaService heartbeats, status page, TLS expiry< 200 MB RAMTelegram, ntfy, email, webhooks
HealthchecksCron jobs, backups, batch pipelines< 100 MB RAMEmail, webhooks, Telegram
Blackbox ExporterExternal probes, latency, Prometheus integration< 50 MB RAMAlertmanager (any)

Alerting: Get Notified Before Your Users Do

Monitoring without alerting is just pretty dashboards. Both Uptime Kuma and Healthchecks ship with notification integrations, and the free tier of ntfy makes setup painless: install the ntfy app on your phone, subscribe to a topic such as vps-alerts, and point both tools at https://ntfy.sh/vps-alerts (or your own ntfy server for privacy). Telegram works equally well and adds group channels, so an entire team can watch one alert stream. Whichever channel you choose, configure escalation: Uptime Kuma’s retry setting (2 retries at 60-second intervals) filters transient blips, while Healthchecks’ grace period (start at 15 minutes for nightly jobs) prevents 3 a.m. false alarms. Test every alert once after setup by stopping the monitored service — a notification that never fires is a false sense of security.

What to Monitor on a Small VPS

  • Application health endpoints (/health or /status) rather than the homepage
  • TLS certificate expiry for every domain you serve
  • Disk space — a cron job that checks df and pings Healthchecks keeps you ahead of a full disk
  • Outbound connectivity: a monitor on an external endpoint tells you if your network path dies
  • Reboot detection: a Healthchecks ping at boot confirms the server came back after maintenance
  • Monitor from outside the VPS too — a monitor running on the same host cannot detect a network or power failure, so add one external check (Uptime Kuma on a second small VPS, or a free cloud ping service) for your most critical endpoints

All three tools run comfortably on a 1–2 GB VPS alongside your applications. If you are setting up a monitoring box from scratch, the VPS feature comparison at virtualserversvps.com helps you pick a plan with enough RAM and reliable storage for a small always-on stack, and the FAQ covers common questions about running self-hosted services on budget plans.

Set up your monitoring stack this weekend — it takes an hour and pays for itself the first time it catches a silent failure. Find a VPS plan with room for your monitoring stack and start now.

Leave a Reply