Skip to Content
Nuova versione 12 disponibile 🎉
LicensingReporting

Reporting

Babel Licensing offre un framework di reporting completo con cui puoi raccogliere, analizzare e monitorare le informazioni critiche sulle tue applicazioni con licenza. I report automatici ti danno indicazioni utili sullo stato dell’applicazione, sull’utilizzo delle licenze, sugli eventi di sicurezza e sulle metriche di business personalizzate.

Perché il reporting è importante

Il reporting è essenziale per capire come il tuo software viene usato negli ambienti di produzione:

  • Risoluzione proattiva dei problemi: individua e correggi gli arresti anomali dell’applicazione prima che incidano sull’esperienza degli utenti
  • ConformitĂ  delle licenze: monitora l’utilizzo delle funzionalitĂ  e verifica che le licenze siano usate come previsto
  • Monitoraggio della sicurezza: rileva le potenziali minacce alla sicurezza o i tentativi di accesso non autorizzato e reagisci
  • Analisi dell’utilizzo: prendi decisioni basate sui dati per lo sviluppo delle funzionalitĂ  e la strategia di licensing
  • Assistenza ai clienti: accedi a informazioni diagnostiche dettagliate per risolvere rapidamente i problemi dei clienti

Tipi di report

Babel Licensing offre tre tipi di report, ciascuno pensato per esigenze specifiche di monitoraggio e analisi:

Report di eccezione

I report di eccezione acquisiscono informazioni dettagliate sugli arresti anomali e sugli errori dell’applicazione e forniscono il contesto necessario per riprodurre e correggere i bug in modo efficiente.

FunzionalitĂ  principali:

  • Acquisizione automatica delle eccezioni con stack trace completi
  • Informazioni sull’ambiente (assembly caricati, processi, variabili d’ambiente)
  • Informazioni di sistema (hardware, sistema operativo, configurazione di rete)
  • ProprietĂ  personalizzate per aggiungere contesto
  • Raccolta dei dati configurabile per ridurre al minimo la dimensione dei report

Casi d’uso comuni:

  • Monitoraggio e analisi degli arresti anomali in produzione
  • Riproduzione dei bug e debug
  • Controllo qualitĂ  e test
  • Diagnostica per l’assistenza ai clienti

Report di licenza

I report di licenza mostrano in dettaglio come le tue applicazioni accedono ai componenti della licenza e li usano.

FunzionalitĂ  principali:

  • Tracciamento automatico dell’accesso a funzionalitĂ , campi e restrizioni
  • Statistiche di utilizzo (numero di accessi, timestamp, durata)
  • Metadati della licenza e stato della convalida
  • Unione intelligente lato server per l’analisi storica
  • Ambito del tracciamento configurabile

Casi d’uso comuni:

  • Analisi dell’adozione delle funzionalitĂ 
  • Monitoraggio della conformitĂ  delle licenze
  • Individuazione delle funzionalitĂ  inutilizzate
  • Tracciamento degli schemi di utilizzo
  • Strategia di licensing basata sui dati

Report personalizzati

I report personalizzati ti permettono di inviare al tuo Babel Licensing Service qualsiasi dato strutturato, adattato alle esigenze specifiche della tua applicazione.

FunzionalitĂ  principali:

  • Struttura flessibile del report basata sulla classe base Report
  • Supporto per qualsiasi proprietĂ  e dato personalizzato
  • Integrazione delle informazioni sull’ambiente e di sistema
  • Cifratura dei report per i dati sensibili
  • Personalizzazione tramite eventi prima dell’invio

Casi d’uso comuni:

  • Report degli eventi di sicurezza (rilevamento di attacchi, tentativi di intrusione)
  • Metriche delle prestazioni dell’applicazione
  • Tracciamento degli eventi di business
  • Dati diagnostici personalizzati
  • Creazione di tracce di audit

Come funziona il reporting

Il sistema di reporting di Babel Licensing segue un flusso di lavoro semplice ma efficace:

  1. Abilita il tracciamento (per i report di licenza): attiva il tracciamento dell’utilizzo prima di convalidare le licenze
  2. Usa l’applicazione: il normale utilizzo dell’applicazione raccoglie i dati automaticamente
  3. Crea il report: crea un’istanza di report con i dati che vuoi inviare
  4. Personalizza: aggiungi proprietĂ  personalizzate o modifica il contenuto del report tramite gli eventi
  5. Invia il report: trasmetti il report al tuo Babel Licensing Service
  6. Analizza: visualizza e analizza i report tramite l’API del servizio o l’interfaccia di gestione

Architettura del reporting

Il framework di reporting si basa su alcuni componenti chiave:

Componenti lato client

  • Classi dei report: classi base per i report di eccezione, di licenza e personalizzati
  • Servizio BabelReporting: libreria client per inviare i report al server
  • Tracciamento dell’utilizzo: monitoraggio automatico dell’accesso ai componenti della licenza
  • Raccoglitori di dati: raccoglitori specializzati per le informazioni sull’ambiente e di sistema

Elaborazione lato server

  • Convalida dei report: garantisce che i report siano formattati correttamente e autorizzati
  • Decifratura: gestisce il contenuto cifrato dei report
  • Analisi dei report: estrae le proprietĂ  per l’indicizzazione e la ricerca
  • Unione intelligente: combina i report di licenza per un’analisi storica completa
  • Integrazione webhook: invia gli eventi per l’integrazione con sistemi esterni

Configurazione e personalizzazione

Tutti i tipi di report offrono un’ampia configurazione, per bilanciare la ricchezza dei dati con la privacy e le prestazioni:

Opzioni di raccolta dei dati

Controlla con precisione quali informazioni vengono incluse nei report:

reporting.Configuration.ExceptionReportOptions = new ExceptionReportOptions { CollectApplicationInformation = true, CollectEnvironmentVariables = false, // Privacy-sensitive CollectSystemInformation = true, CollectProcessorInformation = true, CollectMemoryInformation = true };

Cifratura dei report

Proteggi i dati sensibili durante la trasmissione:

reporting.Configuration.EncryptionKey = "your-secret-key";

ProprietĂ  personalizzate

Aggiungi a qualsiasi report un contesto specifico dell’applicazione:

reporting.BeforeSendReport += (s, e) => { e.Report.Properties.Add("environment", "production"); e.Report.Properties.Add("deployment_id", deploymentId); e.Report.Properties.Add("user_tier", "enterprise"); };

Gestione degli errori

Gestisci in modo controllato gli errori di invio dei report:

reporting.AfterSendReport += (s, e) => { if (e.Error != null) { Logger.Error($"Failed to send report: {e.Error.Message}"); StoreForRetry(e.Report); } };

Per iniziare con il reporting

Inizializza il servizio di reporting

using Babel.Licensing.Services; var reporting = new BabelReporting(); reporting.Configuration.ServiceUrl = "https://licensing.example.com"; reporting.Configuration.ClientId = "MyApplication v1.0";

Invia i report di eccezione

try { // Your application code } catch (Exception ex) { await reporting.SendExceptionReportAsync(userKey, ex); }

Abilita il tracciamento delle licenze

using Babel.Licensing.Reports; // Enable before validation LicenseUsageTracking.Enable(); // Validate license var license = licenseManager.Validate(userKey, keyType); // Use licensed features (automatically tracked) var data = license.Features["Reporting"].Data; // Send tracking report await reporting.SendLicenseReportAsync(userKey);

Crea report personalizzati

public class SecurityEventReport : Report { public string EventType { get; set; } public string Severity { get; set; } public SecurityEventReport() : base("SecurityEvent") { } public override void Build() { Properties.Add("event_type", EventType); Properties.Add("severity", Severity); base.Build(); } } // Send custom report var report = new SecurityEventReport { EventType = "UnauthorizedAccess", Severity = "High" }; await reporting.SendAsync(userKey, report);

Procedure consigliate

Riduci al minimo la raccolta dei dati

Raccogli solo i dati che ti servono davvero, per ridurre la dimensione dei report e proteggere la privacy:

reporting.Configuration.ExceptionReportOptions = new ExceptionReportOptions { CollectSystemInformation = true, // Essential CollectDisplayInformation = false, // Usually not needed CollectProcessInformation = false // Privacy-sensitive };

Invia i report periodicamente

Per i report di licenza, invia a intervalli regolari anziché in modo continuo:

var timer = new Timer(async _ => { await reporting.SendLicenseReportAsync(userKey); LicenseUsageTracking.Clear(); // Reset for next period }, null, TimeSpan.FromHours(24), TimeSpan.FromHours(24));

Gestisci gli scenari offline

Salva i report in locale quando il server non è raggiungibile:

var result = await reporting.SendLicenseReportAsync(userKey); if (!result.Success) { SaveReportForLater(result.Report); }

Ripulisci i dati sensibili

Non includere mai password, chiavi API o informazioni di identificazione personale:

reporting.BeforeSendReport += (s, e) => { // Remove or hash sensitive data e.Report.Properties["username"] = HashUsername(username); // Don't include passwords, credit cards, etc. };

Usa la cifratura per i report sensibili

Abilita la cifratura per i report che contengono informazioni sensibili:

reporting.Configuration.EncryptionKey = Configuration["Reporting:EncryptionKey"];

Analisi e monitoraggio dei report

Quando i report raggiungono il tuo Babel Licensing Service, puoi:

  • Interrogare i report: cerca e filtra i report tramite l’API del servizio
  • Visualizzare i dettagli: esamina il contenuto completo e i metadati di un report
  • Seguire le tendenze: monitora le variazioni nella frequenza degli arresti anomali, negli schemi di utilizzo o negli eventi di sicurezza
  • Esportare i dati: estrai i dati dei report per analizzarli con strumenti esterni
  • Impostare gli avvisi: configura i webhook per notificare gli eventi critici ai sistemi esterni

Integrazione con le modalitĂ  di licenza

Il reporting si integra senza difficoltĂ  con tutte le modalitĂ  di licenza di Babel Licensing:

Le chiavi utente generate nei flussi di lavoro dell’attivazione o della licenza flottante servono come credenziali di autorizzazione per l’invio dei report.

Considerazioni sulle prestazioni

Il sistema di reporting è progettato per avere un impatto minimo sulle prestazioni:

  • Operazioni asincrone: l’invio dei report non è mai bloccante
  • Raccolta configurabile: disabilita i raccoglitori onerosi che non ti servono
  • Tracciamento efficiente: il tracciamento dell’utilizzo usa il modello di progettazione Observer, con un overhead minimo
  • Cache intelligente: i dati dell’ambiente e di sistema vengono memorizzati nella cache per evitare raccolte ripetute
  • Compressione: i report vengono compressi durante la trasmissione

Struttura della documentazione

Questa sezione contiene la documentazione dettagliata di ogni tipo di report:

Ogni pagina contiene esempi pratici, opzioni di configurazione, procedure consigliate e casi d’uso reali, per aiutarti a realizzare un reporting efficace nelle tue applicazioni.

Last updated on