Aller au contenu

Vérifications de santé

phil/monitoring-bundle

Les vérifications du bundle

VérificationEn serviceDégradéHors service
DatabaseCheckLa connexion répond au SELECT 1 de la plateforme.La connexion ou la requête lance une exception.
CachePoolCheckUne sonde est enregistrée, relue puis supprimée.Le pool refuse d'enregistrer, perd la valeur ou lance une exception.
MessengerTransportCheckLe transport contient au plus son seuil de messages, ou ne peut pas les compter.Il en contient plus que son seuil.Le comptage lance une exception.
FilesystemCheckLe répertoire existe et est accessible en écriture, avec son espace libre quand un seuil est fixé.Son disque a moins d'espace libre que le seuil.Le répertoire est absent ou n'est pas accessible en écriture.
FlysystemCheckUn fichier sonde qui lui est propre, .phil-monitoring-probe- suivi de 16 chiffres hexadécimaux aléatoires, est écrit, relu puis supprimé à la racine du stockage, supprimé même s'il ne peut être relu : des vérifications simultanées ne se gênent jamais.Le stockage perd le fichier ou lance une exception.
HeartbeatsCheckAucune tâche déclarée n'est en retard.Une tâche est en retard ; le résumé la nomme.

Une vérification qui lance une exception compte comme hors service. Son exception est journalisée au niveau erreur, avec le nom de la vérification, et le résumé ne nomme que la classe de l'exception : son message pourrait contenir un hôte, un chemin ou un identifiant de connexion. Une vérification qui ne perd aucune donnée mais ralentit le site est dégradée, pas hors service. La disponibilité ne répond 503 que si une vérification est hors service, car un moniteur retire alors le site du service.

Les vérifications s'exécutent l'une après l'autre, dans l'ordre de leur enregistrement — celles du bundle, dans l'ordre de la configuration, puis celles de l'application —, à chaque sonde de disponibilité et à chaque appel de la vue détaillée. Chacune est chronométrée sur l'horloge de l'application. Une vérification ne peut pas être interrompue une fois lancée : gardez chacune rapide, et donnez aux clients qu'elle utilise leurs propres délais d'expiration, comme le délai de connexion d'une base de données ou d'un client Redis.

Les points de terminaison des moniteurs

RouteChemin sous le préfixeRéponse
phil_monitoring_liveGET /live200 {"status":"up"} tant que l'application répond ; aucune vérification ne s'exécute.
phil_monitoring_readyGET /ready{"status":"up"}, "degraded" ou "down" ; 503 si hors service, 200 sinon.
phil_monitoring_detailsGET /detailsChaque vérification, chaque tâche et la maintenance ; pour le porteur du jeton seulement.

La vivacité indique à un orchestrateur s'il doit redémarrer le processus. La disponibilité indique à un répartiteur de charge ou à un moniteur de disponibilité s'il doit envoyer du trafic. Chaque réponse est en JSON, avec Cache-Control: no-store et X-Robots-Tag: noindex, pour qu'aucun mandataire ne serve un état périmé.

La vue détaillée

curl -H 'Authorization: Bearer <token>' https://example.com/_health/details
{
    "status": "degraded",
    "checked_at": "2026-11-08T10:00:00+00:00",
    "checks": [
        {"name": "database.default", "status": "up", "summary": "Answers.", "duration_ms": 2},
        {"name": "messenger.failed", "status": "degraded", "summary": "3 messages waiting, over 0.", "duration_ms": 1}
    ],
    "heartbeats": [
        {"task": "backup", "state": "on_time", "last_beat_at": "2026-11-08T03:00:00+00:00", "due_by": "2026-11-09T04:00:00+00:00"}
    ],
    "maintenance": null
}

Le jeton est health.token, comparé en temps constant à l'en-tête Authorization entier. Sans jeton configuré, la vue répond 404 ; avec un mauvais jeton, 401 avec WWW-Authenticate: Bearer. Le jeton voyage seulement dans un en-tête, jamais dans l'adresse, où les journaux et les mandataires le garderaient. Gardez-le dans une variable d'environnement ou un secret, et donnez le même jeton à chaque moniteur qui a besoin des détails.

Le code d'état de la vue suit la disponibilité : 503 tant qu'une vérification est hors service.

Une vérification en ligne de commande

bin/console phil:monitoring:health

affiche une ligne par vérification et l'état global, et échoue tant qu'une vérification est hors service.