Sentry in Magento 2

osservabilita tecnica dello store con il modulo Kowal_Sentry

13 minuti, 44 secondi

Sentry in Magento 2

Sentry in Magento 2: osservabilita tecnica dello store con il modulo Kowal_Sentry

Che cos e Sentry e a cosa serve davvero

Sentry viene spesso associato all error tracking, ma in pratica e una piattaforma di osservabilita che unisce diversi livelli di diagnostica applicativa:

  • report di eccezioni ed errori runtime,
  • tracing delle performance e dipendenze tra operazioni,
  • breadcrumbs che mostrano la sequenza di azioni prima di un guasto,
  • Session Replay lato browser,
  • User Feedback dall utente finale,
  • monitoraggio di processi periodici come cron,
  • release tracking e collegamento degli errori a un deployment specifico.

In un progetto implementato correttamente, Sentry non e solo il posto in cui finisce una stack trace. E uno strumento che permette di rispondere a domande come:

  • cosa si e rotto esattamente,
  • dove si e verificato il problema: backend, frontend, checkout, cron, integrazione,
  • da quando il problema esiste e a quale release e collegato,
  • se l errore riguarda tutti gli utenti, uno store specifico, un metodo di pagamento o un processo,
  • come appariva il contesto della request e cosa e successo subito prima dell errore.

Questo e particolarmente importante in Magento, dove un guasto raramente e un eccezione isolata in un solo controller. Spesso coinvolge l intero flusso: storefront, AJAX, checkout, provider di pagamento, cron che sincronizza i dati e successiva elaborazione dell ordine.

Perche Sentry e particolarmente utile nei progetti Magento

Magento 2 e una piattaforma ampia, stratificata e fortemente integrata. Uno store tipico funziona contemporaneamente come:

  • applicazione backend PHP,
  • applicazione frontend con molto JavaScript,
  • sistema di integrazione che collega ERP, PIM, WMS, OMS, gateway di pagamento e corrieri,
  • ambiente multistore con scope diversi e configurazione per website o store view,
  • piattaforma che gestisce processi di vendita critici, dove un problema nel checkout o nel cron ha un impatto diretto sui ricavi.

In pratica, questo significa che un semplice log file non basta. Nemmeno una stack trace PHP da sola basta. Per la diagnosi serve un modello di osservazione piu ampio:

  • eccezioni backend con contesto di business,
  • errori JavaScript provenienti da sessioni utente reali,
  • tracing di request e dipendenze HTTP,
  • monitoraggio di cron e CLI,
  • correlazione con la release dopo il deployment,
  • sanitizzazione dei dati, in modo che l osservabilita non entri in conflitto con la sicurezza.

Questo e esattamente l ambito in cui Sentry si adatta bene a Magento, a condizione che l integrazione sia fatta in modo consapevole e non come un semplice wrapper su captureException().

Come si puo usare Sentry in Magento 2

1. Monitoraggio degli errori del backend PHP

Lo scenario piu ovvio e il reporting delle eccezioni PHP provenienti da request di storefront, admin, API, cron e CLI. In Magento questo da accesso rapido a:

  • stack trace,
  • environment e release,
  • route name e full action name,
  • contesto della store view,
  • dati collegati di cliente, quote, ordine o prodotto, se l integrazione li allega.

Questo permette non solo di vedere che si e verificato un errore, ma anche di distinguere un problema di checkout da un problema di integrazione o da un errore del pannello amministrativo.

2. Monitoraggio del frontend JavaScript

Molti guasti critici in Magento non compaiono in PHP, ma nel browser:

  • un errore RequireJS,
  • un problema con un componente Knockout,
  • XHR falliti nel checkout,
  • una Promise rejection non gestita,
  • un errore in un widget custom sulla PDP o nel carrello.

Sentry Browser SDK puo registrare tutto questo insieme a breadcrumbs, request di rete, URL della pagina, environment e release. In pratica offre una visione molto migliore di cio che l utente vede davvero.

3. Performance Monitoring e tracing

Sentry puo raccogliere transaction e span, permettendo di analizzare:

  • durata delle request HTTP,
  • comandi CLI lenti,
  • cron job lunghi o instabili,
  • chiamate HTTP esterne dal backend,
  • chiamate AJAX e fetch nel browser.

Questo non sostituisce un APM completo a livello infrastrutturale, ma nei progetti Magento ha un valore diagnostico molto alto perche combina performance, contesto applicativo e release.

4. Monitoraggio del checkout

Il checkout e l area tecnicamente piu importante di uno store. E qui che gli errori costano di piu. Sentry puo essere usato per:

  • registrare errori nei passaggi del checkout,
  • taggare metodo di pagamento e spedizione,
  • breadcrumbs per chiamate AJAX eseguite dal checkout,
  • analisi dei problemi con placeOrder,
  • Session Replay per sessioni che terminano con un errore.

Questo si traduce direttamente in tempi di diagnosi piu brevi per i problemi che impattano la conversione.

5. Cron Monitoring e check-in

Magento si basa molto su cron. E il motore di molti processi che l utente non vede direttamente:

  • esportazioni e importazioni,
  • sincronizzazioni con sistemi esterni,
  • generazione di alert,
  • pulizia dei dati,
  • attivita di indicizzazione e manutenzione.

Sentry permette di monitorare i check-in dei cron, i tempi di esecuzione e lo stato. In questo modo si nota rapidamente che un job non viene piu eseguito, dura troppo o termina con errore.

6. Release tracking e source maps

Uno dei maggiori punti di forza di Sentry e il collegamento degli errori a un deployment specifico. Se la release e impostata in modo coerente per backend, frontend e source maps, il team puo:

  • distinguere un vecchio errore da una regressione dopo l ultimo deploy,
  • restringere piu rapidamente il perimetro delle modifiche,
  • simbolicare correttamente le stack trace degli asset frontend,
  • valutare l impatto di una release specifica sulla stabilita dello store.

Nei progetti Magento questo e particolarmente importante, perche il deployment include spesso contemporaneamente backend, static content e integrazioni.

Che cos e il modulo Kowal_Sentry

Kowal_Sentry e un modulo Magento 2 pronto per la produzione che integra lo store con Sentry lato backend e frontend. E stato progettato come livello di integrazione coerente con l architettura Magento:

Il modulo e disponibile qui: Kowal_Sentry for Magento 2.

  • senza modificare il core,
  • usando dependency injection,
  • con plugin attorno ai punti chiave di ingresso dell applicazione,
  • con configurazione tramite Stores -> Configuration,
  • con separazione tra backend e frontend,
  • con forte attenzione alla sicurezza dei dati.

Non e un singolo helper che invia un eccezione. E un insieme di meccanismi che uniscono PHP SDK, Browser SDK, release strategy, context provider, sanitizzazione e monitoraggio dei processi Magento.

Come funziona esattamente l integrazione nel nostro modulo

Bootstrap del backend PHP

Il modulo inizializza il PHP SDK una volta per request o processo. Durante il bootstrap imposta tra le altre cose:

  • dsn,
  • environment,
  • release,
  • sample_rate,
  • traces_sample_rate,
  • profiles_sample_rate,
  • enable_logs,
  • send_default_pii,
  • hook before_send,
  • hook di sanitizzazione per breadcrumbs, transaction, check-in, log e metriche.

Questo e importante perche gia all ingresso viene definita la politica di cio che puo essere inviato a Sentry e di cio che deve essere filtrato o redatto.

Transaction per request HTTP

Il plugin attorno a Magento\Framework\App\Http avvolge la request in una transaction di tipo http.server. La transaction viene nominata in base alla request Magento e riceve tag e dati come:

  • route_name,
  • full_action_name,
  • path della request,
  • metodo HTTP,
  • area_code.

Se la request termina con un eccezione, il modulo la segnala a Sentry e chiude la transaction con stato di errore.

Monitoraggio CLI

Il plugin attorno a Magento\Framework\Console\Cli avvia transaction di tipo cli.command per i comandi bin/magento. Questo fornisce osservabilita per:

  • reindicizzazioni,
  • importazioni,
  • task avviati manualmente,
  • comandi di integrazione personalizzati.

In pratica, e molto utile in staging e produzione, dove i problemi CLI non sono sempre visibili nel monitoraggio standard dell applicazione.

Monitoraggio cron e check-in

Il plugin attorno a Magento\Cron\Model\Observer avvia una transaction cron.job, riporta il tempo di esecuzione del job e invia check-in a Sentry. Questo permette di:

  • monitorare tutti i cron oppure solo specifici job_code,
  • impostare un timeout per job,
  • definire un tempo massimo atteso di esecuzione,
  • costruire nomi coerenti dei monitor tramite slug prefix,
  • registrare automaticamente il monitor al primo check-in, se necessario.

Questa e una delle parti piu forti dell integrazione, perche collega il monitoraggio tecnico di Sentry con il modello operativo reale di Magento.

Strumentazione del checkout

Il plugin attorno a Magento\Quote\Model\QuoteManagement::placeOrder() aggiunge breadcrumbs e riporta eccezioni legate alla finalizzazione dell ordine. In questo modo l evento puo contenere contesto aggiuntivo, per esempio:

  • cart_id,
  • payment_method,
  • informazioni necessarie per diagnosticare piu rapidamente i guasti nel checkout.

Sul frontend, il modulo puo inoltre tracciare breadcrumbs di checkout ed errori AJAX, offrendo nel complesso una visione piu coerente del flusso d ordine.

Span e breadcrumbs per chiamate HTTP tramite client Curl

Il plugin attorno a Magento\Framework\HTTP\Client\Curl aggiunge uno span http.client per chiamate GET, POST, PUT e DELETE. Vengono registrati tra l altro:

  • URL,
  • metodo,
  • host,
  • stato della risposta,
  • breadcrumb corrispondente alla chiamata.

Questo e utile nella diagnosi di integrazioni con API esterne, dove l errore non deriva da Magento stesso ma da tempi di risposta, problemi di autorizzazione o payload non corretti sul lato partner.

Browser SDK per storefront e admin

Dal lato browser, il modulo carica dinamicamente Browser SDK tramite Magento e RequireJS. L inizializzazione include:

  • dsn,
  • environment,
  • release,
  • tracesSampleRate,
  • Replay,
  • User Feedback,
  • tracePropagationTargets,
  • beforeSend con sanitizzazione dell evento.

Inoltre il modulo:

  • si collega agli errori RequireJS,
  • aggiunge breadcrumbs AJAX,
  • imposta tag e contesti Magento,
  • inizializza la strumentazione del checkout solo su checkout_index_index,
  • puo funzionare su storefront e opzionalmente in admin.

Strategia di release

Il nostro modulo supporta quattro strategie di release:

  • manual,
  • env,
  • file,
  • generated.

In pratica questo significa che l integrazione puo essere adattata sia a un deployment manuale semplice sia a un CI/CD maturo. Inoltre il modulo supporta variabili d ambiente come:

  • KOWAL_SENTRY_RELEASE,
  • SENTRY_RELEASE,
  • RELEASE_NAME,
  • GIT_COMMIT.

Se la release non viene fornita dall esterno, il modulo puo generarla in base alla versione di Magento, alla versione del modulo e all hash breve del commit.

Sanitizzazione e privacy

Uno degli elementi piu importanti dell integrazione e il sanitizer degli eventi. Nel nostro modulo la sanitizzazione copre:

  • header della request,
  • cookie,
  • body POST,
  • query params,
  • contesti ed extra,
  • tag,
  • user,
  • breadcrumbs,
  • log,
  • metriche.

In base alla configurazione, il modulo puo:

  • bloccare Authorization,
  • bloccare i cookie,
  • rimuovere i body delle request,
  • mascherare i dati del cliente,
  • anonimizzare l IP,
  • redigere chiavi sensibili aggiuntive come token, api_key, customer_email.

Nell e-commerce questo non e un extra. E una condizione per un integrazione corretta.

Ambito di configurazione del modulo

La configurazione e disponibile nel pannello Magento:

Stores -> Configuration -> Kowal -> Sentry

L insieme delle impostazioni e stato volutamente suddiviso in sezioni che corrispondono ai diversi aspetti dell osservabilita.

1. General

La sezione base controlla l attivazione del modulo e i parametri condivisi:

  • attivazione o disattivazione globale del modulo,
  • Environment,
  • Release Strategy,
  • Release Name Override,
  • Project Name,
  • Debug Mode,
  • comandi CLI di test.

Questa sezione imposta la base della diagnostica. Senza environment e release corretti, i dati in Sentry hanno meno valore, perche diventa piu difficile distinguere ambienti e deployment.

2. Backend SDK

Qui si configura il monitoraggio lato 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.

Questa sezione decide se lo store segnala eccezioni e tracing del backend e quanto ampio sia il perimetro di osservazione dei processi eseguiti fuori dallo storefront.

Vale la pena ricordare che le metriche backend nell attuale sentry/sentry 4.24.x sono considerate deprecate o no-op, quindi il campo Enable Metrics API va trattato come una facciata di compatibilita del modulo e non come una pipeline completa di metriche backend.

3. Frontend SDK

La sezione frontend riguarda 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.

Questa separazione e molto importante. In molti progetti Magento, le esigenze di osservabilita del storefront e dell admin sono diverse, quindi il modulo consente di gestirle separatamente.

4. Privacy / Security

Questa sezione definisce la politica di sicurezza dei dati:

  • 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.

E una sezione critica in ogni implementazione di produzione. Impostazioni di osservabilita troppo permissive possono portare a inviare a Sentry dati che non dovrebbero mai arrivarci.

5. Filtering

La sezione dei filtri permette di ridurre il rumore:

  • regex che ignorano le eccezioni,
  • regex che ignorano gli URL,
  • transaction ignorate,
  • esclusione dei bot,
  • esclusione degli health check,
  • esclusione di parte del traffico admin,
  • esclusione di parte degli errori degli asset statici.

In un progetto ben mantenuto, il filtering non e opzionale. Senza di esso, il team perde rapidamente qualita del segnale in Sentry.

6. Context

Qui definiamo quanto contesto di business Magento viene allegato agli eventi:

  • contesto dello store,
  • contesto del website,
  • contesto del cliente,
  • contesto del quote,
  • totali del carrello,
  • contesto dell ordine,
  • contesto del prodotto,
  • contesto della categoria,
  • metodo di pagamento e spedizione,
  • versione del modulo,
  • versione di Magento,
  • metadati di deployment.

Questa sezione e particolarmente preziosa nei progetti con checkout complesso e molte integrazioni, perche permette di rispondere molto piu rapidamente a chi e a cosa riguarda il problema.

7. Source Maps / Release

La sezione release e source maps organizza i dati necessari per il workflow di release frontend:

  • flag per l uso delle source maps,
  • modalita di upload delle source maps,
  • Assets Base URL,
  • Release Dist,
  • Organization,
  • Project Slug,
  • Release File Path.

Il modulo non carica le source maps durante il runtime di Magento. Ed e giusto cosi. Deve farlo la pipeline CI/CD, per esempio tramite sentry-cli.

8. User Feedback

La sezione feedback consente di controllare il widget lato browser:

  • tema del widget,
  • lingua,
  • apertura automatica dopo errori selezionati,
  • presenza nella success page,
  • presenza nella contact page,
  • trigger nel footer,
  • selettore trigger personalizzato.

Questa funzione e utile quando il team vuole raccogliere piu rapidamente segnali dagli utenti finali senza costruire un meccanismo separato per segnalazioni tecniche.

9. Cron Monitoring

La sezione cron organizza il monitoraggio dei job Magento:

  • registrazione automatica dei monitor,
  • elenco dei job_code monitorati,
  • soglia di timeout per job,
  • runtime massimo per job,
  • prefisso di slug dei monitor.

Questo e importante perche, nella pratica, non tutti i cron sono ugualmente critici. Il modulo permette di concentrare il monitoraggio sui processi che hanno un impatto reale su vendite, integrazioni e continuita operativa dello store.

Come appare uno scenario di implementazione sensato

In pratica, il processo consigliato e questo:

  1. Avviare il monitoraggio backend con una politica privacy restrittiva.
  2. Aggiungere il monitoraggio frontend per lo storefront.
  3. Abilitare il tracing con un sample rate moderato.
  4. Abilitare il monitoraggio cron per i job piu importanti.
  5. Configurare una release strategy coerente con il deployment.
  6. Aggiungere le source maps nel CI/CD.
  7. Solo dopo estendere la copertura di Replay e feedback.

Questo ordine ha senso perche consente prima di costruire un segnale diagnostico stabile e sicuro e solo in seguito aumentare il livello di dettaglio dei dati.

Cosa offre questa integrazione al team tecnico

Dal punto di vista del team di manutenzione, un Kowal_Sentry ben configurato offre un valore molto concreto:

  • rilevamento piu rapido dei guasti dopo i deploy,
  • tempi di diagnosi piu brevi per gli errori di checkout,
  • migliore visibilita sui problemi delle integrazioni HTTP,
  • monitoraggio di processi cron e CLI,
  • contesto coerente tra backend e frontend,
  • maggiore controllo sulla qualita dei dati inviati a uno strumento esterno.

Nei progetti Magento questo significa di solito meno tempo speso a riprodurre manualmente un errore e passaggio piu rapido dal sintomo alla causa.

Limitazioni da conoscere

Nessuna integrazione di osservabilita e completamente priva di condizioni. Nel caso del nostro modulo vale la pena ricordare alcune cose:

  • le metriche backend nell attuale SDK PHP di Sentry non devono essere considerate una pipeline completa di metriche,
  • User Feedback in Sentry puo essere indicato come beta o experimental,
  • Replay va introdotto con cautela e sempre con un masking forte,
  • un sampling troppo ampio in produzione aumenta rapidamente volume dati e costi.

Queste limitazioni non squalificano la soluzione. Richiedono semplicemente una configurazione consapevole.

Riepilogo

Sentry in Magento 2 ha senso quando viene implementato come un livello completo di osservabilita e non solo come un semplice meccanismo di invio delle eccezioni. E proprio a questo che serve Kowal_Sentry. Unisce backend PHP, frontend JavaScript, tracing, checkout, monitoraggio cron, strategia di release e sanitizzazione dei dati in un unico modulo Magento coerente.

Di conseguenza, il team tecnico ottiene uno strumento reale per manutenzione e sviluppo dello store: con migliore visibilita sugli errori, diagnosi piu rapida delle regressioni e maggiore controllo sulla stabilita del processo di vendita.

Fonti

  • 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/

Previous Next