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:
- Abilita il tracciamento (per i report di licenza): attiva il tracciamento dell’utilizzo prima di convalidare le licenze
- Usa l’applicazione: il normale utilizzo dell’applicazione raccoglie i dati automaticamente
- Crea il report: crea un’istanza di report con i dati che vuoi inviare
- Personalizza: aggiungi proprietĂ personalizzate o modifica il contenuto del report tramite gli eventi
- Invia il report: trasmetti il report al tuo Babel Licensing Service
- 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:
- File di licenza: usa i dati della licenza per autorizzare i report
- Attivazione della licenza: traccia le licenze basate sull’attivazione
- Licenza flottante: monitora gli schemi di utilizzo simultaneo
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:
- Report di eccezione: guida completa ai report di arresti anomali ed errori
- Report di licenza: documentazione completa del tracciamento dell’utilizzo delle licenze
- Report personalizzati: creare e inviare tipi di report personalizzati
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.