Ereignisse automatisch archivieren? Event Hubs Capture konfigurieren
Die Event-Hubs-Aufbewahrung hält Ereignisse für begrenzte Zeit im Stream bereit. Capture schreibt eingehende Ereignisse automatisch in Storage-Dateien. So kannst du sie für spätere Analysen behalten, ohne eine Archivierungsanwendung zu schreiben.
Verwende evhns-ctstreamweu, telemetry und event-hubs-demo.py aus dem vorherigen Trip. Behalte den Tarif Standard bei; Basic unterstützt Capture nicht. Bei Standard entstehen für Capture zusätzliche Kosten zur Namespace-Kapazität. Gespeicherte Dateien verursachen Storage-Kosten. Prüfe vor der Aktivierung die Schätzung im Portal.
Capture arbeitet unabhängig von deinem Demo-Empfänger. Du musst weder den Leser starten noch eine weitere Consumer Group erstellen. In diesem Lab sendest du nach der Aktivierung neue Ereignisse und suchst anschließend die erzeugten Archivdateien in Storage.
Archiv-Storage erstellen
Erstelle ein neues Storage-Konto unter CloudTrips TEST → rg-cloudtrips-eventhubs-test-weu:
Storage account name: stctcaptureweu
Region: West Europe
Performance: Standard
Redundancy: LRS
Account type: StorageV2
Advanced → Hierarchical namespace: Enabled
Verwende einen verfügbaren global eindeutigen Namen und passe ihn überall an. Mit hierarchischem Namespace wird dies ein Azure-Data-Lake-Storage-Gen2-Konto. Lass öffentlichen Netzwerkzugriff für dieses Lab aktiviert und anonymen Blob-Zugriff deaktiviert.
Weise deinem angemeldeten Benutzer am Storage-Konto unter Access control (IAM) die Rolle Storage Blob Data Contributor zu. Damit kannst du den Container erstellen und Dateien mit Microsoft-Entra-Authentifizierung prüfen. Erstelle anschließend unter Data storage → Containers → + Container den Container eventhub-capture mit privatem Zugriff.
Event Hubs das Schreiben erlauben
Öffne den Event-Hubs-Namespace → Identity → System assigned, setze Status: On und speichere.
Weise am Storage-Konto → Access control (IAM) der verwalteten Identität des Namespace evhns-ctstreamweu die Rolle Storage Blob Data Contributor zu. Wähle bei der Empfängerauswahl Managed identity. Diese Zuweisung ist von deiner Benutzerrolle getrennt. Warte einige Minuten auf die Übernahme neuer Zuweisungen.
Capture für telemetry aktivieren
Öffne evhns-ctstreamweu → Entities → Event Hubs → telemetry → Capture und konfiguriere:
Capture: On
Output event serialization format: Avro
Capture provider: Azure Storage
Authentication: System Assigned managed identity
Storage account: stctcaptureweu
Container: eventhub-capture
Time window: 1 minute
Size window: 10 MB
Emit empty files: Off (or Skip empty archives: On)
Behalte das Standardformat für Dateinamen bei und speichere. Wähle über Select container dein tatsächliches Konto und den Container. Die Identität muss sowohl am Namespace aktiviert als auch für die Capture-Authentifizierung ausgewählt sein.
Jede Partition erstellt ihre Dateien unabhängig. Sobald entweder das Zeit- oder das Größenfenster erreicht ist, wird eine Datei geschrieben. Bei zehn kleinen Ereignissen greift das Zeitfenster; sie müssen keine 10 MB erreichen.

Neue Ereignisse senden
Öffne Cloud Shell → Bash. Lade bei Bedarf das Event-Hubs-Beispiel erneut herunter und über Upload/Download files → Upload in Cloud Shell hoch. Führe den vollständigen Block aus und ersetze bei Bedarf den Namespace-Namen. Fordert die Kontoprüfung eine Anmeldung, führe zuerst az login --use-device-code aus.
cd "$HOME"
az account show --output table
az account set --subscription 'CloudTrips TEST'
python3 -m venv /tmp/ct-eventhubs
source /tmp/ct-eventhubs/bin/activate
python -m pip install 'azure-eventhub>=5.12,<6' 'azure-identity>=1.17,<2' 'aiohttp>=3.9,<4'
python event-hubs-demo.py --namespace evhns-ctstreamweu --mode send
Notiere die ausgegebene Run ID. Der Modus send endet nach dem Senden von zehn Ereignissen, ohne den Empfänger zu starten. Capture läuft in Azure nach dem Skriptende weiter. Ereignisse von vor der Capture-Aktivierung werden nicht nachträglich archiviert. Nutze deshalb diesen neuen Batch zur Prüfung.
Archiv finden
Warte einige Minuten auf die erste Datei. Öffne dann stctcaptureweu → Containers → eventhub-capture und aktualisiere die Ansicht. Folge den Ordnern unter deinem Namespace und telemetry:
<namespace>/telemetry/<partition>/<year>/<month>/<day>/<hour>/<minute>/<second>.avro
Der Standardpfad verwendet UTC-Zeit. Capture erstellt diese Ordner automatisch. Unser Beispiel verwendet einen Partitionsschlüssel. Daher kann nur eine der beiden Partitionen Dateien mit Ereignissen enthalten. Bei deaktivierten leeren Dateien muss eine ungenutzte Partition keine Datei erzeugen.

Erscheint keine Datei, prüfe, ob Capture vor dem Senden gespeichert wurde, die gewählte Identität ihre Storage-Rolle besitzt und das Ziel Netzwerkzugriff erlaubt. Sende nach einer Korrektur einen neuen Batch und warte erneut. Eine Dateigröße größer als null beweist noch keine archivierten Ereignisse: Eine Avro-Datei kann einen Schema-Header, aber null Datensätze enthalten.
Abschluss
Das Archiv hat eine eigene Lebensdauer. Läuft die Aufbewahrung eines Ereignisses im Event Hub ab, wird seine Storage-Datei nicht gelöscht. Storage-Lebenszyklusregeln oder ausdrückliches Löschen bestimmen, wie lange die Dateien bleiben.
Setze nach Abschluss der Archivierung telemetry → Capture → Off und speichere. Vorhandene Dateien bleiben bestehen und verursachen weiterhin Storage-Kosten; auch die Namespace-Kapazität wird weiter berechnet. Lösche rg-cloudtrips-eventhubs-test-weu, sobald du weder Stream noch Archiv benötigst. Lade Dateien, die du behalten möchtest, vorher herunter.