Qu’est-ce que Laravel Nightwatch ?
Laravel Nightwatch est une plateforme SaaS hébergée dédiée à la supervision continue des applications Laravel en production. Elle collecte et visualise en temps réel les données de télémétrie de toute votre application : requêtes HTTP, requêtes SQL, exceptions, jobs de queue, logs, tâches planifiées, etc.Nightwatch est un service payant (abonnement mensuel). Un plan gratuit est disponible, mais le nombre d’événements collectés y est plafonné. Pour l’utiliser efficacement avec le plan gratuit, la configuration de l’échantillonnage et du filtrage décrite ci-dessous est indispensable.
Différences avec Telescope et Pulse
Nightwatch a un objectif différent des autres outils de supervision et de debug existants dans l’écosystème Laravel. Voici un récapitulatif.| Outil | Rôle | Hébergement | Environnement cible |
|---|---|---|---|
| Telescope | Debug en développement, exploration des requêtes | Auto-hébergé (dans l’app Laravel) | Développement local |
| Pulse | Agrégation et affichage des métriques de perf | Auto-hébergé (dans l’app Laravel) | Production / staging |
| Nightwatch | Supervision temps réel en production | SaaS hébergé par Laravel | Production |
Architecture
Nightwatch place un processus agent entre l’application Laravel et le cloud Nightwatch. L’agent écoute en local (127.0.0.1:2407), reçoit les événements de l’application Laravel et les transfère au cloud. Le processus agent doit donc rester en permanence en cours d’exécution.
Installation et configuration initiale
1. Créer un compte et une application
Créez un compte sur nightwatch.laravel.com, enregistrez une organisation et une application. Un token d’environnement est émis après l’enregistrement de l’application.2. Installation du package
--dev n’est pas nécessaire. Nightwatch est prévu pour un usage en production.
3. Configuration du token
Ajoutez le token dans votre fichier.env.
4. Démarrage de l’agent
5. Désactivation en environnement de test
Il est recommandé de désactiver Nightwatch pendant l’exécution des tests.phpunit.xml.
Configuration pour utiliser efficacement le plan gratuit
Réduire le taux d’échantillonnage
NIGHTWATCH_REQUEST_SAMPLE_RATE vaut 1.0 par défaut (toutes les requêtes). Pour le plan gratuit, il est recommandé de le ramener autour de 0.1 (10 %).
Désactiver la collecte des requêtes
Les requêtes de base de données représentent une part importante des événements. En les désactivant sur le plan gratuit, vous libérez de l’espace pour les événements importants (exceptions, requêtes, jobs).Autres réglages de filtrage
Vous pouvez également désactiver les événements de cache, mails, etc.Récapitulatif des réglages recommandés pour le plan gratuit
Fonctionnalités principales
Supervision des requêtes
Pour chaque requête HTTP, collecte le temps de réponse, le code de statut, les informations de route, etc. Identifiez les endpoints anormalement lents et découvrez les goulets d’étranglement.Suivi des exceptions
Capture en temps réel les exceptions non gérées survenues en production. La stack trace et un extrait du code source sont enregistrés automatiquement, facilitant l’enquête.Collecte des logs
Intègre le système de logs Laravel (Log::error(), etc.) et envoie des logs structurés à Nightwatch.
Supervision des jobs et tâches planifiées
Suivi de l’historique d’exécution, du succès/échec et du temps d’exécution des jobs de queue et des tâches planifiées. Détectez rapidement les problèmes des traitements par lot.Suivi des déploiements
Reliez les problèmes aux changements de chaque release. Vous pouvez visuellement analyser « les exceptions ont augmenté après ce déploiement ».Alertes et notifications
Utilisez l’intégration Slack ou des webhooks pour être notifié immédiatement d’une hausse d’exceptions ou d’une dégradation de performance.Choisir entre Telescope et Nightwatch
- Développement local → Telescope
- Dashboard d’agrégation pour la production → Pulse
- Traces détaillées et alertes en production → Nightwatch
Conclusion
Laravel Nightwatch est un outil SaaS puissant qui améliore fortement la visibilité sur une application Laravel en production. Retenez les points suivants pour la mise en place.- L’agent doit tourner en permanence
- Sur le plan gratuit,
NIGHTWATCH_REQUEST_SAMPLE_RATE=0.1etNIGHTWATCH_IGNORE_QUERIES=truesont pratiquement indispensables - Telescope (dev), Pulse (agrégation) et Nightwatch (supervision) ont des rôles différents et peuvent coexister
Techniques pratiques de Laravel Telescope
Pour le debug en développement local, utilisez Telescope.