Cos’è Laravel Nightwatch
Laravel Nightwatch è una piattaforma SaaS ospitata che monitora continuamente l’ambiente di produzione delle applicazioni Laravel. Raccoglie e visualizza in tempo reale i dati di telemetria dell’intera applicazione: richieste HTTP, query SQL, eccezioni, job in coda, log, task pianificati e altro.Nightwatch è un servizio a pagamento (fatturazione mensile). Puoi usare anche il piano gratuito, ma il numero di eventi raccolti ha un tetto. Per usarlo in modo pratico con il piano gratuito, è indispensabile impostare sampling e filtri come descritto di seguito.
Differenze rispetto a Telescope e Pulse
Nightwatch ha obiettivi diversi rispetto agli strumenti di monitoraggio e debug esistenti nell’ecosistema Laravel. Riepiloghiamo l’uso di ciascuno.| Strumento | Uso | Hosting | Ambiente di destinazione |
|---|---|---|---|
| Telescope | Debug in sviluppo, ispezione query | Self-hosted (nell’app Laravel) | Sviluppo locale |
| Pulse | Aggregazione e visualizzazione di metriche di performance | Self-hosted (nell’app Laravel) | Produzione, staging |
| Nightwatch | Monitoraggio in tempo reale dell’app di produzione | SaaS ospitato da Laravel | Ambiente di produzione |
Architettura
Nightwatch adotta una struttura in cui un processo agente sta tra l’app Laravel e il cloud Nightwatch. L’agente resta in ascolto in locale (127.0.0.1:2407), riceve gli eventi dell’app Laravel e li inoltra al cloud. Per questo il processo agente deve essere sempre attivo.
Installazione e configurazione iniziale
1. Creazione di account e applicazione
Su nightwatch.laravel.com crea un account e registra organizzazione e applicazione. Dopo la registrazione dell’applicazione viene emesso un token d’ambiente.2. Installazione del pacchetto
--dev non è necessario. Nightwatch è pensato per l’uso in produzione.
3. Impostazione del token
Aggiungi il token al file.env.
4. Avvio dell’agente
5. Disattivazione in ambiente di test
Si consiglia di disabilitare Nightwatch durante l’esecuzione dei test.phpunit.xml.
Configurazione per un uso pratico con il piano gratuito
Abbassa il sampling rate
NIGHTWATCH_REQUEST_SAMPLE_RATE ha valore predefinito 1.0 (tutte le richieste). Nel piano gratuito si consiglia di limitarlo a circa 0.1 (10%).
Disabilita la raccolta delle query
Le query al database rappresentano una quota importante degli eventi. Nel piano gratuito, disabilitare la raccolta delle query lascia spazio per eventi più importanti (eccezioni, richieste, job).Altre impostazioni di filtro
Se necessario, puoi disabilitare anche la raccolta di eventi cache e di email.Riepilogo della configurazione consigliata per il piano gratuito
Funzionalità principali
Monitoraggio delle richieste
Raccoglie, per ogni richiesta HTTP, tempo di risposta, status code, informazioni di rotta e altro. Puoi individuare endpoint anomalmente lenti e trovare colli di bottiglia di performance.Tracciamento delle eccezioni
Cattura in tempo reale le eccezioni non gestite in produzione. Stack trace e snippet di codice sorgente vengono registrati automaticamente, semplificando l’indagine.Raccolta dei log
Si integra con il sistema di log di Laravel (Log::error(), ecc.) e invia log strutturati a Nightwatch.
Monitoraggio di job e task pianificati
Tiene traccia della cronologia di esecuzione, dello stato di successo/fallimento e del tempo di esecuzione di job in coda e task pianificati. Puoi identificare rapidamente i problemi delle elaborazioni batch.Tracciamento dei deployment
Collega ogni rilascio ai relativi cambiamenti e problemi. Consente indagini visive tipo “dopo questo deploy sono aumentate le eccezioni”.Alert e notifiche
Con l’integrazione Slack o via webhook puoi ricevere notifiche immediate su picchi di eccezioni o degradi di performance.Come scegliere tra Telescope e Nightwatch
- Sviluppo locale → Telescope
- Vuoi una dashboard di aggregazione della produzione → Pulse
- Vuoi trace dettagliati e alert per la produzione → Nightwatch
Conclusioni
Laravel Nightwatch è un potente strumento SaaS che aumenta di molto la visibilità sulle app Laravel in produzione. Al momento dell’introduzione, tieni a mente questi punti.- È necessario mantenere sempre attivo il processo agente
- Per il piano gratuito è di fatto obbligatorio impostare
NIGHTWATCH_REQUEST_SAMPLE_RATE=0.1eNIGHTWATCH_IGNORE_QUERIES=true - Telescope (sviluppo), Pulse (aggregazione) e Nightwatch (monitoraggio) hanno ruoli diversi e possono coesistere
Tecniche pratiche di Laravel Telescope
Per il debug in sviluppo locale usa Telescope.