How it works
Add a monitor of type Cron job in RondaUp and tell it how often the job runs. RondaUp gives the job a private ping URL like this one:
https://ping.rondaup.com/k7Qm2x9Rt4bNEvery time the job finishes, it requests that URL. RondaUp expects the next request by the scheduled time plus a grace period. When nothing arrives, the monitor trips and you get an alert. The next ping recovers it and you get a message that the job is running again.
The URL is the secret: anyone who has it can ping it. Keep it out of public repositories; you can create a new monitor if it leaks.
Crontab
Put the ping after your command with &&, so it only runs when the job succeeded:
# Every night at 02:00
0 2 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 --retry 3 https://ping.rondaup.com/k7Qm2x9Rt4bN > /dev/null-fsS keeps curl quiet unless something goes wrong, -m 10 stops it from hanging, and --retry 3 survives a brief network hiccup. With wget:
0 2 * * * /usr/local/bin/backup.sh && wget -q -T 10 -O /dev/null https://ping.rondaup.com/k7Qm2x9Rt4bNStart and failure signals
Two extra endpoints tell RondaUp more about each run:
https://ping.rondaup.com/k7Qm2x9Rt4bN/startmarks the start of a run. Pair it with the normal ping at the end and RondaUp records how long the job took.https://ping.rondaup.com/k7Qm2x9Rt4bN/failreports a failure. The monitor trips straight away, without waiting for the deadline.
A shell wrapper that uses all three:
#!/bin/sh
PING=https://ping.rondaup.com/k7Qm2x9Rt4bN
curl -fsS -m 10 "$PING/start" > /dev/null
if /usr/local/bin/backup.sh; then
curl -fsS -m 10 --retry 3 "$PING" > /dev/null
else
curl -fsS -m 10 --retry 3 "$PING/fail" > /dev/null
fiFrom code
Call the URL as the last step of your task. PHP, for example in a Laravel scheduled command:
file_get_contents('https://ping.rondaup.com/k7Qm2x9Rt4bN');Node.js 18 or later:
await fetch('https://ping.rondaup.com/k7Qm2x9Rt4bN')Python:
import urllib.request
urllib.request.urlopen('https://ping.rondaup.com/k7Qm2x9Rt4bN', timeout=10)The endpoint accepts GET, POST and HEAD, and any request body is ignored.
Windows Task Scheduler
Run the task as a PowerShell command that pings after the script succeeds:
powershell -NoProfile -Command "& 'C:\jobs\export.ps1'; if ($?) { Invoke-RestMethod 'https://ping.rondaup.com/k7Qm2x9Rt4bN' }"Schedule and grace period
Choose one of two ways to describe when the job runs:
- Every: a fixed period from 1 minute to 30 days, counted from the last ping. Good for jobs that run every few minutes or hours.
- Cron expression: the same five fields your crontab uses, for example
0 2 * * *, with the time zone the server runs in. RondaUp shows when the next ping is expected, so you can check it reads the expression the way you meant.
The grace period is how late a ping may be before the job counts as missed, from 1 minute to 7 days. Set it a little longer than the job's usual run time: a backup that takes 20 minutes needs at least 20 minutes of grace.
Limits
- Up to 60 pings a minute per URL; more are refused with HTTP 429.
- An unknown URL answers HTTP 404, so a typo shows up in your job's logs.
- Pings to a paused monitor are logged but do not change its state.
- The run log keeps every ping, with its source IP and duration, for 30 days.
Questions about a setup not covered here? See cron monitoring or write to support@rondaup.com.