Was ist Laravel Nightwatch?
Laravel Nightwatch ist eine gehostete SaaS-Plattform, die den produktiven Betrieb von Laravel-Anwendungen kontinuierlich überwacht. Sie erfasst und visualisiert Telemetriedaten der gesamten Anwendung in Echtzeit – HTTP-Requests, SQL-Queries, Exceptions, Queue-Jobs, Logs, Scheduled Tasks u. a.Nightwatch ist ein kostenpflichtiger Dienst (monatliche Abrechnung). Ein Free-Tarif steht zur Verfügung, jedoch mit einer Obergrenze für die erfassbaren Events. Für den praxistauglichen Einsatz im Free-Tarif sind die weiter unten beschriebenen Sampling- und Filter-Einstellungen zwingend nötig.
Unterschiede zu Telescope und Pulse
Nightwatch verfolgt einen anderen Zweck als die bestehenden Monitoring- und Debug-Tools im Laravel-Ökosystem. Hier ein Überblick über die jeweiligen Einsatzbereiche.
Es werden nahezu dieselben Informationen wie bei Telescope gesammelt. Nightwatch lässt jedoch einen Agenten-Prozess resident laufen, der die Daten in die Cloud sendet. Dadurch bleiben historische Daten auch bei Serverausfällen einsehbar, und mehrere Server und Anwendungen lassen sich zentral verwalten.
Architektur
Nightwatch schaltet einen Agent-Prozess zwischen die Laravel-Anwendung und die Nightwatch-Cloud. Der Agent lauscht lokal (127.0.0.1:2407), empfängt Events aus der Laravel-Anwendung und leitet sie in die Cloud weiter. Der Agent-Prozess muss deshalb dauerhaft laufen.
Installation und Erst-Konfiguration
1. Account und Anwendung anlegen
Erstellen Sie unter nightwatch.laravel.com einen Account und registrieren Sie Organisation und Anwendung. Nach der Registrierung der Anwendung wird ein Umgebungs-Token ausgegeben.2. Paket installieren
--dev nicht erforderlich. Nightwatch ist auf den Einsatz in der Produktion ausgelegt.
3. Token konfigurieren
Fügen Sie den Token in der.env-Datei hinzu.
4. Agenten starten
5. Deaktivierung in der Testumgebung
Für Test-Läufe empfiehlt es sich, Nightwatch zu deaktivieren.phpunit.xml:
Konfiguration für den praxistauglichen Einsatz im Free-Tarif
Sampling-Rate reduzieren
NIGHTWATCH_REQUEST_SAMPLE_RATE ist standardmäßig 1.0 (alle Requests werden erfasst). Im Free-Tarif wird eine Reduktion auf etwa 0.1 (10 %) empfohlen.
Query-Erfassung deaktivieren
Datenbank-Queries machen oft einen großen Anteil der Events aus. Wenn Sie die Query-Erfassung im Free-Tarif deaktivieren, bleibt Kapazität für wichtige Events (Exceptions, Requests, Jobs) frei.Weitere Filter-Einstellungen
Bei Bedarf lassen sich auch Cache-Events und Mails deaktivieren.Empfohlene Konfiguration für den Free-Tarif
Wichtige Funktionen
Request-Monitoring
Pro HTTP-Request werden Response-Zeit, Statuscode, Route-Informationen u. a. erfasst. So identifizieren Sie ungewöhnlich langsame Endpunkte und finden Performance-Engpässe.Exception-Tracking
Unhandled Exceptions in der Produktion werden in Echtzeit erfasst. Stacktrace und Codeausschnitte werden automatisch protokolliert; die Ursachenanalyse wird deutlich einfacher.Log-Erfassung
Integration mit dem Logging-System von Laravel (z. B.Log::error()), strukturierte Logs werden an Nightwatch gesendet.
Monitoring von Jobs und Scheduled Tasks
Ausführungsverlauf, Erfolg/Fehlschlag und Laufzeit von Queue-Jobs und Scheduled Tasks werden nachverfolgt. Probleme in Batch-Verarbeitung lassen sich schnell aufspüren.Deployment-Tracking
Verknüpfung von Änderungen pro Release mit auftretenden Problemen. Analysen wie „Seit diesem Deployment nehmen die Exceptions zu” werden visuell möglich.Alerts und Benachrichtigungen
Per Slack-Integration und Webhooks lassen sich Spitzenlasten bei Exceptions oder Performance-Verschlechterungen sofort melden.Wann Telescope, wann Nightwatch?
- Lokale Entwicklung → Telescope
- Aggregations-Dashboard für die Produktion gewünscht → Pulse
- Detaillierte Traces und Alerts in der Produktion gewünscht → Nightwatch
Fazit
Laravel Nightwatch ist ein leistungsstarkes SaaS-Tool, das die Sichtbarkeit produktiver Laravel-Anwendungen erheblich steigert. Bei der Einführung sollten Sie folgende Punkte beachten:- Der Agent-Prozess muss dauerhaft laufen
- Im Free-Tarif sind
NIGHTWATCH_REQUEST_SAMPLE_RATE=0.1undNIGHTWATCH_IGNORE_QUERIES=truepraktisch unverzichtbar - Telescope (Entwicklung), Pulse (Aggregation) und Nightwatch (Monitoring) erfüllen unterschiedliche Rollen und lassen sich kombinieren
Praxis-Techniken zu Laravel Telescope
Für Debugging in der lokalen Entwicklung setzen Sie Telescope ein.