El artículo de Paul Redmond, publicado en Laravel News el 22 de septiembre de 2026, presenta Health for Laravel, un paquete de Sylvester Damgaard. Añade `/health`, `/health/ready` y `/health/startup` para los tres tipos de sondas de Kubernetes. Cada ruta puede tener su propio conjunto de comprobaciones. Las aplicaciones nuevas de Laravel también incluyen `/up`, una ruta que informa de si la aplicación arrancó. Health for Laravel incorpora diez comprobaciones para la base de datos, la caché, la cola, el almacenamiento, Redis, el entorno, el planificador, la CPU, la memoria y el espacio en disco.

terminal
composer require cboxdk/laravel-health
php artisan vendor:publish --tag="health-config"
php artisan health:check
php artisan health:check --endpoint=readiness

La asignación se realiza en `config/health.php`. Liveness puede usar `DatabaseCheck`. Readiness puede combinar comprobaciones de base de datos, caché, Redis, cola y almacenamiento. Startup puede usar `EnvironmentCheck`. Una sonda devuelve HTTP 200 cuando todas las comprobaciones están correctas o en estado de advertencia. Devuelve HTTP 503 cuando alguna está en estado crítico o desconocido. Kubernetes reinicia un contenedor tras un fallo de liveness. Un fallo de readiness retira el pod del tráfico y mantiene el contenedor en ejecución.

El manifiesto de despliegue del ejemplo usa `/health` en el puerto 80 con `periodSeconds: 15` para liveness. Readiness utiliza `/health/ready` con `periodSeconds: 10`. Startup utiliza `/health/startup` con `failureThreshold: 30` y `periodSeconds: 5`. `/health/status` devuelve el resultado de cada comprobación y el nombre del host. En Kubernetes, ese nombre es el del pod. Las tres rutas de sondas no incluyen el nombre del host.

Los resultados se guardan en caché durante diez segundos por defecto. El paquete ofrece una página HTML opcional en `/health/ui`, desactivada inicialmente. Prometheus puede consultar `/health/metrics`. Cada comprobación genera `app_health_check_status`, con 1.0 para ok, 0.5 para una advertencia y 0.0 para estados críticos o desconocidos. `app_health_check_duration_seconds` registra el tiempo empleado. El prefijo de las métricas procede de `HEALTH_PROMETHEUS_NAMESPACE`.

Los datos del sistema proceden del paquete `cboxdk/system-metrics` del autor, compatible con Linux y macOS. Incluyen medias de carga, memoria, uso de disco por punto de montaje, bytes de red por interfaz y tiempo de actividad. Dentro de un contenedor, el paquete lee los límites de cgroup v1 y v2. Las cifras de memoria describen así el contenedor. También expone `app_container_memory_limit_bytes` y `app_container_memory_usage_bytes` como gauges. `app_container_cpu_quota` es otro gauge. `app_container_cpu_throttled_total` y `app_container_oom_kills_total` son contadores. La misma información del sistema está disponible en JSON mediante `/health/metrics/json`, junto con el nombre del host o del pod que atendió la petición.

`ScheduleCheck` lee de la caché una marca de tiempo de heartbeat. En `routes/console.php`, el comando `health:heartbeat` puede programarse cada minuto. Un heartbeat más antiguo que el valor predeterminado `max_age_minutes`, fijado en 5, produce un resultado crítico. La ausencia de un heartbeat produce una advertencia. Al añadir esta comprobación a readiness, la ruta responde con 503 después de cinco minutos sin una ejecución del planificador.

Las comprobaciones personalizadas implementan el contrato HealthCheck con los métodos `name()` y `run()`, que devuelve un `CheckResult`. Al extender `BaseCheck`, el nombre se obtiene de la clase. Por eso `PaymentGatewayCheck` se convierte en `payment_gateway`. El ejemplo llama a `https://payments.example.com/health` con un tiempo de espera HTTP de cinco segundos. Una excepción `\Throwable` capturada produce un resultado crítico con su mensaje. Una respuesta correcta produce un resultado ok. Las demás respuestas producen un resultado crítico con el código HTTP. `CheckResult` ofrece los constructores `ok()`, `warning()`, `critical()` y `unknown()`. Cada uno acepta un array de metadatos como tercer argumento. Esos datos aparecen en las respuestas de estado y JSON. `QueueCheck` los utiliza para informar de `queue_size`.

La versión 2.0.0 requiere PHP 8.3 y Laravel 11, 12 o 13. La instalación usa Composer y la etiqueta de publicación `health-config`. `php artisan health:check` ejecuta por defecto las comprobaciones de liveness y readiness. Un fallo produce un código de salida distinto de cero. La opción `--endpoint=readiness` selecciona readiness de forma explícita. `HEALTH_PREFIX` cambia el prefijo `/health`. Cada ruta tiene sus propios caminos y claves de activación, lo que permite configuraciones como `/readyz`. El código fuente y la documentación completa están disponibles en GitHub.