Configuration
Le SDK se configure entièrement via des variables d'environnement, fusionnées dans l'espace de configuration monitor. Publier config/monitor.php est optionnel (voir Installation).
Configuration minimale
Ajoutez ce qui suit au .env de votre application :
MONITOR_URLest l'URL de base de votre serveur Quiet Guard (sans chemin final: le SDK ajoute lui-même/api/v1/...).MONITOR_KEYest la clé d'API par projet générée dans le dashboard Quiet Guard. Elle n'est affichée qu'une seule fois, à la création du projet. Consultez la documentation du serveur pour savoir comment créer les projets et les clés.
Lorsque MONITOR_URL ou MONITOR_KEY est vide, le SDK reste totalement silencieux, il n'envoie jamais rien et ne lève jamais d'erreur.
Toutes les options
| Variable d'env. | Clé de config | Défaut | Description |
|---|---|---|---|
MONITOR_ENABLED | monitor.enabled | true | Interrupteur principal. À false, aucune donnée ne quitte l'application. |
MONITOR_URL | monitor.url | null | URL de base du serveur Quiet Guard. |
MONITOR_KEY | monitor.key | null | Clé d'API par projet (envoyée comme token Bearer). |
MONITOR_ENVIRONMENTS | monitor.environments | production,staging | Liste blanche, séparée par des virgules, des environnements depuis lesquels reporter. Vide = reporter depuis tous les environnements. |
| — | monitor.ignore_paths | [] | Chemins de requête dont les exceptions ne sont jamais reportées, dans la syntaxe Illuminate\Http\Request::is(). |
MONITOR_RELEASE | monitor.release | null | Identifiant de la version déployée (SHA git ou tag) attaché aux événements. |
MONITOR_TIMEOUT | monitor.timeout | 3 | Timeout HTTP en secondes pour les appels d'ingestion. |
MONITOR_QUEUE | monitor.queue | false | false envoie de façon synchrone, true place les rapports dans la connexion de file par défaut de l'application, un nom de connexion les place dans cette connexion. |
MONITOR_TRACE_LIMIT | monitor.trace_limit | 0 | Nombre maximal de frames de pile envoyés par exception. 0 (défaut) envoie la trace complète ; fixez un nombre de frames uniquement pour alléger les payloads. |
MONITOR_LOGS_ENABLED | monitor.logs.enabled | false | Transmission opt-in des logs applicatifs. Voir Logs applicatifs. |
MONITOR_LOG_LEVEL | monitor.logs.level | warning | Niveau PSR-3 minimum à transmettre. |
MONITOR_LOGS_MAX_BATCH | monitor.logs.max_batch | 200 | Nombre maximal d'entrées de log bufferisées avant un envoi anticipé. |
| — | monitor.scrub | voir ci-dessous | Clés de requête/contexte dont les valeurs sont masquées avant tout envoi. |
| — | monitor.redact | email, iban, nir, card, phone | Formes de valeurs masquées où qu'elles se trouvent, y compris dans le texte d'un message. Voir Remontée d'exceptions. |
| — | monitor.redact_custom | [] | Vos propres formes, sous la forme libellé => motif PCRE. |
Environnements
Par défaut, le SDK ne reporte que depuis production et staging. Autrement dit, en local rien n'est envoyé tant que vous ne modifiez pas la liste :
Le contrôle s'appuie sur app()->environment() de Laravel, c'est-à-dire la valeur de votre APP_ENV.
Release
Renseignez MONITOR_RELEASE au moment du déploiement pour que le serveur puisse rattacher les incidents à un déploiement précis et les corréler aux commits :
Un SHA hexadécimal permet au serveur de relier la release d'un incident au commit synchronisé correspondant.
Envoi asynchrone
Par défaut, les rapports sont envoyés de façon synchrone pendant la requête, dans la limite de MONITOR_TIMEOUT. Pour sortir ce travail du cycle de vie de la requête, placez-le dans une file :
Les rapports sont alors dispatchés comme jobs en file (SendExceptionToMonitor, SendLogsToMonitor) ; un worker de file doit donc tourner.
Chemins de requête ignorés
Par défaut, toute exception est reportée, où qu'elle survienne. Renseignez ignore_paths avec une liste de chemins de requête dont les exceptions ne sont jamais reportées, dans la syntaxe acceptée par le Illuminate\Http\Request::is() de Laravel :
Vide par défaut. Une commande console porte une requête factice dont le chemin est /, qui ne correspond à aucun de ces motifs : ignore_paths ne fait donc jamais taire un job en file ni une tâche planifiée, seulement les requêtes HTTP. Cela ne concerne que les exceptions, pas les logs.
Cette option existe pour une application qui héberge son propre endpoint de supervision : les exceptions levées en le servant ne doivent pas lui être reportées en retour.
Clés masquées
La liste monitor.scrub par défaut masque toute clé de requête/contexte dont le nom contient l'un de ces termes (insensible à la casse, récursif) :
referer et referrer portent l'adresse de la page d'où vient le visiteur, et une URL est l'endroit où les applications placent leurs secrets à usage unique : un lien de désinscription, un téléchargement signé, une réinitialisation de mot de passe, un lien de partage. Le masquage se fait par le nom, parce que cette valeur n'a aucune forme qu'un masqueur de valeurs saurait reconnaître.
Les six derniers sont les en-têtes qui portent l'adresse IP du visiteur. Derrière un reverse proxy, ce qui est la topologie de production ordinaire, l'un d'eux contient l'adresse de la personne qui a déclenché l'erreur. C'est une donnée personnelle, et elle ne vous concerne pas vous mais vos visiteurs, qui n'ont rien choisi. Elle est donc masquée par défaut. Si vous disposez d'une base légale pour la conserver, retirez la ligne correspondante : la décision vous appartient, en votre qualité de responsable de traitement.
Pour l'étendre, publiez la config et modifiez le tableau scrub. Les valeurs masquées sont remplacées par [scrubbed]. Voir Remontée d'exceptions pour les détails.
Vous lisez la documentation Laravel SDK v1.0.