Freigeben über


Event Grid-Datenverbindung

Die Event Grid-Erfassung ist eine Pipeline, die auf Azure Storage lauscht und Azure Data Explorer aktualisiert, um Informationen zu pullen, wenn abonnierte Ereignisse auftreten. Azure Data Explorer ermöglicht eine kontinuierliche Erfassung aus Azure Storage (Blobspeicher und ADLSv2) mit einem Azure Event Grid-Abonnement für Benachrichtigungen zur Erstellung oder Umbenennung von Blobs und das Streaming dieser Benachrichtigungen an Azure Data Explorer über Azure Event Hubs.

Die Event Grid-Erfassungspipeline umfasst mehrere Schritte. Sie erstellen eine Zieltabelle in Azure Data Explorer, in der die Daten in einem bestimmten Format erfasst werden. Anschließend erstellen Sie eine Event Grid-Datenverbindung in Azure Data Explorer. Die Event Grid-Datenverbindung muss über Informationen zum Ereignisrouting verfügen, z. B. die Tabelle, an die Daten gesendet werden sollen, und die Tabellenzuordnung. Außerdem geben Sie Erfassungseigenschaften an, die die zu erfassenden Daten, die Zieltabelle und die Zuordnung beschreiben. Sie können Beispieldaten generieren und Blobs hochladen oder Blobs umbenennen, um Ihre Verbindung zu testen. Löschen Sie Blobs nach der Erfassung.

Die Event Grid-Erfassung kann über das Azure-Portal, mithilfe des Erfassungs-Assistenten, programmgesteuert mit C# oder Python oder mit der Azure Resource Manager-Vorlage verwaltet werden.

Allgemeine Informationen zur Datenerfassung in Azure Data Explorer finden Sie unter Übersicht über die Datenerfassung in Azure Data Explorer.

Authentifizierungsmechanismen für die Event Grid-Datenverbindung

  • Auf verwalteten Identitäten basierende Datenverbindung (empfohlen): Die Verwendung einer auf verwalteten Identitäten basierenden Datenverbindung ist die sicherste Methode für die Verbindungsherstellung mit Datenquellen. Sie bietet umfassende Steuerungsmöglichkeiten für das Abrufen von Daten aus einer Datenquelle. Das Einrichten einer Event Grid-Datenverbindung mit verwalteter Identität erfordert die folgenden Schritte:

    1. Zuweisen einer verwalteten Identität zu Ihrem Cluster
    2. Erteilen von Berechtigungen für die verwaltete Identität für die Datenquelle. Um Daten aus Azure Storage abzurufen, muss die verwaltete Identität mindestens Berechtigung Leser von Speicherblobdaten für das Azure Storage-Konto besitzen.
    3. Erteilen von Berechtigungen für die verwaltete Identität für den Event Hub. Um Blobbenachrichtigungen vom Event Hub abzurufen, muss die verwaltete Identität über Berechtigungen zu Azure Event Hubs-Datenempfänger für Azure Event Hubs verfügen.
    4. Legen Sie eine Richtlinie für die verwaltete Identität für die Zieldatenbanken fest.
    5. Erstellen einer Datenverbindung mithilfe der Authentifizierung der verwalteten Identität zum Abrufen von Daten

    Achtung

    • Wenn die Berechtigungen für verwaltete Identitäten aus der Datenquelle entfernt werden, funktioniert die Datenverbindung nicht mehr und kann keine Daten aus der Datenquelle abrufen.
    • Wenn die lokale Authentifizierung für einen vorhandenen Event Hubs-Namespace deaktiviert ist, in dem Blobbenachrichtigungen gestreamt werden, müssen Sie die Authentifizierung der verwalteten Identität für die Datenverbindung verwenden und Ressourcen ordnungsgemäß konfigurieren. Weitere Informationen finden Sie unter Bekannte Event Grid-Probleme.
  • Schlüsselbasierte Datenverbindung: Wenn in der Datenverbindung keine verwaltete Identität angegeben wird, wird für die Verbindung automatisch eine schlüsselbasierte Authentifizierung verwendet. Bei schlüsselbasierten Verbindungen werden Daten unter Verwendung einer Ressourcenverbindungszeichenfolge abgerufen. (Ein Beispiel wäre etwa die Azure Event Hubs-Verbindungszeichenfolge.) Azure Data Explorer ruft die Ressourcenverbindungszeichenfolge für die angegebene Ressource ab und speichert sie sicher. Die Verbindungszeichenfolge wird dann verwendet, um Daten aus der Datenquelle abzurufen.

    Achtung

    Wenn der Schlüssel rotiert wird, funktioniert die Datenverbindung nicht mehr und kann keine Daten aus der Datenquelle abrufen. Um das Problem zu beheben, aktualisieren oder erstellen Sie die Datenverbindung neu.

Datenformat

  • Siehe Unterstützte Formate.
  • Siehe Unterstützte Komprimierungen.
    • Die ursprüngliche Größe der nicht komprimierten Daten sollte Teil der Blobmetadaten sein. Andernfalls wird sie von Azure Data Explorer geschätzt. Das Größenlimit für die Erfassung von nicht komprimierten Daten pro Datei ist 6 GB.

      Hinweis

      Das Abonnement von Event Grid-Benachrichtigungen kann in Azure Storage-Konten für BlobStorage, StorageV2 oder BlobStorage festgelegt werden.

Erfassungseigenschaften

Sie können Erfassungseigenschaften für die Bloberfassung über die Blobmetadaten angeben. Sie können die folgenden Eigenschaften festlegen:

Eigenschaft Beschreibung
rawSizeBytes Größe der Rohdaten (unkomprimiert). Bei Avro/ORC/Parquet ist dies die Größe vor dem Anwenden der formatspezifischen Komprimierung. Geben Sie die ursprüngliche Datengröße an, indem Sie diese Eigenschaft auf die nicht komprimierte Datengröße in Byte festlegen.
kustoDatabase Der Name der Zieldatenbank unter Berücksichtigung der Groß-/Kleinschreibung. Standardmäßig werden Daten in der Zieldatenbank erfasst, die der Datenverbindung zugeordnet ist. Verwenden Sie diese Eigenschaft, um die Standarddatenbank zu überschreiben und Daten an eine andere Datenbank zu senden. Hierzu müssen Sie zuerst die Verbindung als Verbindung mit mehreren Datenbanken einrichten.
kustoTable Der Name der vorhandenen Zieltabelle unter Berücksichtigung der Groß-/Kleinschreibung. Überschreibt das Table-Element, das im Bereich Data Connection festgelegt ist.
kustoDataFormat Datenformat. Überschreibt das Data format-Element, das im Bereich Data Connection festgelegt ist.
kustoIngestionMappingReference Name der zu verwendenden vorhandenen Erfassungszuordnung. Überschreibt das Column mapping-Element, das im Bereich Data Connection festgelegt ist.
kustoIgnoreFirstRecord Wenn true festgelegt wird, ignoriert Kusto die erste Zeile im Blob. Verwenden Sie diese Eigenschaft in Daten in einem Tabellenformat (CSV, TSV oder ähnliche), um die Header zu ignorieren.
kustoExtentTags Zeichenfolgendarstellung von Tags, die an die resultierende Erweiterung angefügt werden.
kustoCreationTime Überschreibt die Erweiterungserstellungszeit für das Blob im Format einer ISO 8601-Zeichenfolge. Verwenden Sie dies für einen Abgleich.

Ereignisrouting

Wenn Sie eine Datenverbindung mit Ihrem Cluster herstellen, geben Sie das Routing für das Senden der erfassten Daten an. Das Standardrouting gilt für die Zieltabelle, die in der Verbindungszeichenfolge angegeben ist, die der Zieldatenbank zugeordnet ist. Das Standardrouting für Ihre Daten wird auch als statisches Routing bezeichnet. Sie können ein alternatives Routing für Ihre Daten angeben, indem Sie die Ereignisdateneigenschaften verwenden.

Routen von Ereignisdaten an eine alternative Datenbank

Das Routing von Daten an eine alternative Datenbank ist standardmäßig deaktiviert. Um die Daten an eine andere Datenbank zu senden, müssen Sie zuerst die Verbindung als Verbindung mit mehreren Datenbanken festlegen. Diesen Schritt können Sie im Azure-Portal, in C#, Python oder über eine ARM-Vorlage ausführen. Der Benutzer, die Gruppe, der Dienstprinzipal oder die verwaltete Identität, der bzw. die zum Zulassen des Datenbankroutings verwendet wird, muss mindestens über die Rolle Mitwirkender und Schreibberechtigungen für den Cluster verfügen. Weitere Informationen finden Sie unter Erstellen einer Event Grid-Datenverbindung für Azure Data Explorer.

Um eine alternative Datenbank anzugeben, legen Sie die Database Erfassungseigenschaft fest.

Warnung

Wenn Sie eine alternative Datenbank angeben, ohne die Verbindung als Datenverbindung mit mehreren Datenbanken festzulegen, kann die Erfassung fehlschlagen.

Routen von Ereignisdaten an eine alternative Tabelle

Beim Einrichten einer Blob Storage-Verbindung mit einem Azure Data Explorer-Cluster geben Sie Eigenschaften für die Zieltabelle an:

  • Tabellenname
  • Datenformat
  • mapping

Sie können mithilfe von Blobmetadaten auch Zieltabelleneigenschaften für jeden Blob angeben. Die Daten werden wie mit den Erfassungseigenschaften festgelegt dynamisch weitergeleitet.

Das folgende Beispiel zeigt, wie Sie vor dem Hochladen Erfassungseigenschaften für die Blobmetadaten festlegen. Blobs werden an verschiedene Tabellen weitergeleitet.

Darüber hinaus können Sie die Zieldatenbank angeben. Eine Event Grid-Datenverbindung wird im Kontext einer bestimmten Datenbank erstellt. Daher ist diese Datenbank das Standarddatenbankrouting der Datenverbindung. Legen Sie zum Senden der Daten an eine andere Datenbank die Erfassungseigenschaft „KustoDatabase“ und die Datenverbindung als Datenverbindung mit mehreren Datenbanken fest. Das Routing von Daten an eine andere Datenbank ist standardmäßig deaktiviert (nicht zulässig). Das Festlegen einer Datenbankerfassungseigenschaft, die sich von der Datenbank der Datenverbindung unterscheidet, ohne Zulassen des Datenroutings an mehrere Datenbanken (Festlegen der Verbindung als Datenverbindung mit mehreren Datenbanken) verursacht einen Fehler bei der Erfassung.

Weitere Informationen finden Sie unter Hochladen von Blobs.

var container = new BlobContainerClient("<storageAccountConnectionString>", "<containerName>");
await container.CreateIfNotExistsAsync();
var blob = container.GetBlobClient("<blobName>");
// Blob is dynamically routed to table `Events`, ingested using `EventsMapping` data mapping
await blob.SetMetadataAsync(
    new Dictionary<string, string>
    {
        { "rawSizeBytes", "4096" }, // the uncompressed size is 4096 bytes
        { "kustoTable", "Events" },
        { "kustoDataFormat", "json" },
        { "kustoIngestionMappingReference", "EventsMapping" },
        { "kustoDatabase", "AnotherDB" }
    }
);
await blob.UploadAsync(BinaryData.FromString(File.ReadAllText("<filePath>")));

Hochladen von Blobs

Sie können ein Blob aus einer lokalen Datei erstellen, Erfassungseigenschaften für die Blobmetadaten festlegen und das Blob hochladen. Beispiele finden Sie unter Verwenden der Event Grid-Datenverbindung.

Hinweis

  • Es wird dringend empfohlen, BlockBlob zum Generieren von Daten zu verwenden, da die Verwendung von AppendBlob zu unerwartetem Verhalten führen kann.
  • Die Verwendung des Azure Data Lake Gen2 Storage SDK erfordert, dass Sie CreateFile zum Hochladen von Dateien verwenden sowie am Ende Flush ausführen und dabei den Parameter „close“ auf true festlegen. Ein detailliertes Beispiel für die korrekte Verwendung des Data Lake Gen2 SDK finden Sie unter Verwenden der Event Grid-Datenverbindung.
  • Das Auslösen der Erfassung nach einem CopyBlob-Vorgang wird für Speicherkonten, für die das Feature „hierarchischer Namespace“ aktiviert ist, nicht unterstützt.
  • Wenn der Empfang eines Ereignisses vom Event Hub-Endpunkt nicht bestätigt wird, wird von Azure Event Grid ein Wiederholungsmechanismus aktiviert. Falls diese Wiederholung der Zustellung nicht erfolgreich ist, kann Event Grid die nicht übermittelten Ereignisse per Dead-Lettering (Unzustellbare Nachrichten) an ein Speicherkonto senden. Weitere Informationen finden Sie unter Event Grid – Nachrichtenübermittlung und -wiederholung.

Umbenennen von Blobs

Wenn Sie ADLSv2 verwenden, können Sie ein Blob umbenennen, um die Bloberfassung in Azure Data Explorer auszulösen. Weitere Informationen finden Sie unter Umbenennen von Blobs.

Hinweis

  • Das Umbenennen von Verzeichnissen ist in ADLSv2 möglich, löst jedoch keine Ereignisse zur Umbenennung von Blobs und keine Erfassung von Blobs innerhalb des Verzeichnisses aus. Wenn Sie Blobs nach dem Umbenennen erfassen möchten, benennen Sie die gewünschten Blobs direkt um.
  • Wenn Sie Filter zum Nachverfolgen bestimmter Themen beim Erstellen der Datenverbindung oder beim manuellen Erstellen von Event Grid-Ressourcen festgelegt haben, werden diese Filter auf den Zieldateipfad angewendet.

Löschen von Blobs mithilfe des Speicherlebenszyklus

Azure Data Explorer löscht Blobs nach der Erfassung nicht. Informationen zum Löschen von Blobs finden Sie unter Azure Blob Storage-Lebenszyklus. Es wird empfohlen, die Blobs für drei bis fünf Tage beizubehalten.

Bekannte Probleme mit Event Grid

  • Wenn die lokale Authentifizierung im Event Hubs-Namespace deaktiviert ist, der den Event Hub enthält, der für Streamingbenachrichtigungen verwendet wird, führen Sie die folgenden Schritte aus, um sicherzustellen, dass Daten mithilfe von verwalteten Identitäten ordnungsgemäß vom Speicher zum Event Hub fließen:

    1. Weisen Sie dem Event Grid-Systemthema des Speicherkontos eine vom systemseitig zugewiesene verwaltete Identität zu. Weitere Informationen finden Sie unter Aktivieren einer verwalteten Identität für Systemthemen.
    2. Erteilen Sie der verwalteten Identität Senderberechtigungen, indem Sie ihr die Rolle Azure Event Hubs-Datensender auf dem Event Hub zuweisen. Weitere Informationen finden Sie unter Hinzufügen von Identität zu Azure-Rollen bei Zielen.
    3. Stellen Sie sicher, dass das Event Grid-Abonnement die verwaltete Identität für die Ereignisübermittlung verwendet. Weitere Informationen finden Sie unter Erstellen von Ereignisabonnements, die eine Identität verwenden.

    Konfigurieren Sie außerdem die Event Grid-Datenverbindung so, dass die Authentifizierung der verwalteten Identität verwendet wird, damit Azure Data Explorer Benachrichtigungen vom Event Hub empfangen kann.

  • Beachten Sie Folgendes, wenn Sie Azure Data Explorer zum Exportieren der Dateien für die Event Grid-Erfassung verwenden:

    • Event Grid-Benachrichtigungen werden nicht ausgelöst, wenn die für den Exportbefehl oder für eine externe Tabelle angegebene Verbindungszeichenfolge eine Verbindungszeichenfolge im ADLS Gen2-Format ist (z. B. abfss://filesystem@accountname.dfs.core.windows.net), das Speicherkonto aber nicht für den hierarchischen Namespace aktiviert ist.
    • Wenn das Konto nicht für den hierarchischen Namespace aktiviert ist, muss die Verbindungszeichenfolge dem Blob Storage-Format entsprechen (z. B. https://accountname.blob.core.windows.net). Der Export funktioniert auch bei Verwendung der ADLS Gen2-Verbindungszeichenfolge wie erwartet, es werden jedoch keine Benachrichtigungen ausgelöst, und die Event Grid-Erfassung erfolgt nicht.