Delen via


Event Grid-gegevensverbinding

Event Grid-gegevensopname is een pijplijn die luistert naar Azure Storage en Azure Data Explorer bijwerkt om informatie op te halen wanneer zich geabonneerde gebeurtenissen voordoen. Azure Data Explorer biedt continue opname vanuit Azure Storage (Blob Storage en ADLSv2) met een Azure Event Grid-abonnement voor meldingen voor het aanmaken of hernoemen van blobs en deze meldingen naar Azure Data Explorer streamen via Azure Event Hubs.

De Event Grid-opnamepijplijn doorloopt verschillende stappen. U maakt een doeltabel in Azure Data Explorer waarin de gegevens in een bepaalde indeling worden opgenomen. Vervolgens maakt u een Event Grid-gegevensverbinding in Azure Data Explorer. De Event Grid-gegevensverbinding moet informatie over routering van gebeurtenissen kennen, zoals naar welke tabel de gegevens moeten worden verzonden en naar de tabeltoewijzing. U geeft ook opnameeigenschappen op, waarin de gegevens worden beschreven die moeten worden opgenomen, de doeltabel en de toewijzing. U kunt voorbeeldgegevens genereren en blobs uploaden of de naam van blobs wijzigen om uw verbinding te testen. Verwijder blobs na opname.

Event Grid-opname kan worden beheerd via Azure Portal, met behulp van de opnamewizard, programmatisch met C# of Python, of met de Azure Resource Manager-sjabloon.

Zie overzicht van gegevensopname in Azure Data Explorer voor algemene informatie over gegevensopname in Azure Data Explorer.

Verificatiemechanismen voor Event Grid-gegevensverbindingen

  • Gegevensverbinding op basis van beheerde identiteit (aanbevolen): Het gebruik van een gegevensverbinding op basis van een beheerde identiteit is de veiligste manier om verbinding te maken met gegevensbronnen. Het biedt volledige controle over de mogelijkheid om gegevens op te halen uit een gegevensbron.

    Voor het instellen van een Event Grid-gegevensverbinding met beheerde identiteit zijn de volgende stappen en machtigingen vereist:

    1. Zorg ervoor dat u de rol EventGrid-inzender hebt toegewezen aan het Azure-abonnement van het brongegevensopslagaccount.
    2. Een beheerde identiteit toevoegen aan uw cluster.
    3. Machtigingen verlenen aan de beheerde identiteit op de gegevensbron. Als u gegevens wilt ophalen uit Azure Storage, moet de beheerde identiteit ten minste machtigingen hebben voor opslagblobgegevenslezer voor het Azure Storage-account.
    4. Machtigingen verlenen aan de beheerde identiteit op de Event Hub. Als u blobmeldingen van de Event Hub wilt ophalen, moet de beheerde identiteit machtigingen voor Azure Event Hubs-gegevensontvanger hebben voor de Azure Event Hubs.
    5. Stel een beleid voor beheerde identiteiten in op de doeldatabases.
    6. Maak een gegevensverbinding met behulp van verificatie van beheerde identiteiten om gegevens op te halen.

    Opmerking

    • De Event Hub-consumentengroep moet uniek zijn per consument. Maak een toegewezen consumentengroep voor elke Azure Data Explorer-gegevensverbinding.

    Waarschuwing

    • Als de machtigingen voor beheerde identiteiten worden verwijderd uit de gegevensbron, werkt de gegevensverbinding niet meer en kan de gegevens niet worden opgehaald uit de gegevensbron.
    • Als lokale verificatie is uitgeschakeld in een bestaande Event Hubs-naamruimte waarin blobmeldingen worden gestreamd, moet u verificatie van beheerde identiteiten gebruiken voor de gegevensverbinding en resources correct configureren. Zie Bekende Problemen met Event Grid voor meer informatie.
  • Gegevensverbinding op basis van een sleutel: als er geen verificatie van een beheerde identiteit is opgegeven voor de gegevensverbinding, wordt de verbinding automatisch standaard ingesteld op verificatie op basis van sleutels. Met sleutelverbindingen worden gegevens opgehaald via een resourceverbindingsreeks, zoals de Azure Event Hubs-verbindingsreeks. Azure Data Explorer haalt de verbindingsreeks voor de resource op voor de opgegeven resource en slaat deze veilig op. De verbindingsreeks wordt vervolgens gebruikt om gegevens op te halen uit de gegevensbron.

    Waarschuwing

    Als de sleutel wordt geroteerd, werkt de gegevensverbinding niet meer en kan de gegevens niet worden opgehaald uit de gegevensbron. U kunt het probleem oplossen door de gegevensverbinding bij te werken of opnieuw te maken.

Gegevensopmaak

  • Bekijk ondersteunde indelingen.
  • Bekijk ondersteunde compressies.
    • De oorspronkelijke niet-gecomprimeerde gegevensgrootte moet deel uitmaken van de blobmetagegevens, anders schat Azure Data Explorer deze. De opnamelimiet voor niet-gecomprimeerde grootte per bestand is 6 GB.

      Opmerking

      Event Grid-meldingsabonnement kan worden ingesteld op Azure Storage-accounts voor BlobStorage, StorageV2of Data Lake Storage Gen2.

Opname-eigenschappen

U kunt opname-eigenschappen van de blobopname opgeven via de blobmetagegevens. U kunt de volgende eigenschappen instellen:

Vastgoed Beschrijving
rawSizeBytes De grootte van de onbewerkte (niet-gecomprimeerde) gegevens. Voor Avro/ORC/Parquet is dit de grootte voordat opmaakspecifieke compressie wordt toegepast. Geef de oorspronkelijke gegevensgrootte op door deze eigenschap in te stellen op de niet-gecomprimeerde gegevensgrootte in bytes.
kustoDatabase De hoofdlettergevoelige naam van de doeldatabase. Standaard worden gegevens opgenomen in de doeldatabase die is gekoppeld aan de gegevensverbinding. Gebruik deze eigenschap om de standaarddatabase te overschrijven en gegevens naar een andere database te verzenden. Hiervoor moet u eerst de verbinding instellen als een verbinding met meerdere databases.
kustoTable De hoofdlettergevoelige naam van de bestaande doeltabel. Hiermee wordt de Table instelling op het Data Connection deelvenster overschreven.
kustoDataFormat Gegevensindeling. Hiermee wordt de Data format instelling op het Data Connection deelvenster overschreven.
kustoIngestionMappingReference Naam van de bestaande opnametoewijzing die gebruikt moet worden. Hiermee wordt de Column mapping instelling op het Data Connection deelvenster overschreven.
kustoIgnoreFirstRecord Indien ingesteld op true, negeert Kusto de eerste rij van de blob. Gebruik gegevens in tabelvorm (CSV, TSV of vergelijkbaar) om headers te negeren.
kustoExtentTags Tekenreeks die tags aangeeft die aan het resulterende bereik zijn gekoppeld.
kustoCreationTime Hiermee wordt de tijd voor het maken van de omvang voor de blob overschreven, opgemaakt als een ISO 8601-tekenreeks. Gebruik voor terugvullen.

Routering van gebeurtenissen

Wanneer u een gegevensverbinding met uw cluster maakt, geeft u de routering op voor waar opgenomen gegevens moeten worden verzonden. De standaardroutering is naar de doeltabel die is opgegeven in de verbindingsreeks die is gekoppeld aan de doeldatabase. De standaardroutering voor uw gegevens wordt ook wel statische routeringgenoemd. U kunt een alternatieve routering voor uw gegevens opgeven met behulp van de eigenschappen van gebeurtenisgegevens.

Gebeurtenisgegevens routeren naar een alternatieve database

Routering van gegevens naar een alternatieve database is standaard uitgeschakeld. Als u de gegevens naar een andere database wilt verzenden, moet u eerst de verbinding instellen als een verbinding met meerdere databases. U kunt dit doen in Azure Portal, C#, Python of een ARM-sjabloon. De gebruiker, groep, service-principal of beheerde identiteit die wordt gebruikt om databaseroutering toe te staan, moet ten minste de contributor rol hebben en schrijfrechten voor het cluster. Zie Een Event Grid-gegevensverbinding maken voor Azure Data Explorer voor meer informatie.

Als u een alternatieve database wilt opgeven, stelt u de instellingseigenschap Databasevoor gegevensinvoer in.

Waarschuwing

Als u een alternatieve database opgeeft zonder de verbinding in te stellen als een gegevensverbinding met meerdere databases, mislukt de opname.

Gebeurtenisgegevens routeren naar een alternatieve tabel

Bij het instellen van een blobopslagverbinding met een Azure Data Explorer-cluster, geeft u de eigenschappen van de doeltabel op:

  • tabelnaam
  • gegevensindeling
  • in kaart brengen

U kunt ook eigenschappen van de doeltabel voor elke blob opgeven met behulp van metagegevens van de blob. De gegevens worden dynamisch gerouteerd, zoals opgegeven door opname-eigenschappen.

In het onderstaande voorbeeld ziet u hoe u opname-eigenschappen instelt voor de metagegevens van de blob voordat u deze uploadt. Blobs worden doorgestuurd naar verschillende tabellen.

Daarnaast kunt u de doeldatabase opgeven. Er wordt een Event Grid-gegevensverbinding gemaakt binnen de context van een specifieke database. Daarom is deze database de standaarddatabaseroutering van de gegevensverbinding. Als u de gegevens naar een andere database wilt verzenden, stelt u de opnameeigenschap KustoDatabase in en stelt u de gegevensverbinding in als een gegevensverbinding met meerdere databases. Routering van gegevens naar een andere database is standaard uitgeschakeld (niet toegestaan). Als u een eigenschap voor databaseopname instelt die anders is dan de database van de gegevensverbinding, zonder dat gegevensroutering naar meerdere databases is toegestaan (de verbinding instellen als een gegevensverbinding met meerdere databases), mislukt de opname.

Zie Blobs uploaden voor meer informatie.

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>")));

Uploaden van blobs

U kunt een blob maken op basis van een lokaal bestand, opname-eigenschappen instellen op de metagegevens van de blob en deze uploaden. Zie De Event Grid-gegevensverbinding gebruiken voor voorbeelden.

Opmerking

  • We raden u ten zeerste aan BlockBlob om gegevens te genereren, omdat het gebruik AppendBlob kan leiden tot onverwacht gedrag.
  • Het gebruik van de Azure Data Lake Gen2-opslag-SDK vereist het uploaden van bestanden CreateFile en Flush aan het einde, waarbij de parameter 'sluiten' is ingesteld op true. Zie De Event Grid-gegevensverbinding gebruiken voor een gedetailleerd voorbeeld van het juiste gebruik van de Data Lake Gen2 SDK.
  • Het activeren van opname na een CopyBlob bewerking wordt niet ondersteund voor opslagaccounts waarvoor de hiërarchische naamruimtefunctie is ingeschakeld.
  • Wanneer het Event Hub-eindpunt de ontvangst van een gebeurtenis niet bevestigt, activeert Azure Event Grid een mechanisme voor opnieuw proberen. Als deze levering van nieuwe pogingen mislukt, kan Event Grid de niet-bezorgde gebeurtenissen naar een opslagaccount sturen door middel van een proces van dead-lettering. Zie De bezorging van Event Grid-berichten en probeer het opnieuw voor meer informatie.
  • Het gebruik van de OpenWrite-API om naar een blob te schrijven wordt niet aanbevolen, omdat er een melding voor een lege blob wordt geactiveerd en een lege blobfout wordt veroorzaakt. Bovendien kunt u de stream slechts één keer leegmaken om dubbele meldingen en meerdere opnames van dezelfde blob te voorkomen.
  • Azure Data Explorer probeert dubbele meldingen uit te filteren voor dezelfde blob die wordt verzonden door upstreamservices, zoals Event Grid of Storage. Wanneer er een dubbele gebeurtenis wordt gedetecteerd, wordt de opname overgeslagen en wordt de fout BlobAlreadyReceived_DuplicateEventGridNotificationgeregistreerd, wat betekent dat de blob al wordt verwerkt.

Naam van blobs wijzigen

Wanneer u ADLSv2 gebruikt, kunt u de naam van een blob wijzigen om blobopname naar Azure Data Explorer te activeren. Zie Bijvoorbeeld De naam van blobs wijzigen.

Opmerking

  • Het wijzigen van de naam van mappen is mogelijk in ADLSv2, maar activeert geen gebeurtenissen waarvan de naam van de blob is gewijzigd en de opname van blobs in de map. Als u blobs wilt opnemen na het wijzigen van de naam, wijzigt u de naam van de gewenste blobs rechtstreeks.
  • Als u filters hebt gedefinieerd om specifieke onderwerpen bij te houden tijdens het maken van de gegevensverbinding of tijdens het handmatig maken van Event Grid-resources, worden deze filters toegepast op het pad van het doelbestand.

Blobs verwijderen met behulp van de opslaglevenscyclus

Logica die is ingebouwd in Azure Data Explorer, verwijdert de blobs niet na opname. Gebruik de levenscyclus van Azure Blob Storage om uw blobverwijdering te beheren. Het is raadzaam om de blobs drie tot vijf dagen te bewaren.

Bekende Problemen met Event Grid

Werken zonder lokale verificatie

Als lokale verificatie is uitgeschakeld in de Event Hubs-naamruimte die de Event Hub bevat die wordt gebruikt voor streamingmeldingen, gebruikt u de volgende stappen om ervoor te zorgen dat gegevens correct stromen van de opslag naar de Event Hub met behulp van beheerde identiteiten:

  1. Wijs een door het systeem toegewezen beheerde identiteit toe aan het Event Grid-systeemonderwerp van het opslagaccount. Zie voor meer informatie Beheerde identiteit inschakelen voor systeemonderwerpen.
  2. Verdeel de machtigingen voor de afzender van de beheerde identiteit door deze toe te wijzen aan de rol Azure Event Hubs-gegevenszender op de Event Hub . Zie Identiteit toevoegen aan Azure-rollen op bestemmingen voor meer informatie.
  3. Zorg ervoor dat het Event Grid-abonnement beheerde identiteit gebruikt voor het leveren van gebeurtenissen. Zie Gebeurtenisabonnementen maken die een identiteit gebruiken voor meer informatie.

Configureer bovendien de Event Grid-gegevensverbinding voor het gebruik van verificatie van beheerde identiteiten, zodat Azure Data Explorer meldingen van de Event Hub kan ontvangen.

Event Grid-opname instellen op bestanden die zijn geëxporteerd uit Azure Data Explorer

Wanneer u Azure Data Explorer gebruikt om de bestanden te exporteren die worden gebruikt voor event grid-opname, moet u rekening houden met:

  • Event Grid-meldingen worden niet geactiveerd als de verbindingsreeks die is opgegeven voor de exportopdracht of de verbindingsreeks die aan een externe tabel wordt geleverd, een verbindingsreeks is in ADLS Gen2-indeling (bijvoorbeeld abfss://filesystem@accountname.dfs.core.windows.net) maar het opslagaccount niet is ingeschakeld voor hiërarchische naamruimte.
  • Als het account niet is ingeschakeld voor hiërarchische naamruimte, moet de verbindingsreeks de Blob Storage-indeling gebruiken (bijvoorbeeld https://accountname.blob.core.windows.net). De export werkt zoals verwacht, zelfs wanneer u de ADLS Gen2-verbindingsreeks gebruikt, maar meldingen worden niet geactiveerd en Event Grid-opname werkt niet.

Opslag-gebeurtenissen uit aangepaste onderdelen emuleren

Wanneer u aangepaste onderdelen gebruikt om Azure Storage-gebeurtenissen te emuleren, moeten de geëmuleerde gebeurtenissen strikt voldoen aan het Azure Blob Storage-gebeurtenisschema, omdat Azure Data Explorer gebeurtenissen negeert die niet kunnen worden geparseerd door de Event Grid SDK.