Configuración
El SDK se configura por completo mediante variables de entorno, fusionadas en el espacio de configuración monitor. Publicar config/monitor.php es opcional (consulte Instalación).
Configuración mínima
Añada lo siguiente al .env de su aplicación:
MONITOR_URLes la URL base de su servidor Quiet Guard (sin ruta final: el propio SDK añade/api/v1/...).MONITOR_KEYes la clave de API por proyecto generada en el dashboard de Quiet Guard. Se muestra una sola vez, al crear el proyecto. Consulte la documentación del servidor para saber cómo crear los proyectos y las claves.
Cuando MONITOR_URL o MONITOR_KEY está vacío, el SDK permanece totalmente silencioso: nunca envía nada y nunca lanza errores.
Todas las opciones
| Variable de entorno | Clave de config | Por defecto | Descripción |
|---|---|---|---|
MONITOR_ENABLED | monitor.enabled | true | Interruptor principal. En false, ningún dato sale de la aplicación. |
MONITOR_URL | monitor.url | null | URL base del servidor Quiet Guard. |
MONITOR_KEY | monitor.key | null | Clave de API por proyecto (enviada como token Bearer). |
MONITOR_ENVIRONMENTS | monitor.environments | production,staging | Lista blanca, separada por comas, de los entornos desde los que se reporta. Vacía = reportar desde todos los entornos. |
| — | monitor.ignore_paths | [] | Rutas de petición cuyas excepciones nunca se reportan, en la sintaxis de Illuminate\Http\Request::is(). |
MONITOR_RELEASE | monitor.release | null | Identificador de la versión desplegada (SHA de git o tag) adjuntado a los eventos. |
MONITOR_TIMEOUT | monitor.timeout | 3 | Timeout HTTP en segundos para las llamadas de ingesta. |
MONITOR_QUEUE | monitor.queue | false | false envía de forma síncrona, true pone los reportes en la conexión de cola por defecto de la aplicación, un nombre de conexión los pone en esa conexión. |
MONITOR_TRACE_LIMIT | monitor.trace_limit | 0 | Número máximo de frames de pila enviados por excepción. 0 (por defecto) envía la traza completa; fije un número de frames únicamente para aligerar los payloads. |
MONITOR_LOGS_ENABLED | monitor.logs.enabled | false | Transmisión opt-in de los logs de aplicación. Consulte Logs de aplicación. |
MONITOR_LOG_LEVEL | monitor.logs.level | warning | Nivel PSR-3 mínimo que se transmite. |
MONITOR_LOGS_MAX_BATCH | monitor.logs.max_batch | 200 | Número máximo de entradas de log en el búfer antes de un envío anticipado. |
| — | monitor.scrub | ver más abajo | Claves de petición/contexto cuyos valores se enmascaran antes de cualquier envío. |
| — | monitor.redact | email, iban, nir, card, phone | Formas de valor enmascaradas estén donde estén, incluido el texto de un mensaje. Vea Reporte de excepciones. |
| — | monitor.redact_custom | [] | Sus propias formas, con el formato etiqueta => patrón PCRE. |
Entornos
Por defecto, el SDK solo reporta desde production y staging. Dicho de otro modo, en local no se envía nada mientras no modifique la lista:
La comprobación se apoya en app()->environment() de Laravel, es decir, el valor de su APP_ENV.
Release
Defina MONITOR_RELEASE en el momento del despliegue para que el servidor pueda vincular las incidencias a un despliegue concreto y correlacionarlas con los commits:
Un SHA hexadecimal permite al servidor enlazar la release de una incidencia con el commit sincronizado correspondiente.
Envío asíncrono
Por defecto, los reportes se envían de forma síncrona durante la petición, dentro del límite de MONITOR_TIMEOUT. Para sacar ese trabajo del ciclo de vida de la petición, póngalo en una cola:
Los reportes se despachan entonces como jobs en cola (SendExceptionToMonitor, SendLogsToMonitor); por lo tanto, debe haber un worker de cola en ejecución.
Rutas de petición ignoradas
Por defecto se reporta toda excepción, dondequiera que ocurra. Defina ignore_paths con una lista de rutas de petición cuyas excepciones nunca se reportan, en la sintaxis que acepta Illuminate\Http\Request::is() de Laravel:
Vacía por defecto. Un comando de consola lleva una petición ficticia cuya ruta es /, que no coincide con ninguno de estos patrones, de modo que ignore_paths nunca silencia un job en cola ni una tarea programada, solo las peticiones HTTP. Esto afecta únicamente a las excepciones, los logs no se ven afectados.
Esta opción existe para una aplicación que aloja su propio endpoint de supervisión: las excepciones producidas al servirlo no deben reportarse de vuelta a él.
Claves enmascaradas
La lista monitor.scrub por defecto enmascara cualquier clave de petición/contexto cuyo nombre contenga uno de estos términos (sin distinción de mayúsculas y minúsculas, de forma recursiva):
referer y referrer llevan la dirección de la página de la que viene el visitante, y una URL es donde las aplicaciones colocan sus secretos de un solo uso: un enlace para darse de baja, una descarga firmada, un restablecimiento de contraseña, un enlace para compartir. Se enmascara por el nombre, porque ese valor no tiene ninguna forma que un enmascarador de valores pueda reconocer.
Las seis últimas son las cabeceras que llevan la dirección IP del visitante. Detrás de un proxy inverso, que es la topología de producción habitual, una de ellas contiene la dirección de la persona que provocó el error. Es un dato personal, y no le concierne a usted sino a sus visitantes, que no eligieron nada. Por eso se enmascara por defecto. Si dispone de una base jurídica para conservarla, elimine la línea correspondiente: la decisión es suya, en su condición de responsable del tratamiento.
Para ampliarla, publique la configuración y modifique el array scrub. Los valores enmascarados se sustituyen por [scrubbed]. Consulte Reporte de excepciones para más detalles.
Está leyendo la documentación Laravel SDK v1.0.