Sentry en Magento 2: observabilidad tecnica de la tienda con el modulo Kowal_Sentry
Que es Sentry y para que sirve realmente
Sentry suele asociarse con el seguimiento de errores, pero en la practica es una plataforma de observabilidad que une varias capas de diagnostico de aplicaciones:
- reporte de excepciones y errores de runtime,
- tracing de rendimiento y dependencias entre operaciones,
- breadcrumbs que muestran la secuencia de acciones antes de un fallo,
- Session Replay del lado del navegador,
- User Feedback del usuario final,
- monitorizacion de procesos periodicos como cron,
- release tracking y vinculacion de errores con un despliegue concreto.
En un proyecto bien implementado, Sentry no es solo un lugar donde cae un stack trace. Es una herramienta que permite responder preguntas como:
- que se rompio exactamente,
- donde ocurrio el problema: backend, frontend, checkout, cron, integracion,
- desde cuando existe el problema y con que release esta relacionado,
- si el error afecta a todos los usuarios, a una tienda concreta, a un metodo de pago o a un proceso,
- como era el contexto del request y que ocurrio justo antes del error.
Esto es especialmente importante en Magento, donde un fallo rara vez es una excepcion aislada en un solo controlador. A menudo afecta a todo el flujo: storefront, AJAX, checkout, proveedor de pagos, cron que sincroniza datos y procesamiento posterior del pedido.
Por que Sentry es especialmente util en proyectos Magento
Magento 2 es una plataforma amplia, por capas y muy integrada. Una tienda tipica funciona al mismo tiempo como:
- aplicacion backend en PHP,
- aplicacion frontend con mucha capa JavaScript,
- sistema de integracion que conecta ERP, PIM, WMS, OMS, pasarelas de pago y transportistas,
- entorno multitienda con distintos scopes y configuracion por website o store view,
- plataforma que opera procesos de venta criticos, donde un problema en checkout o cron tiene impacto directo en los ingresos.
En la practica, esto significa que un simple log de archivo no basta. Un stack trace PHP por si solo tampoco basta. Para diagnosticar hace falta un modelo de observacion mas amplio:
- excepciones de backend con contexto de negocio,
- errores JavaScript de sesiones reales de usuarios,
- tracing de requests y dependencias HTTP,
- monitorizacion de cron y CLI,
- correlacion con el release despues del despliegue,
- sanitizacion de datos para que la observabilidad no choque con la seguridad.
Ese es precisamente el espacio donde Sentry encaja bien con Magento, siempre que la integracion se haga de forma consciente y no como un simple wrapper sobre captureException().
Como se puede usar Sentry en Magento 2
1. Monitorizacion de errores del backend PHP
El escenario mas obvio es reportar excepciones PHP desde requests del storefront, admin, API, cron y CLI. En Magento, esto da acceso rapido a:
- stack trace,
- entorno y release,
- route name y full action name,
- contexto de store view,
- datos relacionados del cliente, quote, pedido o producto si la integracion los adjunta.
Esto permite no solo ver que aparecio un error, sino tambien distinguir un problema de checkout de un problema de integracion o de un error del panel de administracion.
2. Monitorizacion del frontend JavaScript
Muchos fallos criticos en Magento no aparecen en PHP, sino en el navegador:
- un error de RequireJS,
- un problema con un componente Knockout,
- XHR fallidos en checkout,
- una
Promise rejectionno manejada, - un error en un widget personalizado en la PDP o en el carrito.
Sentry Browser SDK puede registrar esto junto con breadcrumbs, requests de red, URL de la pagina, entorno y release. En la practica, ofrece una vision mucho mejor de lo que realmente ve el usuario.
3. Performance Monitoring y tracing
Sentry puede recopilar transacciones y spans, lo que permite analizar:
- duracion de requests HTTP,
- comandos CLI lentos,
- cron jobs largos o inestables,
- llamadas HTTP externas desde el backend,
- llamadas AJAX y fetch en el navegador.
No sustituye a un APM completo a nivel de infraestructura, pero en proyectos Magento tiene mucho valor diagnostico porque une rendimiento con contexto de aplicacion y release.
4. Monitorizacion del checkout
Checkout es el area tecnicamente mas importante de una tienda. Aqui es donde los errores cuestan mas. Sentry puede usarse para:
- registrar errores en los pasos del checkout,
- etiquetar el metodo de pago y envio,
- breadcrumbs para llamadas AJAX ejecutadas por checkout,
- analisis de problemas con
placeOrder, - Session Replay para sesiones que terminan con error.
Eso se traduce directamente en menos tiempo de diagnostico para problemas que afectan a la conversion.
5. Cron Monitoring y check-ins
Magento se apoya intensamente en cron. A traves de el se ejecutan muchos procesos que el usuario no ve directamente:
- exportaciones e importaciones,
- sincronizaciones con sistemas externos,
- generacion de alertas,
- limpieza de datos,
- tareas de indexacion y mantenimiento.
Sentry permite monitorizar check-ins de cron, su tiempo de ejecucion y su estado. Asi se puede detectar rapidamente que una tarea ha dejado de ejecutarse, tarda demasiado o termina con error.
6. Release tracking y source maps
Uno de los mayores valores de Sentry es vincular errores con un despliegue concreto. Si el release esta configurado de forma coherente para backend, frontend y source maps, el equipo puede:
- distinguir un error antiguo de una regresion tras el ultimo deploy,
- acotar mas rapido el alcance de los cambios,
- simbolizar correctamente stack traces de assets frontend,
- evaluar el impacto de un release concreto en la estabilidad de la tienda.
En proyectos Magento esto es especialmente importante porque el deployment suele incluir backend, static content e integraciones al mismo tiempo.
Que es el modulo Kowal_Sentry
Kowal_Sentry es un modulo Magento 2 listo para produccion que integra la tienda con Sentry tanto en backend como en frontend. Fue disenado como una capa de integracion alineada con la arquitectura de Magento:
El modulo esta disponible aqui: Kowal_Sentry for Magento 2.
- sin modificar el core,
- usando dependency injection,
- con plugins alrededor de los puntos clave de entrada de la aplicacion,
- con configuracion a traves de
Stores -> Configuration, - con separacion entre backend y frontend,
- con fuerte enfoque en seguridad de datos.
No es un helper aislado que envia una excepcion. Es un conjunto de mecanismos que unen PHP SDK, Browser SDK, estrategia de release, context providers, sanitizacion y monitorizacion de procesos Magento.
Como funciona exactamente la integracion en nuestro modulo
Bootstrap del backend PHP
El modulo inicializa el PHP SDK una vez por request o proceso. Durante el bootstrap establece, entre otras cosas:
dsn,environment,release,sample_rate,traces_sample_rate,profiles_sample_rate,enable_logs,send_default_pii,- hooks
before_send, - hooks que sanitizan breadcrumbs, transacciones, check-ins, logs y metricas.
Esto es importante porque ya en la entrada se define la politica de lo que se puede enviar a Sentry y de lo que debe filtrarse o redactarse.
Transacciones para requests HTTP
El plugin alrededor de Magento\Framework\App\Http envuelve el request en una transaccion de tipo http.server. La transaccion recibe nombre segun el request de Magento y obtiene tags y datos como:
route_name,full_action_name,- ruta del request,
- metodo HTTP,
area_code.
Si el request termina con una excepcion, el modulo la reporta a Sentry y cierra la transaccion con estado de error.
Monitorizacion CLI
El plugin alrededor de Magento\Framework\Console\Cli inicia transacciones de tipo cli.command para comandos bin/magento. Esto aporta observabilidad para:
- reindexacion,
- importaciones,
- tareas lanzadas manualmente,
- comandos de integracion personalizados.
En la practica, esto es muy util en staging y produccion, donde los problemas de CLI no siempre son visibles en el monitorizado estandar de la aplicacion.
Monitorizacion de cron y check-ins
El plugin alrededor de Magento\Cron\Model\Observer inicia una transaccion cron.job, reporta el tiempo de ejecucion del job y envia check-ins a Sentry. Gracias a esto se puede:
- monitorizar todos los cron o solo determinados
job_code, - establecer timeout por job,
- definir un tiempo maximo esperado de ejecucion,
- construir nombres coherentes de monitores mediante
slug prefix, - registrar automaticamente el monitor en el primer check-in si se desea.
Esta es una de las partes mas fuertes de la integracion, porque conecta la monitorizacion tecnica de Sentry con el modelo real de trabajo de Magento.
Instrumentacion del checkout
El plugin alrededor de Magento\Quote\Model\QuoteManagement::placeOrder() agrega breadcrumbs y reporta excepciones relacionadas con la finalizacion del pedido. Asi el evento puede incluir contexto adicional, por ejemplo:
cart_id,payment_method,- informacion necesaria para diagnosticar mas rapido fallos en checkout.
En el frontend, el modulo puede ademas seguir breadcrumbs de checkout y errores AJAX, lo que en conjunto da una vision mas coherente del flujo de pedido.
Spans y breadcrumbs para llamadas HTTP mediante cliente Curl
El plugin alrededor de Magento\Framework\HTTP\Client\Curl agrega un span http.client para llamadas GET, POST, PUT y DELETE. Se registran, entre otras cosas:
- URL,
- metodo,
- host,
- estado de la respuesta,
- breadcrumb correspondiente a la llamada.
Esto es util para diagnosticar integraciones con APIs externas, donde el error no proviene del propio Magento sino del tiempo de respuesta, problemas de autorizacion o payloads incorrectos del lado del partner.
Browser SDK para storefront y admin
En el lado del navegador, el modulo carga Browser SDK de forma dinamica a traves de Magento y RequireJS. La inicializacion incluye:
dsn,environment,release,tracesSampleRate,- Replay,
- User Feedback,
tracePropagationTargets,beforeSendcon sanitizacion del evento.
Ademas, el modulo:
- se engancha a errores de RequireJS,
- agrega breadcrumbs de AJAX,
- establece tags y contextos de Magento,
- inicializa la instrumentacion de checkout solo en
checkout_index_index, - puede funcionar en storefront y opcionalmente en admin.
Estrategia de release
Nuestro modulo soporta cuatro estrategias de release:
manual,env,file,generated.
En la practica, esto significa que la integracion puede adaptarse tanto a un despliegue manual simple como a un CI/CD maduro. Ademas, el modulo soporta variables de entorno como:
KOWAL_SENTRY_RELEASE,SENTRY_RELEASE,RELEASE_NAME,GIT_COMMIT.
Si el release no se proporciona desde fuera, el modulo puede generarlo a partir de la version de Magento, la version del modulo y el hash corto del commit.
Sanitizacion y privacidad
Uno de los elementos mas importantes de la integracion es el sanitizador de eventos. En nuestro modulo, la sanitizacion cubre:
- headers del request,
- cookies,
- body POST,
- query params,
- contextos y
extra, - tags,
user,- breadcrumbs,
- logs,
- metricas.
Segun la configuracion, el modulo puede:
- bloquear
Authorization, - bloquear cookies,
- eliminar cuerpos de request,
- enmascarar datos del cliente,
- anonimizar IP,
- redactar claves sensibles adicionales como
token,api_key,customer_email.
En e-commerce esto no es un extra. Es una condicion para una integracion correcta.
Alcance de configuracion del modulo
La configuracion esta disponible en el panel de Magento:
Stores -> Configuration -> Kowal -> Sentry
El alcance de ajustes se ha dividido intencionadamente en secciones que corresponden a distintos aspectos de la observabilidad.
1. General
La seccion base controla la activacion del modulo y los parametros compartidos:
- activacion o desactivacion global del modulo,
Environment,Release Strategy,Release Name Override,Project Name,Debug Mode,- comandos CLI de prueba.
Esta seccion establece la base del diagnostico. Sin environment y release correctos, los datos en Sentry tienen menos valor porque es mas dificil distinguir entornos y despliegues.
2. Backend SDK
Aqui se configura la monitorizacion del lado PHP:
Backend DSN,Error Sample Rate,Trace Sample Rate,Profile Sample Rate,Enable Logs,Enable Metrics API,Enable Cron Monitoring,Enable CLI Monitoring,Enable Adminhtml Monitoring,Enable API Monitoring.
Esta seccion determina si la tienda reporta excepciones y tracing del backend y cuan amplio es el alcance de observacion de procesos que se ejecutan fuera del storefront.
Conviene recordar que las metricas backend en sentry/sentry 4.24.x actual se tratan como obsoletas o no-op, por lo que el campo Enable Metrics API debe verse como una fachada de compatibilidad del modulo y no como un pipeline completo de metricas backend.
3. Frontend SDK
La seccion frontend corresponde a Browser SDK:
Frontend DSN,Enable Storefront JS,Enable Admin JS,JS Trace Sample Rate,JS Replay Session Sample Rate,JS Replay On Error Sample Rate,Enable Session Replay,Enable User Feedback Widget,Enable Checkout Instrumentation,Enable Ajax Instrumentation,Browser SDK CDN URL.
Esta separacion es muy importante. En muchos proyectos Magento, las necesidades de observabilidad del storefront y del admin son distintas, por eso el modulo permite gestionarlas por separado.
4. Privacy / Security
Esta seccion define la politica de seguridad de datos:
Send Default PII,Anonymize IP,Mask Customer Data,Mask Checkout Fields,Mask Payment Fields,Block Authorization Headers,Block Cookies,Block POST Bodies,Redact Query Params,Additional Redacted Keys,Replay Mask Selectors,Replay Block Selectors,Allowed Domains for Replay Network Details.
Es una seccion critica en cualquier implementacion en produccion. Ajustes de observabilidad demasiado permisivos pueden llevar a enviar a Sentry datos que no deberian acabar alli.
5. Filtering
La seccion de filtros permite reducir ruido:
- regex para ignorar excepciones,
- regex para ignorar URLs,
- transacciones ignoradas,
- ignorar bots,
- ignorar health checks,
- ignorar parte del trafico de admin,
- ignorar parte de errores de assets estaticos.
En un proyecto bien mantenido, el filtrado no es opcional. Sin el, el equipo pierde rapidamente calidad de senal en Sentry.
6. Context
Aqui definimos cuanto contexto de negocio de Magento adjuntamos a los eventos:
- contexto de store,
- contexto de website,
- contexto de cliente,
- contexto de quote,
- totales del carrito,
- contexto de pedido,
- contexto de producto,
- contexto de categoria,
- metodo de pago y envio,
- version del modulo,
- version de Magento,
- metadatos de despliegue.
Esta seccion es especialmente valiosa en proyectos con checkout complejo y muchas integraciones, porque permite responder mucho mas rapido a quien y a que afecta el problema.
7. Source Maps / Release
La seccion de release y source maps organiza los datos necesarios para el workflow de release frontend:
- bandera de uso de source maps,
- modo de subida de source maps,
Assets Base URL,Release Dist,Organization,Project Slug,Release File Path.
El propio modulo no sube source maps durante el runtime de Magento. Y eso es correcto. Debe hacerlo el pipeline CI/CD, por ejemplo mediante sentry-cli.
8. User Feedback
La seccion de feedback permite controlar el widget del lado del navegador:
- tema del widget,
- idioma,
- apertura automatica tras errores seleccionados,
- presencia en la success page,
- presencia en la contact page,
- trigger en el footer,
- selector de trigger personalizado.
Esta funcion es util cuando el equipo quiere recoger senales de los usuarios finales mas rapidamente sin construir un mecanismo aparte para reportar incidencias tecnicas.
9. Cron Monitoring
La seccion de cron organiza la monitorizacion de tareas Magento:
- autoregistro de monitores,
- lista de
job_codemonitorizados, - umbral de timeout por job,
- runtime maximo por job,
- prefijo de slug de monitor.
Esto es importante porque, en la practica, no todos los cron son igual de criticos. El modulo permite enfocar la monitorizacion en procesos con impacto real en ventas, integraciones y continuidad operativa de la tienda.
Como seria un escenario de implementacion sensato
En la practica, el proceso recomendado es el siguiente:
- Activar monitorizacion backend con una politica de privacidad restrictiva.
- Anadir monitorizacion frontend para el storefront.
- Activar tracing con un sample rate moderado.
- Activar monitorizacion de cron para las tareas mas importantes.
- Configurar una estrategia de release coherente con el despliegue.
- Anadir source maps en CI/CD.
- Solo despues ampliar el alcance de Replay y feedback.
Este orden tiene sentido porque primero permite construir una senal diagnostica estable y segura, y solo despues aumentar el nivel de detalle de los datos.
Que aporta esta integracion al equipo tecnico
Desde la perspectiva del equipo de mantenimiento, un Kowal_Sentry bien configurado aporta un valor muy concreto:
- deteccion mas rapida de fallos tras despliegues,
- menos tiempo de diagnostico para errores de checkout,
- mejor visibilidad sobre problemas en integraciones HTTP,
- monitorizacion de procesos cron y CLI,
- contexto coherente entre backend y frontend,
- mayor control sobre la calidad de los datos enviados a una herramienta externa.
En proyectos Magento, esto suele significar menos tiempo dedicado a reproducir manualmente un error y un paso mas rapido del sintoma a la causa.
Limitaciones que conviene conocer
Ninguna integracion de observabilidad es completamente incondicional. En el caso de nuestro modulo conviene recordar varias cosas:
- las metricas backend del SDK PHP actual de Sentry no deben tratarse como un pipeline completo de metricas,
- User Feedback a veces aparece marcado en Sentry como beta o experimental,
- Replay debe implantarse con cuidado y siempre con un masking fuerte,
- un sampling demasiado amplio en produccion aumenta rapidamente volumen de datos y costes.
Estas limitaciones no invalidan la solucion. Simplemente requieren una configuracion consciente.
Resumen
Sentry en Magento 2 tiene sentido cuando se implementa como una capa completa de observabilidad y no solo como un mecanismo sencillo de envio de excepciones. Precisamente para eso sirve Kowal_Sentry. Une backend PHP, frontend JavaScript, tracing, checkout, monitorizacion de cron, estrategia de release y sanitizacion de datos en un unico modulo Magento coherente.
Gracias a ello, el equipo tecnico obtiene una herramienta real para mantener y desarrollar la tienda: con mejor visibilidad de errores, diagnostico mas rapido de regresiones y mayor control sobre la estabilidad del proceso de venta.
Fuentes
- Sentry for PHP: https://docs.sentry.io/platforms/php/
- Sentry for JavaScript Browser: https://docs.sentry.io/platforms/javascript/guides/browser/
- Sentry Session Replay: https://docs.sentry.io/platforms/javascript/session-replay/
- Sentry User Feedback: https://docs.sentry.io/platforms/javascript/user-feedback/
- Sentry Crons for PHP: https://docs.sentry.io/platforms/php/crons/
- Sentry Environments and configuration: https://docs.sentry.io/platforms/javascript/configuration/environments/
