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 Azure Data Explorer-Datenverbindungen

Achtung

Wenn die Berechtigungen der verwalteten Identität aus der Datenquelle entfernt werden, wird die Datenverbindung deaktiviert, und es können keine Daten mehr aus der Datenquelle abgerufen werden.

  • 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 generiert die Ressourcenverbindungszeichenfolge für die angegebene Ressource und speichert sie sicher in der Datenverbindung. Die Verbindungszeichenfolge wird dann verwendet, um Daten aus der Datenquelle abzurufen.

Achtung

Wenn der Schlüssel rotiert wird, wird die Datenverbindung deaktiviert, und es können keine Daten mehr aus der Datenquelle abgerufen werden. 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. Sie können dies in der Azure-Portal, C#, Python oder einer ARM-Vorlage tun. 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.

Legen Sie zum Angeben einer alternativen Datenbank die ErfassungseigenschaftDatabase 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, zum Generieren von Daten die Verwendung zu verwenden BlockBlob , da die Verwendung AppendBlob zu unerwartetem Verhalten führen kann.
  • Die Verwendung des Azure Data Lake Gen2-Speicher-SDK erfordert die Verwendung CreateFile zum Hochladen von Dateien und Flush am Ende, wobei der close-Parameter auf festgelegt ist true. Ein ausführliches 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 nicht unterstützt, für die das Feature für hierarchische Namespaces aktiviert ist.
  • 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 beispielsweise 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

  • 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. ), 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. ). 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.