Wat is Laravel Nightwatch?
Laravel Nightwatch is een gehost SaaS-platform voor het continu monitoren van de productieomgeving van je Laravel-applicatie. Het verzamelt en visualiseert in realtime telemetriegegevens van je hele applicatie: HTTP-requests, SQL-query’s, excepties, queue jobs, logs, geplande taken en meer.Nightwatch is een betaalde dienst (maandelijks abonnement). Er is ook een gratis plan, maar dat heeft een limiet op het aantal events dat je kunt verzamelen. Om het gratis plan praktisch te gebruiken zijn de sampling- en filterinstellingen verderop in dit artikel onmisbaar.
Verschillen met Telescope en Pulse
Nightwatch heeft een ander doel dan de bestaande monitoring- en debugtools in het Laravel-ecosysteem. Laten we de toepassingen op een rij zetten.
Nightwatch verzamelt vrijwel dezelfde informatie als Telescope, maar laat een agentproces draaien dat de data naar de cloud stuurt. Daardoor kun je ook historische data bekijken als je server plat ligt, en kun je meerdere servers en meerdere applicaties centraal beheren.
Architectuur
Nightwatch plaatst een agentproces tussen je Laravel-app en de Nightwatch-cloud. De agent luistert lokaal (127.0.0.1:2407), ontvangt events van je Laravel-app en stuurt ze door naar de cloud. Daarom moet het agentproces continu draaien.
Installatie en initiële configuratie
1. Account en applicatie aanmaken
Maak op nightwatch.laravel.com een account aan en registreer een organisatie en applicatie. Na het registreren van de applicatie krijg je een omgevingstoken.2. Het pakket installeren
--dev niet nodig. Nightwatch is bedoeld voor gebruik in productie.
3. Het token instellen
Voeg het token toe aan je.env-bestand.
4. De agent starten
5. Uitschakelen in de testomgeving
We raden aan Nightwatch uit te schakelen tijdens het draaien van tests.phpunit.xml.
Configuratie om het gratis plan praktisch te gebruiken
Het samplingpercentage verlagen
NIGHTWATCH_REQUEST_SAMPLE_RATE staat standaard op 1.0 (alle requests verzamelen). Bij het gratis plan raden we aan dit terug te brengen tot ongeveer 0.1 (10%).
Query-verzameling uitschakelen
Databasequery’s maken een groot deel uit van het aantal events. Door in het gratis plan de query-verzameling uit te schakelen, houd je ruimte over voor het opslaan van belangrijke events (excepties, requests, jobs).Overige filterinstellingen
Indien nodig kun je ook het verzamelen van cache-events en mails uitschakelen.Aanbevolen configuratie voor het gratis plan samengevat
Belangrijkste functies
Requestmonitoring
Per HTTP-request worden responstijden, statuscodes, route-informatie en meer verzameld. Zo kun je abnormaal trage endpoints identificeren en performance-bottlenecks opsporen.Exceptietracking
Onafgehandelde excepties in productie worden in realtime vastgelegd. Stack traces en broncode-snippets worden automatisch geregistreerd, wat het onderzoeken van de oorzaak vereenvoudigt.Logverzameling
Integreert met het logsysteem van Laravel (zoalsLog::error()) en stuurt gestructureerde logs naar Nightwatch.
Monitoring van jobs en geplande taken
Volgt de uitvoeringsgeschiedenis, de succes-/faalstatus en de uitvoeringstijd van queue jobs en geplande taken. Zo spoor je problemen in batchverwerking snel op.Deploymenttracking
Koppelt wijzigingen en problemen per release aan elkaar. Onderzoek zoals “na deze deploy zijn de excepties toegenomen” kun je visueel uitvoeren.Alerts en notificaties
Via Slack-integratie of webhooks kun je direct meldingen krijgen over pieken in excepties of afnemende performance.Wanneer gebruik je Telescope of Nightwatch?
- Lokale ontwikkeling → Telescope
- Een dashboard met geaggregeerde productiedata → Pulse
- Gedetailleerde traces en alerts voor productie → Nightwatch
Samenvatting
Laravel Nightwatch is een krachtige SaaS-tool die de zichtbaarheid van je Laravel-applicatie in productie sterk verbetert. Houd bij de invoering rekening met de volgende punten.- Het agentproces moet continu draaien
- Bij het gratis plan zijn de instellingen
NIGHTWATCH_REQUEST_SAMPLE_RATE=0.1enNIGHTWATCH_IGNORE_QUERIES=truepraktisch gezien onmisbaar - Telescope (ontwikkeling), Pulse (aggregatie) en Nightwatch (monitoring) hebben verschillende rollen en zijn te combineren
Laravel Telescope in de praktijk
Voor het debuggen tijdens lokale ontwikkeling gebruik je Telescope.