CRON JOB MONITORING

See every job. Catch every failure.

  • See the status, metrics, and logs for every run.
  • Get an alert when a job fails, starts late, or never starts.
  • Monitor cron jobs, background workers, and scheduled agent tasks.
cronitor.io/llms.txt — agent quick start
scheduled jobs · 6 monitored · 43 executions 02:00 → 08:00 · now 07:04
JOB
NOW
CONCURRENCY peak 5 · 15m buckets
5 JOBS FIRE AT 03:00
Disney
Johnson & Johnson
Reddit
Shutterstock
Genentech
Yelp
GOV.UK
Razer
Rakuten
AB InBev
Chime
Monzo
monday.com
GoodRx
Zendesk
Meesho
stripe-payout-sync · */5 * * * * median 41.5s · 97.7% success
DURATION PER EXECUTION44 RUNS · 03:40 WINDOW
ALERT THRESHOLD 60.0s
−3h40m07:40
ALERTS
watching 44 executions
Slack#ops-alerts
1 failed · 1 over threshold · 1 missed
ALERTS

Get alerted when a job fails, starts late, or runs too long

Cronitor checks every run against its schedule and history. It distinguishes a failed run from a missing or unusually slow one, then alerts the right person.

  • No silent failures: if a run goes missing, you'll know.
  • Slow-job alerts with per-job thresholds, grace periods and failure tolerance.
LOGS · METRICS · RETENTION

Keep the logs and metrics from every run

Cronitor captures stdout and stderr as the job runs and keeps them with that execution — no SSH, grep, or timestamp matching. It also records success rate, duration, and custom metrics, so you can investigate today or compare trends months later.

  • Logs attached to the execution that wrote them, searchable per run.
  • Success rate, duration percentiles and custom metrics on realtime dashboards.
  • 12 months of retention — compare this run to the last one that worked.
send-invoices · 0 * * * * 8,760 executions · 12 mo retained
SUCCESS RATE %
100.0
95.0
DURATION p50 / p95 · SECONDS
110
THRESHOLD 60.0s
CUSTOM METRIC invoices.sent
p50 PER RUN · 160
ALERTS FIRED
p95 2.2× BASELINE
CURSOR
SEP2025
SUCCESS99.9%
p5040.6s
p9544.2s
invoices.sent104
ALERTS0
SLOWEST RUN 48.9s#612
STDOUT + STDERRrun #61214 SEP 2025 · 22:00 UTC LAST 4 OF 12 LINES
READING 12 MONTHS sep 2025 → aug 2026

Getting started is simple

The Cronitor CLI reads your crontab — or Windows Task Scheduler — and walks through each job with you. Choose what to monitor and the CLI creates the monitor and wraps the command. Status, duration, and output start reporting without changes to the job itself.

Prefer to add monitoring in code? Use an open-source SDK for tools such as Java, Airflow, and GitHub Actions, or send events directly to the telemetry API.

Start for free
crontabkuberneteswindowsdockerpythoncelerynoderubysidekiqphplaravelhttp api
# Install CronitorCLI on the box that runs your jobs
$ curl https://cronitor.io/install-linux?sudo=1 -H "API-KEY: <API-KEY>" | sh

# Walk the crontab and add monitoring to the jobs you choose
$ cronitor sync
----► Scanning for cron jobs...
 |--► Found 15 jobs in user "ec2-user" crontab
 |--► Send Daily Reports   │ ✔ Monitor this job
----► Sync complete 

# Your crontab comes back instrumented. Status, duration and output
# are reported for you — the job itself never changes.
0 9 * * * cronitor exec send-invoices "/usr/local/bin/send-invoices.sh"
HOW IT WORKS* * * * *

See what ran, catch what didn't, and alert the right person

Cron jobs rarely fail loudly. They may exit 0 with an empty result, start ten minutes late, or quietly stop running. Cronitor records what each job did, compares it with the schedule, and alerts whoever is on call when the two do not match.

01INSTRUMENTwhat ran
One inventory of everything scheduled

Register cron, Kubernetes CronJobs, Sidekiq, Celery, Windows Task Scheduler — or anything that can make an HTTP request. One place that knows what runs, where it runs, and when it is next due.

Logs land on the run that wrote them

Cronitor captures stdout and stderr as the job emits them and stores the output against that execution. No SSH, no tailing files, no matching timestamps by hand.

OUTa timestamped record of every execution
02DETECTwhat didn't
The run that never started

Cronitor holds your schedule and expects each run. Miss the window and it alerts — absence is a failure here, not silence. This is the failure mode you cannot catch from inside the job.

The run that took too long

Every duration is compared with that job's own history. Use the automatic slow-job alert, or set your own threshold and watch p95 instead of averages.

OUTa named failure, tied to one execution
03RESOLVEwho to tell
Alert rules you can live with

Grace periods, failure tolerance and schedule tolerance, set per job. Page on the third consecutive miss instead of the first flake, and send it to Slack or PagerDuty.

Twelve months of evidence

Success rate, duration percentiles and custom metrics, retained a full year on dashboards that load fast enough to actually use during an incident.

OUTthe right person, with the evidence
ONE PLATFORM* * * * *

Cronitor is a monitoring platform, not just a cron job watchdog

Jobs tell you whether scheduled work happened. Checks watch endpoints. Heartbeats watch long-running processes. Analytics shows what real visitors experienced, and status pages keep customers informed. They all share one dashboard and alert pipeline, so a late job and a down endpoint reach the same on-call team.

FROM THE FIELD* * * * *
FAQ

Have more questions?

01What is cron job monitoring?

Cron job monitoring verifies that your scheduled jobs start on time, finish successfully, and complete within a normal duration. Cronitor records every execution with its status, duration, metrics, and captured output, and alerts you the moment a job fails or an expected run never starts.

02How does Cronitor know when a cron job fails?

Each job reports its lifecycle to Cronitor, typically by wrapping the scheduled command with cronitor exec or by sending simple telemetry pings from your code. If a run reports a failure, exits with a non-zero code, or the expected run never arrives, Cronitor triggers an alert to email, Slack, PagerDuty, or any other channel you configure.

03Do I need to change my code to monitor a cron job?

No code changes are required. Wrapping the command in your crontab with cronitor exec is a one-line change per job and captures start, completion, exit status, and output automatically. If you prefer, you can instrument jobs directly with an HTTP ping or one of Cronitor's SDKs instead.

04How do I monitor an AI agent launched by cron?

Create a Job monitor with the agent tag, then wrap the scheduled command with cronitor exec MONITOR_KEY -- COMMAND. Cronitor records when Codex, Claude Code, or another agent starts, completes, or fails and alerts you when the cron-driven run is missing.

05What does Cronitor record for a bounded agent job?

Every invocation has a run, complete, or fail outcome plus its duration and captured output. Direct telemetry can also attach tokens, actions, and cost metrics to show how much useful work the agent performed and make unusual usage visible.

* * * * *

Monitoring for Developers