Publié le 22 septembre 2026, l'article de Paul Redmond dans Laravel News présente Health for Laravel, un paquet de Sylvester Damgaard. Il ajoute `/health`, `/health/ready` et `/health/startup` pour les trois types de sondes Kubernetes. Chaque route peut recevoir sa propre série de contrôles. Les nouvelles applications Laravel disposent aussi de la route `/up`, qui indique si l'application a démarré correctement. Health for Laravel fournit dix contrôles intégrés pour la base de données, le cache, la file d'attente, le stockage, Redis, l'environnement, le planificateur, le CPU, la mémoire et l'espace disque.
composer require cboxdk/laravel-health
php artisan vendor:publish --tag="health-config"
php artisan health:check
php artisan health:check --endpoint=readinessLa configuration se fait dans `config/health.php`. Liveness peut utiliser `DatabaseCheck`. Readiness peut réunir les contrôles de la base, du cache, de Redis, de la file et du stockage. Startup peut utiliser `EnvironmentCheck`. Une sonde renvoie HTTP 200 lorsque tous les contrôles sont corrects ou au niveau avertissement. Elle renvoie HTTP 503 lorsqu'un contrôle est critique ou inconnu. Kubernetes redémarre un conteneur après un échec de liveness. Un échec de readiness retire le pod du trafic, mais le conteneur continue de fonctionner.
Dans le manifeste de déploiement présenté, liveness utilise `/health` sur le port 80 avec `periodSeconds: 15`. Readiness utilise `/health/ready` avec `periodSeconds: 10`. Startup utilise `/health/startup` avec `failureThreshold: 30` et `periodSeconds: 5`. `/health/status` renvoie le résultat de chaque contrôle et le nom d'hôte. Dans Kubernetes, ce nom correspond au nom du pod. Les trois routes de sonde ne renvoient pas cette information.
Les résultats sont mis en cache pendant dix secondes par défaut. Une interface HTML facultative existe à l'adresse `/health/ui`, avec une désactivation initiale. Prometheus peut interroger `/health/metrics`. Chaque contrôle produit `app_health_check_status`, avec 1.0 pour ok, 0.5 pour un avertissement et 0.0 pour un état critique ou inconnu. `app_health_check_duration_seconds` mesure sa durée d'exécution. Le préfixe des métriques vient de `HEALTH_PROMETHEUS_NAMESPACE`.
Les données système proviennent du paquet `cboxdk/system-metrics` de l'auteur, compatible avec Linux et macOS. Elles couvrent les moyennes de charge, la mémoire, l'utilisation de chaque point de montage, les octets réseau par interface et la durée depuis le démarrage. Dans un conteneur, le paquet lit les limites cgroup v1 et v2. Les valeurs mémoire décrivent ainsi le conteneur. Les métriques de conteneur ajoutent `app_container_memory_limit_bytes` et `app_container_memory_usage_bytes` comme gauges. `app_container_cpu_quota` est aussi une gauge. `app_container_cpu_throttled_total` et `app_container_oom_kills_total` sont des compteurs. Les mêmes données système sont disponibles en JSON via `/health/metrics/json`, avec le nom d'hôte ou de pod qui a traité la requête.
`ScheduleCheck` lit dans le cache un horodatage de heartbeat. Dans `routes/console.php`, la commande `health:heartbeat` peut être planifiée chaque minute. Un heartbeat plus ancien que la valeur par défaut `max_age_minutes`, fixée à 5, produit un état critique. L'absence initiale de heartbeat produit un avertissement. Après cinq minutes sans exécution du planificateur, l'ajout de ce contrôle à readiness fait répondre la route avec HTTP 503.
Un contrôle personnalisé implémente le contrat HealthCheck avec `name()` et `run()`, cette dernière méthode renvoyant un `CheckResult`. Une classe qui étend `BaseCheck` tire son nom de la classe. `PaymentGatewayCheck` devient donc `payment_gateway`. L'exemple appelle `https://payments.example.com/health` avec un délai HTTP de cinq secondes. Une exception `\Throwable` interceptée produit un résultat critique accompagné de son message. Une réponse réussie produit un résultat ok. Toute autre réponse produit un résultat critique avec son code HTTP. `CheckResult` propose les constructeurs `ok()`, `warning()`, `critical()` et `unknown()`. Chacun accepte un tableau de métadonnées en troisième argument. Ces métadonnées apparaissent dans les réponses de statut et JSON. `QueueCheck` s'en sert pour exposer `queue_size`.
La version 2.0.0 exige PHP 8.3 et Laravel 11, 12 ou 13. L'installation passe par Composer et le tag de publication `health-config`. `php artisan health:check` exécute par défaut les contrôles de liveness et de readiness. Une erreur entraîne un code de sortie différent de zéro. L'option `--endpoint=readiness` sélectionne explicitement readiness. `HEALTH_PREFIX` modifie le préfixe `/health`. Chaque route possède ses propres chemins et clés d'activation, ce qui permet des variantes comme `/readyz`. Le code source et la documentation complète sont disponibles sur GitHub.




Commentaires
Pas encore de commentaire — écris le premier.
Lance la discussion
Pas de compte ni de mot de passe — saisis simplement ton adresse e-mail et nous t’envoyons un lien de connexion à usage unique. Première visite ? Tout se met en place automatiquement.
Ton évaluation sera appliquée automatiquement après ta connexion.
Vérifie ta boîte mail
Nous avons envoyé un lien de connexion à …. Ouvre-le sur cet appareil — cet onglet te connectera automatiquement.
Rien reçu ? Vérifiez le dossier spam — et marquez le message « Non spam » pour qu'il arrive directement la prochaine fois.