Paul Redmond beschreibt bei Laravel News in einem am 22. September 2026 veröffentlichten Beitrag Health for Laravel, ein Paket von Sylvester Damgaard. Es stellt `/health`, `/health/ready` und `/health/startup` für die drei Kubernetes-Probe-Typen bereit. Jede Route kann eigene Prüfungen verwenden. Laravel-Anwendungen bringen außerdem die Route `/up` mit, die den erfolgreichen Bootvorgang der Anwendung meldet. Health for Laravel enthält zehn eingebaute Checks für Datenbank, Cache, Queue, Storage, Redis, Umgebung, Scheduler, CPU, Arbeitsspeicher und Festplattenplatz.
composer require cboxdk/laravel-health
php artisan vendor:publish --tag="health-config"
php artisan health:check
php artisan health:check --endpoint=readinessDie Zuordnung erfolgt in `config/health.php`. Eine Liveness-Konfiguration kann `DatabaseCheck` enthalten. Für Readiness lassen sich Datenbank, Cache, Redis, Queue und Storage kombinieren. Der Startup-Check kann `EnvironmentCheck` verwenden. Eine Probe antwortet mit HTTP 200, wenn alle Checks ok oder im Warnstatus sind. Bei einem kritischen oder unbekannten Ergebnis liefert sie HTTP 503. Kubernetes startet einen Container nach einem fehlgeschlagenen Liveness-Check neu. Bei einem fehlgeschlagenen Readiness-Check nimmt Kubernetes den Pod aus dem Datenverkehr, der Container läuft weiter.
Das Beispiel für das Deployment verwendet `/health` an Port 80 mit `periodSeconds: 15` für Liveness. Readiness nutzt `/health/ready` mit `periodSeconds: 10`. Startup nutzt `/health/startup` mit `failureThreshold: 30` und `periodSeconds: 5`. `/health/status` liefert alle Check-Ergebnisse und den Hostnamen. In Kubernetes entspricht dieser Hostname dem Pod-Namen. Die drei Probe-Routen geben ihn nicht zurück.
Die Ergebnisse werden standardmäßig zehn Sekunden gecacht. Eine optionale HTML-Ansicht ist unter `/health/ui` verfügbar und zunächst deaktiviert. Prometheus kann `/health/metrics` abfragen. Jeder Check erzeugt `app_health_check_status` mit 1.0 für ok, 0.5 für eine Warnung und 0.0 für kritisch oder unbekannt. `app_health_check_duration_seconds` misst die Laufzeit. Der Präfix für die Metriken kommt aus `HEALTH_PROMETHEUS_NAMESPACE`.
Systemdaten liefert das Paket `cboxdk/system-metrics` des Autors. Es unterstützt Linux und macOS. Erfasst werden Load-Durchschnitte, Arbeitsspeicher, die Belegung jedes Mountpoints, Netzwerkbytes pro Interface und die Uptime. Innerhalb von Containern liest das Paket cgroup-Limits der Versionen v1 und v2. Die Speicherwerte beziehen sich dadurch auf den Container. Zusätzlich gibt es `app_container_memory_limit_bytes` und `app_container_memory_usage_bytes` als Gauges. `app_container_cpu_quota` ist ebenfalls ein Gauge. `app_container_cpu_throttled_total` und `app_container_oom_kills_total` sind Counter. Dieselben Systemdaten liefert `/health/metrics/json` als JSON, ergänzt um den Hostnamen oder Pod-Namen des antwortenden Prozesses.
`ScheduleCheck` liest einen Heartbeat-Zeitstempel aus dem Cache. In `routes/console.php` kann der Befehl `health:heartbeat` minütlich eingeplant werden. Ist der Heartbeat älter als der Standardwert `max_age_minutes` von 5, wird das Ergebnis kritisch. Fehlt zunächst ein Heartbeat, lautet der Status Warnung. Wird der Check in die Readiness-Liste aufgenommen, antwortet die Route nach fünf Minuten ohne Scheduler-Lauf mit 503.
Eigene Checks implementieren den HealthCheck-Vertrag mit den Methoden `name()` und `run()`. Beide führen zu einem `CheckResult`. Wer `BaseCheck` erweitert, erhält den Namen aus dem Klassennamen. `PaymentGatewayCheck` wird dadurch zu `payment_gateway`. Das Beispiel ruft `https://payments.example.com/health` mit einem HTTP-Timeout von fünf Sekunden auf. Eine abgefangene `\Throwable` erzeugt ein kritisches Ergebnis mit der Fehlermeldung. Eine erfolgreiche Antwort ergibt den Status ok. Andere HTTP-Antworten erzeugen ein kritisches Ergebnis mit dem Statuscode. `CheckResult` bietet die Konstruktoren `ok()`, `warning()`, `critical()` und `unknown()`. Der dritte Parameter ist jeweils ein Metadaten-Array. Diese Daten erscheinen in Status- und JSON-Antworten. `QueueCheck` nutzt sie für `queue_size`.
Version 2.0.0 benötigt PHP 8.3 sowie Laravel 11, 12 oder 13. Die Installation erfolgt mit Composer und dem Publish-Tag `health-config`. `php artisan health:check` führt standardmäßig die Liveness- und Readiness-Checks aus. Bei einem Fehler endet der Befehl mit einem Status ungleich null. Mit `--endpoint=readiness` lässt sich Readiness direkt auswählen. `HEALTH_PREFIX` ändert den Präfix `/health`. Für jede Route können Pfad und aktivierte Checks separat konfiguriert werden, auch für Varianten wie `/readyz`. Quellcode und vollständige Dokumentation liegen auf GitHub.




Kommentare
Noch keine Kommentare — schreib den ersten.
Starte die Diskussion
Kein Konto, kein Passwort nötig — gib einfach deine E-Mail-Adresse ein, wir senden dir einen einmaligen Anmelde-Link. Beim ersten Mal bist du damit automatisch angemeldet.
Deine Bewertung wird nach der Anmeldung automatisch übernommen.
Schau in dein Postfach
Wir haben einen Anmelde-Link an … gesendet. Öffne ihn auf diesem Gerät — dieser Tab meldet dich automatisch an.
Nichts angekommen? Wirf einen Blick in den Spam-Ordner — und markiere die Mail dort als „Kein Spam“, dann landet sie künftig direkt im Postfach.