Fly.io Cron Job Monitoring
Scheduled tasks on Fly.io run either from Supercronic inside your container or from a scheduled Machine — and if one fails or stops firing, nothing pages you. crond.io watches the schedule and alerts you when a run is late or fails. It's one curl.
Supercronic (real cron schedules)
For arbitrary cron expressions, Supercronic runs a crontab inside your app. Create a crond.io monitor with the same schedule (UTC), then add the ping to the crontab line:
# crontab 0 3 * * * /app/run-job.sh && curl -fsS "https://api.crond.io/ping/$CROND_PING_KEY"
Run Supercronic as a process in your fly.toml:
[processes] app = "your-server" cron = "supercronic /app/crontab"
Set CROND_PING_KEY as a secret: fly secrets set CROND_PING_KEY=….
Scheduled Machines (fixed intervals)
Fly's built-in scheduled Machines run on fixed buckets — hourly, daily, weekly, monthly — not arbitrary cron. Have the Machine's command ping crond.io on the way out:
fly machine run . --schedule=daily \ --entrypoint "/bin/sh -c" \ "/app/run-job.sh && curl -fsS https://api.crond.io/ping/$CROND_PING_KEY"
Report failures explicitly
To get an instant alert on failure (instead of waiting for the missed ping), post to /fail when the job errors:
PING="https://api.crond.io/ping/$CROND_PING_KEY" /app/run-job.sh && curl -fsS "$PING" || curl -fsS -X POST "$PING/fail"