A short post about a nice service called UptimeRobot that I started using recently for monitoring the uptime of the services I maintain.
This post joins two posts I wrote in Hebrew on X, one on uptime (October 13, 2026) and one on backups (October 14).
How do I monitor uptime with UptimeRobot?
Free up to 50 monitors, a check every 5 minutes. I point it at the API's healthz endpoint, and if it doesn't answer I get an alert.
Two things that are important to do right:
- An external check, not from inside the server and not from the server's provider. A check that runs inside the thing it checks can't report that it went down. Hetzner Cloud, where my servers are, doesn't have something built in for this, so you need a separate service.
- It's not enough that 200 comes back. The monitor is a keyword monitor that looks for
"ok":truein the response body, and alerts when the string is missing. A server that answers 200 when it's broken still pops an alert.
That's the whole story. A free account, one monitor, five minutes of setup.
How do you know the backup actually ran?
You set up a server, put UptimeRobot on it to tell you it's up, there's a backup, there's everything.
Now how do you know the backup succeeded?
The backup on my servers runs at 03:15 at night and writes to a log, everything is organized, but in the end nobody reads this log. If it stops running, we'll find out the last backup was two months ago only when we need to restore from it.
A regular uptime check doesn't help here, because there's nothing to check from the outside.
You need the opposite: something that expects to hear from the backup, and alerts when it's silent.
Healthchecks.io: an alert when the backup goes silent
For that there's Healthchecks.io. Free for monitoring up to 20 jobs.
The logic is simple: you define a check with the cron's schedule and two hours of grace. The backup script sends a ping to the check's URL only on successful completion. No ping in the time window, an email arrives. For me it's one curl line at the end of the script.
Two things worth being careful about:
- The ping only after verifying the backup, not after the file was written. A backup that was written but is corrupt shouldn't report success.
- If the ping itself fails, the backup didn't fail. The script only logs a warning and continues. The monitor shouldn't be able to create an incident by itself.
After setup you run the backup once manually and see the check turn green. Since then it reports by itself every night.
The rest of my server baseline is in Your VM Is Under SSH Brute-Force Right Now.
FAQ
Why use an external uptime monitor instead of a check on the server?
A check that runs inside the thing it checks can't report that it went down. The check has to be external, not from inside the server and not from the server's provider.
How do I get an alert when a nightly backup stops running?
You need something that expects to hear from the backup and alerts when it's silent, such as Healthchecks.io. Define a check with the cron's schedule and two hours of grace, and have the backup script ping the check's URL only after the backup is verified. No ping in the time window, an email arrives.