Initial vault setup
This commit is contained in:
@@ -0,0 +1,167 @@
|
||||
---
|
||||
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
|
||||
Reference in New Issue
Block a user