Monitor cron jobs, micro services and almost anything else.

Realtime alerts when your tasks and services:
  • Don't run on schedule
  • ·
  • Run too long
  • ·
  • Fail Unexpectedly


  1. Create a monitor with rules like not run in 10 minutes. We'll assign it a unique Ping URL.

  2. Like the examples here, make an https request to your Ping URL when your job runs.

  3. If we don't receive the pings we're expecting we'll send you an alert.
Ping Cronitor after your job completes successfully:
# m h dom mon dow   command
0 1 * * * /path/to/mysqlbackup.sh && 
curl https://cronitor.link/d3x0/complete -m 10
On paid accounts, report failures and trigger on-demand alerts:
# m h dom mon dow   command
0 1 * * * /path/to/mysqlbackup.sh || curl https://cronitor.link/d3x0/fail -m 10
Ping Cronitor before and after your job:
#!/usr/bin/env bash
curl https://cronitor.link/d3x0/run -m 10 || true
/path/to/do_things.sh
curl https://cronitor.link/d3x0/complete -m 10 || true
Using a bash wrapper script:

When adding Cronitor tracking to a bash script or directly to Crontab, you may want to wrap the ping requests in a helper script. Another Cronitor user has shared his wrapper script on Github: Cronitor ping wrapper by Ethan Erchinger

Ping Cronitor before and after your job using Requests:
import requests
requests.get(
   'https://cronitor.link/d3x0/run',
   timeout=10
)

# Application Code Here

requests.get(
   'https://cronitor.link/d3x0/complete',
   timeout=10
)
Ping Cronitor before and after your job using OpenURI:
require 'open-uri'
open(
   'https://cronitor.link/d3x0/run',
   :read_timeout=>10
)

# Application Code Here

open(
   'https://cronitor.link/d3x0/complete',
   :read_timeout=>10
)
Ping Cronitor before and after your job using file_get_contents:
file_get_contents('https://cronitor.link/d3x0/run');
# Application Code Here
file_get_contents('https://cronitor.link/d3x0/complete');
The same integration using curl:
$curl = curl_init();
curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://cronitor.link/d3x0/run',
  CURLOPT_TIMEOUT => 10,
));
curl_exec($curl);

# Application Code Here

$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://cronitor.link/d3x0/complete',
CURLOPT_TIMEOUT => 10,
));
curl_exec($curl);

On paid plans, Cronitor alerts can be delivered via webhook request to your server. Configuring webhook alerts is simple:

  1. When you create your monitor, provide a URL on your server that will receive webhook requests.

  2. When an alert is triggered, Cronitor will POST to this endpoint.

  3. The body of the POST request will be a JSON object:

    {
      "id": "The alphanumeric code in your tracking URL",
      "monitor": "Name of the monitor the alert is for",
      "description": "Why the alert was triggered"
      "rule": "Name of the rule that was violated"
    }
    


Used by companies big and small around the world including:

"Before we used Cronitor, we had a cron job fail silently for over a month. We use Cronitor so that will never happen again."

Natalie Gordon, CEO - BabyList

"We use Cronitor to watch all of our cron based backup scripts. It's dead simple and reliable."

Gautam Jayaraman, CTO - Rickshaw

Have any questions about our features or plans?
Give us a call at 866-985-8690


Solo Cronitor

$24.95/mo

50 monitors   1 user

SMS & Webhook Notifications
Multiple Alert Recipients
On-Demand Alert Endpoint
Automation API
Authenticated Ping Tracking
Slack Integration

Cronitor for Teams

$69.95/mo

500 monitors   5 users

All Solo Cronitor features, plus:
PagerDuty Integration
Shared Team Dashboard

Enterprise Cronitor

$99.95/mo

1000 monitors   10 users

All Cronitor for Teams features, plus:
Concierge support
Enterprise-class SLAs
Additional users, $5/mo

Start your risk-free, 14-Day trial today or learn more about our premium features.