Reporting
Babel Licensing stellt ein umfassendes Reporting-Framework bereit, mit dem Sie wichtige Informationen über Ihre lizenzierten Anwendungen sammeln, auswerten und überwachen. Die automatisierten Reporting-Funktionen geben Ihnen Einblick in den Zustand der Anwendung, in Muster der Lizenznutzung, in Sicherheitsereignisse und in eigene Geschäftskennzahlen.
Warum Reporting wichtig ist
Reporting ist unverzichtbar, um zu verstehen, wie Ihre Software in Produktionsumgebungen verwendet wird:
- Proaktive Problembehebung: Abstürze der Anwendung erkennen und beheben, bevor sie die Benutzererfahrung beeinträchtigen
- Lizenzkonformität: die Nutzung der Funktionen überwachen und prüfen, ob Lizenzen wie vorgesehen verwendet werden
- Sicherheitsüberwachung: mögliche Sicherheitsbedrohungen oder unbefugte Zugriffsversuche erkennen und darauf reagieren
- Nutzungsanalyse: datengestützte Entscheidungen über die Entwicklung von Funktionen und die Lizenzierungsstrategie treffen
- Kundensupport: auf ausführliche Diagnoseinformationen zugreifen, um Probleme von Kunden schnell zu lösen
Berichtstypen
Babel Licensing bietet drei Berichtstypen, die jeweils für bestimmte Anforderungen an Überwachung und Analyse ausgelegt sind:
Fehlerberichte
Fehlerberichte halten ausführliche Informationen über Abstürze und Fehler der Anwendung fest und liefern den Kontext, der nötig ist, um Fehler effizient zu reproduzieren und zu beheben.
Hauptfunktionen:
- Automatische Erfassung von Ausnahmen mit vollständigen Stacktraces
- Umgebungsinformationen (geladene Assemblys, Prozesse, Umgebungsvariablen)
- Systeminformationen (Hardware, Betriebssystem, Netzwerkkonfiguration)
- Benutzerdefinierte Eigenschaften für zusätzlichen Kontext
- Konfigurierbare Datensammlung, um die Größe der Berichte gering zu halten
Typische Anwendungsfälle:
- Überwachung und Analyse von Abstürzen in der Produktion
- Reproduktion von Fehlern und Debugging
- Qualitätssicherung und Tests
- Diagnose im Kundensupport
Lizenznutzungsberichte
Lizenznutzungsberichte zeigen im Einzelnen, wie Ihre Anwendungen auf die Komponenten einer Lizenz zugreifen und sie verwenden.
Hauptfunktionen:
- Automatische Erfassung der Zugriffe auf Funktionen, Felder und Einschränkungen
- Nutzungsstatistiken (Anzahl der Zugriffe, Zeitstempel, Dauer)
- Metadaten der Lizenz und Validierungsstatus
- Intelligente serverseitige Zusammenführung für die historische Analyse
- Konfigurierbarer Erfassungsumfang
Typische Anwendungsfälle:
- Analyse der Akzeptanz von Funktionen
- Überwachung der Lizenzkonformität
- Erkennung ungenutzter Funktionen
- Erfassung von Nutzungsmustern
- Datengestützte Lizenzierungsstrategie
Benutzerdefinierte Berichte
Benutzerdefinierte Berichte ermöglichen es Ihnen, beliebige strukturierte Daten an Ihren Babel Licensing Service zu senden, zugeschnitten auf die Anforderungen Ihrer Anwendung.
Hauptfunktionen:
- Flexible Berichtsstruktur auf der Grundlage der Basisklasse
Report - Unterstützung beliebiger benutzerdefinierter Eigenschaften und Daten
- Einbindung von Umgebungs- und Systeminformationen
- Berichtsverschlüsselung für sensible Daten
- Ereignisbasierte Anpassung vor dem Senden
Typische Anwendungsfälle:
- Meldung von Sicherheitsereignissen (Erkennung von Angriffen, Eindringversuche)
- Leistungskennzahlen der Anwendung
- Erfassung von Geschäftsereignissen
- Benutzerdefinierte Diagnosedaten
- Erstellung von Audit-Trails
Funktionsweise des Reportings
Das Reporting-System von Babel Licensing folgt einem einfachen, aber leistungsfähigen Ablauf:
- Erfassung einschalten (für Lizenznutzungsberichte): Schalten Sie die Nutzungserfassung ein, bevor Sie Lizenzen validieren
- Anwendung verwenden: Bei der normalen Verwendung der Anwendung werden die Daten automatisch gesammelt
- Bericht erstellen: Erstellen Sie eine Berichtsinstanz mit den Daten, die Sie senden möchten
- Anpassen: Fügen Sie benutzerdefinierte Eigenschaften hinzu oder ändern Sie den Inhalt des Berichts über Ereignisse
- Bericht senden: Übertragen Sie den Bericht an Ihren Babel Licensing Service
- Auswerten: Sehen Sie die Berichte über die API des Dienstes oder in der Verwaltungsoberfläche ein und werten Sie sie aus
Architektur des Reportings
Das Reporting-Framework besteht aus mehreren zentralen Komponenten:
Clientseitige Komponenten
- Berichtsklassen: Basisklassen für Fehlerberichte, Lizenznutzungsberichte und benutzerdefinierte Berichte
- BabelReporting-Dienst: Clientbibliothek, die Berichte an den Server sendet
- Nutzungserfassung: automatische Überwachung der Zugriffe auf Lizenzkomponenten
- Datensammler: spezialisierte Sammler für Umgebungs- und Systeminformationen
Serverseitige Verarbeitung
- Berichtsvalidierung: stellt sicher, dass Berichte korrekt formatiert und autorisiert sind
- Entschlüsselung: verarbeitet verschlüsselte Berichtsinhalte
- Parsen der Berichte: extrahiert Eigenschaften für die Indizierung und die Suche
- Intelligente Zusammenführung: fasst Lizenznutzungsberichte für eine umfassende historische Analyse zusammen
- Webhook-Integration: sendet Ereignisse zur Integration externer Systeme
Konfiguration und Anpassung
Alle Berichtstypen lassen sich umfassend konfigurieren, um Datenumfang, Datenschutz und Leistung gegeneinander abzuwägen:
Optionen der Datensammlung
Legen Sie genau fest, welche Informationen in die Berichte aufgenommen werden:
reporting.Configuration.ExceptionReportOptions = new ExceptionReportOptions
{
CollectApplicationInformation = true,
CollectEnvironmentVariables = false, // Privacy-sensitive
CollectSystemInformation = true,
CollectProcessorInformation = true,
CollectMemoryInformation = true
};Berichtsverschlüsselung
Schützen Sie sensible Daten bei der Übertragung:
reporting.Configuration.EncryptionKey = "your-secret-key";Benutzerdefinierte Eigenschaften
Ergänzen Sie jeden Bericht um anwendungsspezifischen Kontext:
reporting.BeforeSendReport += (s, e) =>
{
e.Report.Properties.Add("environment", "production");
e.Report.Properties.Add("deployment_id", deploymentId);
e.Report.Properties.Add("user_tier", "enterprise");
};Fehlerbehandlung
Fangen Sie Fehler beim Senden von Berichten sauber ab:
reporting.AfterSendReport += (s, e) =>
{
if (e.Error != null)
{
Logger.Error($"Failed to send report: {e.Error.Message}");
StoreForRetry(e.Report);
}
};Erste Schritte mit dem Reporting
Reporting-Dienst initialisieren
using Babel.Licensing.Services;
var reporting = new BabelReporting();
reporting.Configuration.ServiceUrl = "https://licensing.example.com";
reporting.Configuration.ClientId = "MyApplication v1.0";Fehlerberichte senden
try
{
// Your application code
}
catch (Exception ex)
{
await reporting.SendExceptionReportAsync(userKey, ex);
}Erfassung der Lizenznutzung einschalten
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);Benutzerdefinierte Berichte erstellen
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);Bewährte Vorgehensweisen
Datensammlung minimieren
Sammeln Sie nur die Daten, die Sie tatsächlich benötigen. So bleiben die Berichte klein und die Privatsphäre geschützt:
reporting.Configuration.ExceptionReportOptions = new ExceptionReportOptions
{
CollectSystemInformation = true, // Essential
CollectDisplayInformation = false, // Usually not needed
CollectProcessInformation = false // Privacy-sensitive
};Berichte regelmäßig senden
Senden Sie Lizenznutzungsberichte in regelmäßigen Abständen statt fortlaufend:
var timer = new Timer(async _ =>
{
await reporting.SendLicenseReportAsync(userKey);
LicenseUsageTracking.Clear(); // Reset for next period
}, null, TimeSpan.FromHours(24), TimeSpan.FromHours(24));Offline-Szenarien berücksichtigen
Speichern Sie Berichte lokal, wenn der Server nicht erreichbar ist:
var result = await reporting.SendLicenseReportAsync(userKey);
if (!result.Success)
{
SaveReportForLater(result.Report);
}Sensible Daten bereinigen
Nehmen Sie niemals Passwörter, API-Schlüssel oder personenbezogene Daten auf:
reporting.BeforeSendReport += (s, e) =>
{
// Remove or hash sensitive data
e.Report.Properties["username"] = HashUsername(username);
// Don't include passwords, credit cards, etc.
};Sensible Berichte verschlüsseln
Schalten Sie die Verschlüsselung für Berichte ein, die sensible Informationen enthalten:
reporting.Configuration.EncryptionKey = Configuration["Reporting:EncryptionKey"];Analyse und Überwachung der Berichte
Sobald die Berichte bei Ihrem Babel Licensing Service eingegangen sind, können Sie:
- Berichte abfragen: Berichte über die API des Dienstes suchen und filtern
- Details ansehen: den vollständigen Inhalt und die Metadaten eines Berichts prüfen
- Trends verfolgen: Veränderungen bei Absturzraten, Nutzungsmustern oder Sicherheitsereignissen beobachten
- Daten exportieren: Berichtsdaten für die Auswertung in externen Tools entnehmen
- Warnmeldungen einrichten: Webhooks konfigurieren, die externe Systeme über kritische Ereignisse benachrichtigen
Integration mit den Lizenzierungsarten
Das Reporting arbeitet nahtlos mit allen Lizenzierungsarten von Babel Licensing zusammen:
- Lizenzdatei: Lizenzdaten zur Autorisierung von Berichten verwenden
- Lizenzaktivierung: aktivierungsbasierte Lizenzen erfassen
- Floating-Lizenz: Muster der gleichzeitigen Nutzung überwachen
Benutzerschlüssel, die bei der Aktivierung oder im Ablauf einer Floating-Lizenz erzeugt werden, dienen als Autorisierungsnachweis für das Senden von Berichten.
Hinweise zur Leistung
Das Reporting-System ist darauf ausgelegt, die Leistung möglichst wenig zu beeinträchtigen:
- Asynchrone Vorgänge: Das Senden von Berichten blockiert nie
- Konfigurierbare Sammlung: Schalten Sie aufwendige Sammler aus, die Sie nicht benötigen
- Effiziente Erfassung: Die Nutzungserfassung verwendet das Beobachtermuster und verursacht nur minimalen Mehraufwand
- Intelligentes Caching: Umgebungs- und Systemdaten werden zwischengespeichert, damit sie nicht wiederholt gesammelt werden
- Komprimierung: Berichte werden bei der Übertragung komprimiert
Aufbau der Dokumentation
Dieser Abschnitt enthält die ausführliche Dokumentation zu jedem Berichtstyp:
- Fehlerberichte: umfassende Anleitung zu Absturz- und Fehlerberichten
- Lizenznutzungsberichte: vollständige Dokumentation zur Erfassung der Lizenznutzung
- Benutzerdefinierte Berichte: eigene Berichtstypen erstellen und senden
Jede Seite enthält praktische Beispiele, Konfigurationsoptionen, bewährte Vorgehensweisen und Anwendungsfälle aus der Praxis, die Ihnen helfen, ein wirksames Reporting in Ihren Anwendungen umzusetzen.