--- title: Healthchecks created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, monitoring, cron, jobs, python, alerting] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Monitoring, https://github.com/healthchecks/healthchecks] --- # 📊 Healthchecks > **Le chien de garde de vos cron jobs** : chaque script planifié doit envoyer un « ping » à intervalle régulier. S'il ne le fait pas, Healthchecks vous alerte. Indispensable pour les sauvegardes, ETL, jobs batch. ## 📋 Informations Générales | Champ | Valeur | | :--- | :--- | | **Site web** | [healthchecks.io](https://healthchecks.io/) | | **GitHub** | [healthchecks/healthchecks](https://github.com/healthchecks/healthchecks) | | **License** | BSD-3-Clause | | **Langage** | Python (Django) | | **Étoiles GitHub** | 10 080 ⭐ | | **Dernière MAJ** | 2026-06-05 | | **Catégorie** | [[cat-monitoring|Monitoring]] | ## 📝 Description **Healthchecks** est un **service de monitoring de tâches planifiées** (cron jobs, batchs, sauvegardes). Le principe est radicalement différent d'[[app-uptime-kuma]] : ici, ce n'est pas le serveur qui interroge le job, c'est **le job lui-même qui prévient le serveur** qu'il s'est bien exécuté. Concrètement, chaque job reçoit une URL unique (avec un UUID). Il doit faire un `curl https://hc.example.com/ping/UUID` à la fin de son exécution. Si le job ne « ping » pas dans l'intervalle attendu (ex : toutes les 24 h), Healthchecks déclenche une alerte : « votre sauvegarde nocturne n'a pas tourné cette nuit ». C'est l'outil parfait pour détecter les **échecs silencieux** : un backup qui ne finit jamais, un cron qui crash sans écrire de log, une migration qui tourne en rond. - ✅ **Check URLs uniques** avec UUID/token - ✅ **Périodicité configurable** par check (toutes les 1h, 24h, 7j…) - ✅ **Grâce period** : tolérance avant alerte (ex : 1h après le créneau attendu) - ✅ **Alertes multi-niveaux** : « n'a pas tourné à temps » + « a planté » - ✅ **Notifications** : Email, Slack, Discord, Telegram, SMS, PagerDuty, OpsGenie, Webhook - ✅ **API REST** pour intégrer dans vos outils - ✅ **Status page** publique (badge) - ✅ **Multi-équipes** : projets isolés par équipe - ✅ **Base de données** : PostgreSQL (production) ou SQLite (test) - ✅ **Docker** et **bare-metal** (systemd unit fourni) **Public cible** : **devs et sysadmins** qui gèrent des **tâches planifiées critiques** (backups, ETL, webhooks, exports). Complémentaire (et non concurrent) d'[[app-uptime-kuma]] qui surveille des services HTTP. ## 🚀 Installation ### Option 1 : Docker Compose ```yaml # docker-compose.yml version: '3.8' services: healthchecks: image: healthchecks/healthchecks:latest container_name: healthchecks restart: unless-stopped ports: - "8000:8000" environment: - SITE_ROOT=https://hc.example.com - SECRET_KEY=changez-moi-en-secret-tres-long - ALLOWED_HOSTS=hc.example.com - DB=postgres - DB_HOST=db - DB_PORT=5432 - DB_NAME=healthchecks - DB_USER=hc - DB_PASSWORD=hcpass depends_on: - db volumes: - hc-data:/data labels: - "traefik.enable=true" - "traefik.http.routers.hc.rule=Host(`hc.example.com`)" - "traefik.http.routers.hc.entrypoints=websecure" - "traefik.http.routers.hc.tls.certresolver=letsencrypt" - "traefik.http.services.hc.loadbalancer.server.port=8000" db: image: postgres:16-alpine container_name: healthchecks-db restart: unless-stopped environment: - POSTGRES_DB=healthchecks - POSTGRES_USER=hc - POSTGRES_PASSWORD=hcpass volumes: - hc-db:/var/lib/postgresql/data volumes: hc-data: hc-db: ``` ### Option 2 : Binaire / PyPI (déconseillé en prod, mais pour tester) ```bash pip install healthchecks hc migrate hc runserver ``` ## ⚙️ Configuration Initiale 1. **Accéder à l'UI** : `https://hc.example.com` (via [[app-traefik]]) 2. **Créer le compte superuser** : `docker compose exec healthchecks python manage.py createsuperuser` 3. **Créer un Check** : Add Check > nom > période (ex : 1 day) > grâce (ex : 1 hour) 4. **Copier l'URL de ping** : `https://hc.example.com/ping/UUID-VOSTRE-CHECK` 5. **Ajouter le ping à la fin de votre cron job** : ```bash # /etc/cron.d/backup 0 3 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 --retry 5 https://hc.example.com/ping/UUID >/dev/null ``` 6. **Configurer les canaux de notification** : Integrations > Email/Slack/Discord ## 🔄 Alternatives ### Open Source - [[app-uptime-kuma]] — Approche inverse (le serveur interroge le service), pour HTTP - **Cronitor** (open core) — Similaire mais plus orienté SaaS - **Dead Man's Snitch** (fork libre) — Historique de Healthchecks - **Kuvasz** — Uptime monitoring + alerting ### Comparaison Healthchecks vs autres | Critère | Healthchecks | Uptime Kuma | Cronitor | Dead Man's Snitch | | :--- | :--- | :--- | :--- | :--- | | Self-hosted | ✅ | ✅ | ⚠️ open core | ❌ | | Focus | Cron jobs | Services HTTP | Cron jobs | Cron jobs | | Push (job → server) | ✅ | ✅ (push monitors) | ✅ | ✅ | | Pull (server → service) | ❌ | ✅ | ✅ | ❌ | | Notifications | 20+ | 90+ | 15+ | Basique | | Pricing | Gratuit | Gratuit | Freemium | Payant | | API | ✅ REST | ✅ | ✅ | ❌ | **Verdict** : pour les **cron jobs critiques**, Healthchecks est la référence. Pour la **surveillance de services HTTP**, restez sur [[app-uptime-kuma]]. Les deux sont **complémentaires**, pas concurrents. ### Propriétaires (ce que Healthchecks remplace) - **Cronitor** (gratuit limité, $24/mois pour pro) - **Healthchecks.io** (le SaaS officiel, 20 checks gratuits) - **Pingdom Transactions** (focus Web cron) - **Datadog Synthetics** (intégré à la stack Datadog) ## 🔐 Sécurité - **Auth utilisateur** avec gestion des rôles (read-only, membre, admin) - **HTTPS obligatoire** via [[app-traefik]] (les URL de ping contiennent des UUID/token) - **API tokens** distincts des mots de passe utilisateur - **Rotation des UUID** de check possible depuis l'UI ## 📚 Ressources - [GitHub healthchecks/healthchecks](https://github.com/healthchecks/healthchecks) - [Documentation officielle](https://healthchecks.io/docs/) - [Self-hosting guide](https://github.com/healthchecks/healthchecks/blob/master/docs/Install.rst) - [SaaS officiel](https://healthchecks.io) (version cloud) ## Pages Liées - [[cat-monitoring]] — Catégorie Monitoring - [[app-uptime-kuma]] — Monitoring de services HTTP - [[app-traefik]] — Reverse proxy HTTPS - [[observabilite]] — Concept d'observabilité - [[checklist-monitoring-minimal]] — Checklist de démarrage