Ir al contenido

Configuración

El bundle se configura bajo un único árbol monitor, por convención en config/packages/monitor.yaml. Cada valor corresponde directamente a los tipos del núcleo monitor-php que el bundle conecta por usted.

Referencia completa

yaml
# config/packages/monitor.yaml
monitor:
    enabled: true
    url: '%env(MONITOR_URL)%'
    key: '%env(MONITOR_KEY)%'
    timeout: 3
    release: '%env(default::MONITOR_RELEASE)%'
    trace_limit: 0    # 0 = traza completa (por defecto); un valor positivo recorta
    code_snippets: true    # líneas de código alrededor de los frames de la aplicación; false envía solo archivo y línea
    environments: []
    scrub: ['password', 'password_confirmation', 'passphrase', 'token', 'signature', 'secret', 'authorization', 'cookie', 'referer', 'referrer', 'api_key']
    redact: ['email', 'iban', 'nir', 'card', 'phone']
    redact_custom: {}   # sus propias formas, con el formato etiqueta: patrón PCRE
    logs:
        enabled: false
        level: warning
        max_batch: 200

Opciones

ClaveTipoPor defectoDescripción
enabledbooltrueInterruptor principal. Los servicios se definen siempre, y false actúa en tiempo de ejecución: no se captura nada y no se envía nada. Esa definición sistemática es lo que permite que config/packages/dev/monitor.yaml ponga enabled: false sin que un monolog.yaml que referencia monitor.log_handler rompa la compilación.
urlstringnullURL base de su servidor Quiet Guard. Las rutas de los endpoints se añaden a ella; la barra final se elimina. Vacía o ausente equivale al servicio alojado https://quietguard.dev: una aplicación que lo use solo tiene que aportar la clave.
keystringnullEl token de API por proyecto, enviado como Authorization: Bearer <key>.
timeoutint3Tiempo de espera del transporte, por petición, en segundos.
releasestringnullIdentificador de release opcional (por ejemplo un SHA de commit) adjuntado al contexto de las excepciones y de los logs.
trace_limitint00 (el valor por defecto) envía la pila de llamadas completa con cada excepción; un valor positivo recorta la carga útil a ese número de frames. El punto de lanzamiento, al principio de la pila desde la versión 0.3, cuenta como un frame.
code_snippetsbooltrueEnvía, con cada frame de la aplicación, las cinco líneas de código a cada lado de la suya, leídas en el archivo que se ejecutó. Nunca para una dependencia; una línea que nombra una clave de scrub y le da un valor se enmascara entera. false envía solo el archivo y la línea.
environmentslista de string[]Reportar únicamente desde estos entornos. Una lista vacía significa "todos los entornos". Se compara con kernel.environment.
scrublista de stringver más abajoClaves de contexto cuyos valores se enmascaran antes del envío (recursivo, sin distinción de mayúsculas y minúsculas; a partir de la versión 0.3.1, un guion cuenta como un guion bajo).
redactlista de stringemail, iban, nir, card, phoneFormas de valor enmascaradas estén donde estén, incluidos el texto de un mensaje y los segmentos de URL. Una lista vacía lo desactiva.
redact_custommapa de string{}Sus propias formas, con el formato etiqueta: patrón PCRE. Una etiqueta customer_ref enmascara como [redacted:customer_ref].
logs.enabledboolfalseActiva la transmisión de logs. El servicio handler siempre está registrado mientras el bundle está activado; con false, descarta todos los registros. Todavía debe adjuntarlo a Monolog, vea Uso.
logs.levelstringwarningNivel mínimo capturado por el handler (un nombre de nivel de Monolog).
logs.max_batchint200Vacía el búfer de logs hacia el servidor en cuanto alcanza este número de registros.

Claves de enmascaramiento por defecto

Cuando usted no define scrub, el bundle utiliza:

password, password_confirmation, passphrase, token, signature, secret, authorization, cookie, referer,
referrer, api_key

Definir scrub reemplaza esta lista: recuerde volver a incluir los valores por defecto que desee conservar. A partir de la versión 0.3.1, el enmascaramiento alcanza también la URL reportada con cada excepción, un valor JSON escrito como cadena, y los valores que lleva el mensaje de un log cuando empieza por una URL o es JSON: vea Uso.

Enmascaramiento por la forma del valor

scrub mira el nombre de la clave. Nunca ve una dirección escrita en el texto libre de un mensaje de excepción, en un segmento de URL, o en un campo que alguien llamó reference. redact mira el valor, en su propio servidor, antes de cualquier envío, y está activo por defecto con las cinco formas.

Ese valor por defecto ya se aplicaba antes de estar declarado aquí, y por eso conviene decirlo con claridad: el bundle enmascaraba valores que no documentaba en ninguna parte, y cualquier intento de configurarlo fallaba en la compilación del contenedor con Unrecognized option. Ambas claves forman ya parte del árbol.

yaml
monitor:
    # Quitar las formas que producen falsos positivos con sus datos
    redact: ['email', 'iban', 'card']

    # O enviar los payloads tal cual
    redact: []

    # Sus propias formas
    redact_custom:
        customer_ref: '/CUST-\d{6}/'

Las formas que llevan un dígito de control se verifican y no solo se reconocen: una referencia de pedido de dieciséis dígitos no se toma por un número de tarjeta, y cada máscara nombra lo que ocultó ([redacted:email]), de modo que el mensaje sigue siendo legible.

Variables de entorno

Nada le obliga a usar variables de entorno, pero es el patrón recomendado para mantener los secretos fuera del repositorio. Un cableado típico:

yaml
# config/packages/monitor.yaml
monitor:
    url: '%env(MONITOR_URL)%'
    key: '%env(MONITOR_KEY)%'
    release: '%env(default::MONITOR_RELEASE)%'
    environments: ['prod']
dotenv
# .env.local
MONITOR_URL=https://monitor.example.com
MONITOR_KEY=su-token-de-proyecto
MONITOR_RELEASE=

La forma %env(default::MONITOR_RELEASE)% recurre a un valor vacío cuando la variable no está definida, y release queda por tanto simplemente vacío.

Restringir los entornos

Por defecto (environments: []), el bundle reporta desde todos los entornos, incluido dev. Para reportar únicamente desde producción:

yaml
monitor:
    environments: ['prod']

Tanto el event subscriber de excepciones como el handler de logs de Monolog comparan esta lista con kernel.environment antes de cualquier envío: en cualquier otro entorno, nada sale de su aplicación, ni excepciones ni logs.

Correspondencia configuración / servicios

ConfiguraciónServicio construido
url, key, timeout, release, environments, trace_limit, code_snippets, redact, redact_custommonitor.config (Config)
scrubmonitor.scrubber (Scrubber)
trace_limit, release, code_snippetsmonitor.payload_builder (ExceptionPayloadBuilder)
enabledmonitor.exception_subscriber, que recibe el interruptor y lo aplica en tiempo de ejecución
—monitor.http_client (CurlHttpClient), monitor.reporter (Reporter), que toma el logger de la aplicación cuando existe
logs.*monitor.log_handler (MonitorHandler), siempre registrado mientras el bundle está activado; con logs.enabled: false descarta todos los registros, de modo que un monolog.yaml que lo referencie sigue compilando

Consulte Uso para conocer el comportamiento de estos servicios en tiempo de ejecución.

Está leyendo la documentación Symfony Bundle v1.0.