Passer au contenu principal

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.
OutilRôleHébergementEnvironnement cible
TelescopeDebug en développement, exploration des requêtesAuto-hébergé (dans l’app Laravel)Développement local
PulseAgrégation et affichage des métriques de perfAuto-hébergé (dans l’app Laravel)Production / staging
NightwatchSupervision temps réel en productionSaaS hébergé par LaravelProduction
Nightwatch collecte quasiment les mêmes informations que Telescope, mais un processus agent résident envoie les données au cloud. Vous pouvez ainsi consulter l’historique même si le serveur est indisponible et centraliser la supervision de plusieurs serveurs et applications.

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

composer require laravel/nightwatch
Contrairement à Telescope, le flag --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.
NIGHTWATCH_TOKEN=your-api-key

4. Démarrage de l’agent

php artisan nightwatch:agent
L’agent doit tourner en tâche de fond en permanence. Des guides dédiés sont disponibles pour Laravel Cloud, Laravel Forge et Laravel Vapor. Sur Forge, l’intégration officielle configure automatiquement l’agent. Vérification de l’état de l’agent :
php artisan nightwatch:status

5. Désactivation en environnement de test

Il est recommandé de désactiver Nightwatch pendant l’exécution des tests.
# .env
NIGHTWATCH_ENABLED=false
Vous pouvez aussi le configurer dans phpunit.xml.
<php>
    <env name="APP_ENV" value="testing"/>
    <env name="NIGHTWATCH_ENABLED" value="false"/>
</php>

Configuration pour utiliser efficacement le plan gratuit

Le plan gratuit a une limite mensuelle d’événements. Avec les réglages par défaut (échantillonnage 100 % et collecte de toutes les données), une application au trafic soutenu atteint rapidement la limite. Appliquez impérativement la configuration ci-dessous.

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 %).
# .env
NIGHTWATCH_REQUEST_SAMPLE_RATE=0.1
Exemple qui continue de collecter toutes les exceptions et commandes :
NIGHTWATCH_REQUEST_SAMPLE_RATE=0.1    # 10 % des requêtes
NIGHTWATCH_EXCEPTION_SAMPLE_RATE=1.0  # Toutes les exceptions (défaut)
NIGHTWATCH_COMMAND_SAMPLE_RATE=1.0    # Toutes les commandes (défaut)

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).
# .env
NIGHTWATCH_IGNORE_QUERIES=true

Autres réglages de filtrage

Vous pouvez également désactiver les événements de cache, mails, etc.
NIGHTWATCH_IGNORE_CACHE_EVENTS=true
NIGHTWATCH_IGNORE_MAIL=true
NIGHTWATCH_IGNORE_NOTIFICATIONS=true
NIGHTWATCH_IGNORE_OUTGOING_REQUESTS=true

Récapitulatif des réglages recommandés pour le plan gratuit

# .env (réglages recommandés pour le plan gratuit)
NIGHTWATCH_TOKEN=your-api-key
NIGHTWATCH_REQUEST_SAMPLE_RATE=0.1
NIGHTWATCH_IGNORE_QUERIES=true
Ces trois lignes suffisent à obtenir une supervision utilisable de votre application même sur 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 du code source des exceptions (activé par défaut)
NIGHTWATCH_CAPTURE_EXCEPTION_SOURCE_CODE=true

Collecte des logs

Intègre le système de logs Laravel (Log::error(), etc.) et envoie des logs structurés à Nightwatch.
# Niveau minimum des logs collectés (défaut : debug)
NIGHTWATCH_LOG_LEVEL=error

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
Les trois ne sont pas exclusifs : Pulse et Nightwatch peuvent parfaitement se combiner.

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.1 et NIGHTWATCH_IGNORE_QUERIES=true sont pratiquement indispensables
  • Telescope (dev), Pulse (agrégation) et Nightwatch (supervision) ont des rôles différents et peuvent coexister
Pour les détails de configuration, consultez la documentation officielle et la référence des variables d’environnement.

Techniques pratiques de Laravel Telescope

Pour le debug en développement local, utilisez Telescope.
Dernière modification le 13 juillet 2026