Un endpoint, quatre checks
Myaku Health Check expose un unique endpoint GET /health qui rapporte l'état
de ton disque, de la RAM, de la base de données et du cache. Base de données et cache sont
auto-détectés, aucune configuration supplémentaire.
x-myaku-token. Deux gardes indépendants évalués dans l'ordre.doctrine.dbal.default_connection et cache.app se branchent automatiquement si présents. Les services absents sont ignorés.503.Dépendances
| Package | Version | Rôle |
|---|---|---|
| php | ≥ 8.2 | Requis par Symfony 7.4+ |
| symfony/http-kernel | ^7.4 · ^8.0 | AbstractBundle, Gestion des requêtes |
| symfony/console | ^7.4 · ^8.0 | Injection de dépendances |
| doctrine/dbal | ^3.0 · ^4.0 | Check de connectivité base de données |
| symfony/cache-contracts | ^3.0 | Interface de cache (optionnel) |
doctrine/doctrine-bundle et symfony/cache sont auto-branchés si présents
leurs checks sont simplement ignorés en cas d'absence.
Mise en place
01 — Require
02 — Enregistrer le bundle
// config/bundles.php
return [
Devexploris\MyakuHealthCheck\MyakuHealthCheckBundle::class => ['all' => true],
];
03 — Enregistrer la route
# config/routes.yaml
myaku_health_check:
resource: Devexploris\MyakuHealthCheck\Controller\HealthCheckController
type: attribute
Configuration
Créer config/packages/myaku_health_check.yaml :
myaku_health_check:
threshold: # optionnel
space: 80 # alerte si disque utilisé à plus de X% (0-100)
memory: 90 # alerte si RAM utilisée à plus de X% (0-100)
space:
path: / # point de montage à surveiller (défaut : /)
security:
token: "%env(APP_MYAKU_TOKEN)%" # générer avec : openssl rand -hex 24
whitelist: # optionnel si vide, toutes les IPs sont autorisées
- "127.0.0.1"
- "172.21.0.1"
Seuils
Les deux seuils sont optionnels. Lorsqu'ils sont configurés, un usage supérieur au seuil déclenche un 503 et positionne threshold_targeted: true dans la réponse JSON.
| Clé | Type | Description |
|---|---|---|
threshold.space | int (0–100) | Seuil d'alerte usage disque (%) |
threshold.memory | int (0–100) | Seuil d'alerte usage RAM(%) pour Linux uniquement |
space.path | string | Point de montage à surveiller (défaut : /) |
Clés de sécurité
| Clé | Description |
|---|---|
security.token | Token requis dans le header x-myaku-token |
security.whitelist | Liste des IPs clientes autorisées. Si vide, toutes les IPs sont acceptées |
GET /health
Point d'entrée unique pour tous les checks de santé. Retourne 200 quand tout est sain, 503 si au moins un check échoue ou dépasse son seuil.
| Code | Signification |
|---|---|
200 |
Tous les checks sont sains |
403 |
IP non autorisée ou token invalide |
503 |
Au moins un check est en erreur ou dépasse son seuil |
Deux gardes, un ordre
Deux contrôles sont appliqués dans l'ordre. Le premier échec retourne immédiatement 403, le second garde n'est jamais évalué.
| 01 | Whitelist IP si la liste n'est pas vide, l'IP cliente doit y figurer. Sinon 403. Une whitelist vide autorise toutes les IPs. |
| 02 | Token le header x-myaku-token doit correspondre au token configuré. Sinon 403. |
curl -H "x-myaku-token: your_token_here" https://your-app.com/health
Réponse JSON
Réponse saine
Les champs threshold et threshold_targeted n'apparaissent que si le seuil correspondant est configuré.
{
"space": {
"free": "45.30 Go",
"used": "54.70 Go",
"total": "100.00 Go",
"threshold": "80%",
"threshold_targeted": false
},
"memory": {
"free": "4.77 Go",
"used": "10.04 Go",
"total": "14.81 Go",
"threshold": "90%",
"threshold_targeted": false
},
"database": {
"connected": true,
"latency": "1.23ms"
},
"cache": {
"connected": true,
"latency": "0.45ms"
}
}
threshold_targeted: true
le pourcentage d'utilisation dépasse le seuil configuré. Cela seul déclenche un 503.
Réponses en erreur
Quand un service est injoignable, connected est false et le champ error contient le message d'exception. La réponse globale passe en 503.
Database
{
"database": {
"connected": false,
"error": "SQLSTATE[HY000] [2002] Connection refused"
}
}
Cache
{
"cache": {
"connected": false,
"error": "No cache configured"
}
}
Support par plateforme
| Check | Linux | macOS | Windows |
|---|---|---|---|
| Espace disque | ✅ | ✅ | ✅ |
| RAM | ✅ | ❌ | ❌ |
| Base de données | ✅ | ✅ | ✅ |
| Cache | ✅ | ✅ | ✅ |
MemoryChecker lit /proc/meminfo, disponible uniquement sur Linux.
Sur les autres systèmes, le check mémoire est silencieusement ignoré.