Sentry — cos'è, principi e raccolta degli errori

Autore: IT Sectr Pubblicato: 2026-05-29 Tempo di lettura: 8 min

Sentry è una piattaforma di tracciamento degli errori e monitoraggio delle prestazioni delle applicazioni in tempo reale che fornisce agli sviluppatori il contesto completo di ogni crash. Secondo Sentry Documentation, 2025, Sentry elabora oltre 10 miliardi di eventi al giorno, offrendo integrazione con oltre 90 linguaggi e framework per iOS, Android, web e backend.

Punti chiave

  • Sentry è una piattaforma open-source di error tracking e performance monitoring che supporta oltre 90 linguaggi e piattaforme.
  • Error events — raccolta automatica delle eccezioni con stack trace completo, valori delle variabili e stato del dispositivo.
  • Breadcrumbs — sequenza di azioni dell'utente ed eventi di sistema che precedono un errore.
  • Source maps — deoffuscamento del codice minificato per ripristinare uno stack di chiamate leggibile in produzione.
  • Performance Tracing — monitoraggio del tempo di esecuzione delle transazioni con distributed tracing attraverso tutti i servizi.

Cos'è Sentry nello sviluppo

Sentry è una piattaforma open-source per il crash reporting e il monitoraggio delle prestazioni, fondata nel 2012. Consente agli sviluppatori di ricevere notifiche di errori in tempo reale con contesto diagnostico completo: stack di chiamate, valori delle variabili al momento del crash, sequenza delle azioni dell'utente prima dell'errore e stato dell'ambiente.

A differenza dei servizi aggregati di crash reporting (Google Play Console, App Store Connect), che forniscono solo statistiche e grafici di base, Sentry mostra ogni evento individualmente con la possibilità di raggruppare per tipo di errore e filtrare per versione dell'app. Un Issue in Sentry è un gruppo di eventi con lo stesso stack trace, consentendo di non affogare in migliaia di crash identici ma di concentrarsi sulla risoluzione della causa principale con contesto completo.

Secondo Sentry (2025), il tempo medio di rilevamento degli errori si riduce da 30 minuti a 30 secondi dopo l'implementazione dell'SDK Sentry, e il tempo di diagnosi si riduce del 60% grazie ai breadcrumbs automatici e al contesto ambientale. La piattaforma è utilizzata da oltre 100.000 organizzazioni in tutto il mondo, tra cui Airbnb, Microsoft, Instagram e PayPal, elaborando miliardi di eventi ogni giorno.

Architettura di Sentry: SDK, Relay e elaborazione degli eventi

Il sistema Sentry è composto da tre componenti principali: SDK sul lato applicazione, Relay (server proxy) e backend di elaborazione degli eventi. Sentry SDK è una libreria incorporata nell'applicazione che intercetta le eccezioni, raccoglie il contesto e invia gli eventi a Relay tramite protocollo JSON/HTTPS.

Sentry Relay

Relay è un server intermedio che può essere distribuito nell'infrastruttura aziendale. Riceve gli eventi dall'SDK, li filtra secondo regole (dati PII, eventi non necessari), li bufferizza e li inoltra a Sentry SaaS o a un'istanza self-hosted. Relay garantisce bassa latenza — il tempo tipico di ricezione degli eventi è di 500–1500 ms.

Filtro dati in entrata

Sentry fornisce filtri integrati per scartare gli eventi indesiderati prima dell'invio al server: errori da ambienti di test, errori da versioni obsolete dell'app, eventi duplicati con la stessa impronta. Filtering consente di risparmiare fino al 70% del volume di dati in un tipico progetto di produzione, riducendo i costi di consumo e il carico del canale di comunicazione del dispositivo.

Configurazione dell'SDK Sentry per iOS e Android

L'installazione dell'SDK Sentry per piattaforme mobili richiede 5–10 minuti e richiede l'aggiunta di una dipendenza e l'inizializzazione con una chiave DSN. DSN (Data Source Name) è un identificatore univoco del progetto in Sentry che indica dove inviare gli eventi.

Configurazione su Android

Per Android, Sentry fornisce strumentazione automatica tramite un plugin Gradle. Il plugin modifica il bytecode in fase di compilazione, aggiungendo wrapper per tutte le Activity, i Fragment e le chiamate di rete. Auto-instrumentation si attiva con una singola opzione in build.gradle e consente di ottenere breadcrumbs dal ciclo di vita dell'applicazione senza modificare il codice.

kotlin
import io.sentry.Sentry

class App : Application() {
    override fun onCreate() {
        super.onCreate()
        Sentry.init { options ->
            options.dsn = "https://example@sentry.io/project"
            options.tracesSampleRate = 0.2
            options.enableAutoSessionTracking = true
        }
    }
}

Il codice inizializza l'SDK Sentry in un'applicazione Android. Il parametro tracesSampleRate = 0.2 abilita il performance tracing per il 20% delle sessioni, enableAutoSessionTracking crea automaticamente sessioni per ogni avvio dell'app.

Configurazione su iOS

L'SDK per iOS supporta CocoaPods, Swift Package Manager e Carthage. Dopo l'installazione, l'SDK intercetta automaticamente NSException, i segnali (SIGABRT, SIGSEGV) e gli errori Swift. Sentry Cocoa SDK è compatibile con iOS 12+ e macOS 10.13+, supporta Swift Concurrency (async/await) e la strumentazione automatica di URLSession.

swift
import Sentry

class AppDelegate: UIResponder, UIApplicationDelegate {
    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions options: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        SentrySDK.start { options in
            options.dsn = "https://example@sentry.io/project"
            options.enableAutoPerformanceTracing = true
        }
        return true
    }
}

Il codice Swift attiva l'SDK Sentry con raccolta automatica delle metriche di prestazione. enableAutoPerformanceTracing abilita il monitoraggio del tempo di caricamento degli schermi e delle richieste HTTP senza codice aggiuntivo.

Breadcrumbs sono una sequenza cronologica di eventi che precedono un errore. Sentry registra automaticamente breadcrumbs per pressioni di pulsanti, transizioni tra schermate, richieste HTTP e notifiche di sistema. Lo sviluppatore può aggiungere breadcrumbs personalizzati per la logica di business.

Ogni breadcrumb contiene un timestamp, tipo di evento (navigation, http, ui, error), categoria e dati arbitrari. Quando si verifica un errore, tutti i breadcrumbs degli ultimi 2–5 minuti (configurabile) vengono allegati all'evento. Questo contesto è spesso più importante dello stack trace stesso: lo sviluppatore vede che l'utente ha cliccato su “Paga” dopo aver selezionato un prodotto, e solo dopo si è verificato il crash. Il numero massimo di breadcrumbs predefinito è 200, dopo di che i record più vecchi vengono automaticamente rimossi.

kotlin
Sentry.addBreadcrumb(
    Breadcrumb().apply {
        category = "payment"
        message = "User tapped Pay button"
        type = "user"
        level = BreadcrumbLevel.INFO
        data["amount"] = "19.99"
        data["currency"] = "USD"
    }
)

Il codice aggiunge un breadcrumb personalizzato per un'azione dell'utente nello scenario di pagamento. Se si verifica un errore dopo questa azione, lo sviluppatore vedrà in Sentry che l'utente ha cliccato su “Paga” con l'importo di 19,99 USD, consentendo di localizzare rapidamente il problema nel flusso di pagamento.

Contesto utente

Sentry consente di allegare informazioni sull'utente agli eventi: ID, nome utente, email. User context viene trasmesso automaticamente con tutti gli eventi della stessa sessione, consentendo di raggruppare gli errori per utenti e determinare quanti utenti sono stati colpiti da un bug specifico. È importante rispettare la politica sulla privacy e non trasmettere dati personali se non consentito dalla politica dell'applicazione.

Source maps e simboli di debug

Nelle build di produzione di iOS e Android, il codice è solitamente minificato o offuscato. Senza elaborazione, lo stack di errori conterrà nomi incomprensibili come “a.b()” invece di “UserViewModel.fetchData()”. Source maps (JavaScript) e debug symbols (dSYM per iOS, ProGuard mapping per Android) ripristinano uno stack leggibile.

Per Android, Sentry carica automaticamente i file ProGuard mapping tramite il plugin Gradle durante la compilazione della versione release. Per iOS, è necessario caricare i file dSYM — Sentry fornisce uno script per il caricamento automatico durante l'archiviazione. Senza simboli di debug, lo stack di errori in Sentry sarà inutile per lo sviluppatore, quindi il processo di caricamento deve essere un passaggio obbligatorio nella pipeline CI/CD.

Monitoraggio delle prestazioni con Sentry

Dalla versione 2020, Sentry include il performance monitoring — raccolta di metriche del tempo di esecuzione delle transazioni con distributed tracing. Una Transaction in Sentry è un'unità di lavoro misurabile: caricamento di schermata, esecuzione di richiesta API, elaborazione di attività in background. Ogni transazione contiene span figli che mostrano quali passaggi specifici hanno richiesto più tempo.

Il performance monitoring in Sentry è integrato con l'error tracking: se una transazione termina con un errore, lo span corrispondente viene contrassegnato con lo stato “error” e lo sviluppatore può passare dalle metriche di prestazione ai dettagli dell'eccezione. Trace ID collega tutti gli eventi (errori, transazioni, breadcrumbs) in un'unica sessione per un'analisi end-to-end, fornendo una transizione fluida tra le schede Issues e Performance in un unico dashboard di Sentry.

Secondo Sentry Performance Benchmark (2024), un'applicazione con performance monitoring abilitato (tasso di campionamento del 10%) consuma dal 2 al 5% in più di traffico e dall'1 al 2% in più di risorse CPU sul dispositivo. Questo sovraccarico è compensato da una riduzione del 70% del tempo di diagnosi delle prestazioni rispetto alla profilazione manuale.

Domande frequenti

In cosa Sentry si differenzia da Firebase Crashlytics?

Sentry fornisce più contesto: breadcrumbs, dati personalizzati, collegamento degli errori con le prestazioni. Firebase Crashlytics è uno strumento gratuito con crash reporting di base ma senza distributed tracing e senza possibilità di strumentazione personalizzata dei breadcrumbs. Sentry è adatto per progetti che necessitano di diagnosi approfondita.

Quanto costa Sentry per un'applicazione mobile?

Sentry offre un piano gratuito con 5.000 eventi al mese (errori + transazioni). Il piano a pagamento Team costa 26 dollari per utente al mese e include 100.000 eventi. Per progetti grandi, è disponibile un piano Business con volume illimitato e prezzo personalizzato.

Come gestisce Sentry i dati personali negli errori?

Sentry fornisce un meccanismo integrato di Data Scrubbing: rimozione automatica di email, indirizzi IP, carte di credito e altri dati PII dagli eventi prima della loro memorizzazione. Le regole di pulizia sono configurate nell'interfaccia web o nella configurazione di Relay con supporto per espressioni regolari. Si consiglia di attivare lo scrubbing a livello di SDK in modo che i dati sensibili non lascino il dispositivo dell'utente.

È possibile eseguire Sentry su server propri?

Sì, Sentry ha una versione self-hosted completamente open-source. Self-hosted Sentry viene distribuito tramite Docker Compose e include tutte le funzionalità della versione SaaS. Configurazione minima del server richiesta: 4 vCPU, 16 GB di RAM, 100 GB di spazio su disco per l'archiviazione degli eventi.

Sentry supporta SwiftUI e Jetpack Compose?

Sì, l'SDK Sentry supporta completamente SwiftUI (iOS 13+) e Jetpack Compose (Android). Per SwiftUI, l'SDK crea automaticamente transazioni per NavigationView e List con misurazione del tempo di rendering. Per Jetpack Compose, è necessaria un'integrazione personalizzata tramite CompositionLocalProvider per passare il contesto Sentry ai Composables.

Riepilogo

  • Sentry è una piattaforma open-source di error tracking e performance monitoring utilizzata da oltre 100.000 organizzazioni.
  • Architettura include SDK sul dispositivo, proxy Relay e backend di elaborazione eventi con supporto per distribuzione self-hosted e SaaS.
  • Breadcrumbs forniscono una cronologia delle azioni dell'utente prima dell'errore, di fondamentale importanza per diagnosticare bug complessi.
  • Source maps e dSYM ripristinano stack di chiamate leggibili dal codice offuscato di produzione.
  • Performance Tracing è integrato con l'error tracking, consentendo di passare dalle metriche temporali ai dettagli dell'errore tramite un singolo trace ID.
  • Auto-instrumentation copre Activity, ViewController, richieste HTTP e il ciclo di vita dell'applicazione senza codice manuale.
  • Si consiglia di implementare Sentry per qualsiasi applicazione di produzione: il piano gratuito copre 5.000 eventi al mese, sufficienti per progetti di piccole e medie dimensioni.

Svilupperemo un'applicazione mobile chiavi in mano

IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.

Discuti il progetto

Leggi anche