TL;DR — Quick Summary

Deploy Healthchecks for self-hosted cron job and scheduled task monitoring. Dead man's switch pattern — get alerted when jobs DON'T run. Docker setup, integrations, and notification channels.

What Is Healthchecks?

Healthchecks monitors your cron jobs and scheduled tasks using the dead man’s switch pattern — it alerts you when jobs don’t run, not when they fail with an error.

services:
  healthchecks:
    image: healthchecks/healthchecks:latest
    container_name: healthchecks
    restart: always
    ports:
      - "8000:8000"
    environment:
      - ALLOWED_HOSTS=*
      - DB=postgres
      - DB_HOST=db
      - DB_NAME=healthchecks
      - DB_USER=healthchecks
      - DB_PASSWORD=healthchecks
      - SECRET_KEY=your-secret-key
      - SITE_ROOT=https://hc.yourdomain.com
    depends_on:
      - db

  db:
    image: postgres:15-alpine
    environment:
      POSTGRES_DB: healthchecks
      POSTGRES_USER: healthchecks
      POSTGRES_PASSWORD: healthchecks
    volumes:
      - hc-data:/var/lib/postgresql/data

volumes:
  hc-data:

How It Works

Your Cron Job → completes → pings URL → ✅ Healthchecks records success
Your Cron Job → fails/hangs → no ping → ⏰ Grace period → 🚨 Alert sent

Usage Examples

# Add to end of any cron job
0 * * * * /usr/bin/backup.sh && curl -fsS https://hc.yourdomain.com/ping/UUID

# Report success/failure separately
/usr/bin/backup.sh && curl https://hc.../ping/UUID || curl https://hc.../ping/UUID/fail

# Measure execution time (start + finish)
curl https://hc.../ping/UUID/start && /usr/bin/backup.sh && curl https://hc.../ping/UUID

Healthchecks vs Alternatives

FeatureHealthchecksUptime KumaCronitor
PatternDead man’s switchActive pollingBoth
Self-hosted
Cron monitoring✅ Native
HTTP monitoring✅ Native
CostFreeFree$20+/mo