¿Qué es Laravel Nightwatch?
Laravel Nightwatch es una plataforma SaaS gestionada para monitorizar de forma continua el entorno de producción de aplicaciones Laravel. Recoge y visualiza en tiempo real datos de telemetría de toda la aplicación: peticiones HTTP, consultas SQL, excepciones, jobs de cola, logs, tareas programadas, etc.Nightwatch es un servicio de pago (facturación mensual). Se puede usar también con el plan gratuito, pero hay un límite en el número de eventos que se pueden recoger. Para usarlo de forma práctica en el plan gratuito es imprescindible aplicar la configuración de muestreo y filtrado descrita a continuación.
Diferencias con Telescope y Pulse
Nightwatch difiere en propósito de las herramientas de monitorización y depuración ya existentes en el ecosistema Laravel. Vamos a organizar sus usos.| Herramienta | Uso | Hosting | Entorno objetivo |
|---|---|---|---|
| Telescope | Depuración e investigación de queries en desarrollo | Propio (dentro de la app Laravel) | Desarrollo local |
| Pulse | Agregación y visualización de métricas de rendimiento | Propio (dentro de la app Laravel) | Producción y staging |
| Nightwatch | Monitorización en tiempo real de apps en producción | SaaS gestionado por Laravel | Entorno de producción |
Arquitectura
Nightwatch adopta una configuración en la que se interpone un proceso agente entre la app Laravel y la nube de Nightwatch. El agente permanece a la escucha en local (127.0.0.1:2407), recibe eventos de la app Laravel y los reenvía a la nube. Por eso hay que mantener el proceso agente siempre en ejecución.
Instalación y configuración inicial
1. Creación de cuenta y aplicación
Crea una cuenta en nightwatch.laravel.com y registra la organización y la aplicación. Tras registrar la aplicación se emite un token de entorno.2. Instalación del paquete
--dev no es necesaria. Nightwatch está pensado para usarse en producción.
3. Configuración del token
Añade el token al archivo.env.
4. Arranque del agente
5. Desactivación en el entorno de tests
Se recomienda desactivar Nightwatch durante la ejecución de tests.phpunit.xml.
Configuración para usarlo de forma práctica en el plan gratuito
Bajar la tasa de muestreo
NIGHTWATCH_REQUEST_SAMPLE_RATE es por defecto 1.0 (recoge todas las peticiones). Se recomienda reducirlo a algo así como 0.1 (10 %) en el plan gratuito.
Desactivar la recolección de queries
Las consultas a base de datos representan una gran proporción de eventos. Desactivando la recolección de queries en el plan gratuito, dejas espacio para guardar eventos importantes (excepciones, peticiones, jobs).Otras configuraciones de filtrado
Según sea necesario, puedes desactivar también la recolección de eventos de caché o de correo.Resumen de configuración recomendada para el plan gratuito
Funcionalidades principales
Monitorización de peticiones
Recoge por cada petición HTTP el tiempo de respuesta, el código de estado y la información de ruta. Puedes identificar endpoints anormalmente lentos y descubrir cuellos de botella de rendimiento.Seguimiento de excepciones
Captura en tiempo real las excepciones no gestionadas que se produzcan en producción. Se registran automáticamente la traza y snippets del código fuente, lo que facilita la investigación de la causa.Recolección de logs
Se integra con el sistema de logging de Laravel (Log::error(), etc.) y envía logs estructurados a Nightwatch.
Monitorización de jobs y tareas programadas
Sigue el historial de ejecución, el estado de éxito o fallo y el tiempo de ejecución de los jobs de cola y las tareas programadas. Permite identificar rápidamente problemas en el procesamiento por lotes.Seguimiento de despliegues
Relaciona los cambios de cada release con los problemas. Permite investigar visualmente cosas como “desde este despliegue han aumentado las excepciones”.Alertas y notificaciones
Usando la integración con Slack o webhooks puedes notificar al instante subidas repentinas de excepciones o degradaciones de rendimiento.Cuándo usar Telescope y cuándo Nightwatch
- Desarrollo local → Telescope
- Quiero un dashboard agregado de producción → Pulse
- Quiero trazas detalladas y alertas en producción → Nightwatch
Conclusión
Laravel Nightwatch es una potente herramienta SaaS que mejora enormemente la visibilidad de las aplicaciones Laravel en producción. Al implantarla, ten en cuenta lo siguiente.- Hay que mantener el proceso agente ejecutándose siempre
- En el plan gratuito son prácticamente imprescindibles las configuraciones
NIGHTWATCH_REQUEST_SAMPLE_RATE=0.1yNIGHTWATCH_IGNORE_QUERIES=true - Telescope (desarrollo), Pulse (agregación) y Nightwatch (monitorización) tienen roles distintos y pueden usarse conjuntamente
Técnicas prácticas de Laravel Telescope
Para depurar en desarrollo local, usa Telescope.