Monitor types

Choose the monitor type that matches how your work is triggered.

Four types. Same POST /v1/monitors call, different type and schedule:

bash
# Cron: a clock-based schedule
-d '{"type": "JOB_CRON", "schedule": "0 2 * * *", "timezone": "Europe/Amsterdam", ...}'

# Heartbeat: a repeating interval
-d '{"type": "JOB_HEARTBEAT", "schedule": "5m", ...}'

# Event-driven: no schedule to be late against
-d '{"type": "JOB_BASIC", "schedule": "0 0 * * *", "max_duration_seconds": 300, ...}'

# Uptime: Drumbeats polls your URL
-d '{"type": "UPTIME_HTTP", "schedule": "5m", "uptime_url": "https://api.example.com/health", ...}'
# Cron: a clock-based schedule
-d '{"type": "JOB_CRON", "schedule": "0 2 * * *", "timezone": "Europe/Amsterdam", ...}'

# Heartbeat: a repeating interval
-d '{"type": "JOB_HEARTBEAT", "schedule": "5m", ...}'

# Event-driven: no schedule to be late against
-d '{"type": "JOB_BASIC", "schedule": "0 0 * * *", "max_duration_seconds": 300, ...}'

# Uptime: Drumbeats polls your URL
-d '{"type": "UPTIME_HTTP", "schedule": "5m", "uptime_url": "https://api.example.com/health", ...}'

Pick the type once, when you create the monitor. Changing it later means creating a new monitor.

Pick a type#

Two questions settle it. First, does Drumbeats call you or do you call Drumbeats? Public endpoints get Uptime, everything else pings in. Second, is the work on a clock? A cron expression means Cron, a self-driven loop means Heartbeat, and work triggered by a queue message or a webhook means Event-driven.

What each type detects#

TypeDetectsCannot detect
CronMissed runs, failed runs, hung runs, slow runsNothing about the job between runs
HeartbeatMissed intervals, failed intervals, hung runsWhether individual work items succeeded
Event-drivenFailed runs, hung runsA worker that stopped consuming entirely, since silence is normal
UptimeNon-2xx responses, timeouts, DNS failures, refused connections, missing keywords, expiring certificatesAnything not visible from outside your service

What happens when it breaks#

TypeTriggerIncident eventMonitor goes DOWN
Cron, HeartbeatNo success ping by the expected time plus grace_period_secondsMISSEDAfter schedule_tolerance misses in a row
All job typesA failure ping or a non-zero exit codeFAILEDAfter failure_tolerance failures in a row
All job typesA start ping with no finish inside max_duration_secondsFAILEDYes
Cron, Heartbeat, Event-drivenRun finishes slower than max_duration_secondsDURATION_HIGHNo. This is a warning
Cron, Heartbeat, Event-drivenRun finishes faster than min_duration_secondsDURATION_LOWNo. This is a warning
UptimeCheck fails, then two retries failFAILEDYes
UptimeTLS certificate crosses 30, 14, 7, or 1 day remainingSSL_EXPIRINGNo. The monitor stays UP

How you get alerted#

Every type routes the same way. The incident pages the notification groups assigned to the monitor, and every channel in those groups fires in parallel. The message carries the monitor name, the incident event, the timestamp, and a link to the incident.

Recovery is automatic on all four types. A success ping, or a passing check for Uptime, resolves the incident, flips the monitor back to UP, and sends a recovery message with the outage duration. The consecutive-failure and consecutive-miss counters reset, so the next outage starts clean.

Compare the four#

CapabilityCronHeartbeatEvent-drivenUptime
Drumbeats polls a URL for younononoyes
Alerts on missed runsyesyesnono
Alerts on explicit failure pingsyesyesyesno
Detects hung runsyesyesyesno
Response-time trackingnononoyes
Certificate expiry warningsnononoyes
run_id correlationoptionaloptionalrequirednot used
Eligible for status pagesyesyesnoyes

Set a schedule Drumbeats accepts#

Cron monitors take a standard five-field cron expression. Six-field expressions with seconds are rejected. Heartbeat and Uptime monitors take an interval string: 30s, 5m, 1h, 1d, 1w.

Your plan sets a floor on how often a monitor may fire. Free accounts cannot go below 60 seconds, paid plans cannot go below 30 seconds. A schedule under the floor is rejected at create time with a 400.

Next#

Read the page for the type you picked: Cron, Heartbeat, Event-driven, or Uptime. Incidents covers what happens after a monitor goes DOWN.