Dataanslutning för Event Grid
Event Grid-inmatning är en pipeline som lyssnar på Azure-lagringen och uppdaterar Azure Data Explorer för att hämta information när prenumerationshändelser inträffar. Azure Data Explorer erbjuder kontinuerlig inmatning från Azure Storage (Blob Storage och ADLSv2) med Azure Event Grid prenumeration för meddelanden som skapats av blobar eller blobar som har bytt namn och strömma dessa meddelanden till Azure Data Explorer via en Azure Event Hubs.
Event Grid-inmatningspipelinen går igenom flera steg. Du skapar en måltabell i Azure Data Explorer där data i ett visst format matas in. Sedan skapar du en Event Grid-dataanslutning i Azure Data Explorer. Event Grid-dataanslutningen måste känna till information om händelseroutning , till exempel vilken tabell som data ska skickas till och tabellmappningen. Du anger också inmatningsegenskaper som beskriver de data som ska matas in, måltabellen och mappningen. Du kan generera exempeldata och ladda upp blobar eller byta namn på blobar för att testa anslutningen. Ta bort blobar efter inmatning.
Event Grid-inmatning kan hanteras via Azure Portal, med hjälp av inmatningsguiden, programmatiskt med C# eller Python eller med Azure Resource Manager-mallen.
Allmän information om datainmatning i Azure Data Explorer finns i Översikt över Datainmatning i Azure Data Explorer.
Autentiseringsmekanismer för Azure Data Explorer-dataanslutning
-
Hanterad identitetsbaserad dataanslutning (rekommenderas): Att använda en hanterad identitetsbaserad dataanslutning är det säkraste sättet att ansluta till datakällor. Den ger fullständig kontroll över möjligheten att hämta data från en datakälla.
Konfiguration av en dataanslutning med hanterad identitet kräver följande steg:
- Lägg till en hanterad identitet i klustret.
- Bevilja behörigheter till den hanterade identiteten på datakällan.
- Ange en princip för hanterad identitet på måldatabaserna.
- Skapa en dataanslutning med hjälp av den hanterade identitetsautentiseringen för att hämta data.
Varning
Om behörigheterna för hanterad identitet tas bort från datakällan inaktiveras dataanslutningen och kan inte hämta data från datakällan.
- Nyckelbaserad dataanslutning: Om en hanterad identitet inte anges i dataanslutningen är anslutningen automatiskt standard för nyckelbaserad autentisering. Nyckelbaserade anslutningar hämtar data med hjälp av en resurs anslutningssträng, till exempel Azure Event Hubs anslutningssträng. Azure Data Explorer genererar resursen anslutningssträng för den angivna resursen och sparar den på ett säkert sätt i dataanslutningen. Anslutningssträng används sedan för att hämta data från datakällan.
Varning
Om nyckeln roteras inaktiveras dataanslutningen och kan inte hämta data från datakällan. Åtgärda problemet genom att uppdatera eller återskapa dataanslutningen.
- Så att mi kan hämta data från Azure Storage bör den ha minst:
- Azure Event Hubs datamottagare på Azure Event Hubs.
- Storage Blob Data Reader på Azure Storage-kontot.
Dataformat
- Se format som stöds.
- Se komprimering som stöds.
- Den ursprungliga okomprimerade datastorleken ska vara en del av blobmetadata, annars beräknar Azure Data Explorer den. Den okomprimerade storleksgränsen för inmatning per fil är 6 GB.
Anteckning
Event Grid-meddelandeprenumeration kan anges på Azure Storage-konton för BlobStorage
, StorageV2
eller Data Lake Storage Gen2.
Inmatningsegenskaper
Du kan ange inmatningsegenskaper för blobinmatningen via blobmetadata. Du kan ange följande egenskaper:
Egenskap | Beskrivning |
---|---|
rawSizeBytes |
Storleken på rådata (okomprimerade) data. För Avro/ORC/Parquet är det storleken innan formatspecifik komprimering tillämpas. Ange den ursprungliga datastorleken genom att ange den här egenskapen till den okomprimerade datastorleken i byte. |
kustoDatabase |
Måldatabasens skiftlägeskänsliga namn. Som standard matas data in i måldatabasen som är associerad med dataanslutningen. Använd den här egenskapen för att åsidosätta standarddatabasen och skicka data till en annan databas. För att göra det måste du först konfigurera anslutningen som en anslutning med flera databaser. |
kustoTable |
Det skiftlägeskänsliga namnet på den befintliga måltabellen. Åsidosätter uppsättningen Table i fönstret Data Connection . |
kustoDataFormat |
Dataformat. Åsidosätter uppsättningen Data format i fönstret Data Connection . |
kustoIngestionMappingReference |
Namnet på den befintliga inmatningsmappningen som ska användas. Åsidosätter uppsättningen Column mapping i fönstret Data Connection . |
kustoIgnoreFirstRecord |
Om det är inställt på true ignorerar Kusto den första raden i bloben. Använd i tabellformatdata (CSV, TSV eller liknande) för att ignorera rubriker. |
kustoExtentTags |
Sträng som representerar taggar som ska kopplas till den resulterande omfattningen. |
kustoCreationTime |
Åsidosätter tid för att skapa omfattning för bloben, formaterad som en ISO 8601-sträng. Använd för återfyllning. |
Händelseroutning
När du skapar en dataanslutning till klustret anger du routning för var inmatade data ska skickas. Standardroutningen är till måltabellen som anges i anslutningssträng som är associerad med måldatabasen. Standardroutningen för dina data kallas även statisk routning. Du kan ange en alternativ routning för dina data med hjälp av händelsedataegenskaperna.
Dirigera händelsedata till en alternativ databas
Routning av data till en alternativ databas är inaktiverad som standard. Om du vill skicka data till en annan databas måste du först ange anslutningen som en anslutning med flera databaser. Du kan göra detta i Azure Portal, C#, Python eller en ARM-mall. Användaren, gruppen, tjänstens huvudnamn eller hanterade identitet som används för att tillåta databasroutning måste minst ha deltagarrollen och skriva behörigheter i klustret. Mer information finns i Skapa en Event Grid-dataanslutning för Azure Data Explorer.
Ange egenskapen Databasinmatning för att ange en alternativ databas.
Varning
Om du anger en alternativ databas utan att ställa in anslutningen som en dataanslutning med flera databaser misslyckas inmatningen.
Dirigera händelsedata till en alternativ tabell
När du konfigurerar en bloblagringsanslutning till Azure Data Explorer kluster anger du måltabellegenskaper:
- tabellnamn
- dataformat
- mapping
Du kan också ange måltabellegenskaper för varje blob med hjälp av blobmetadata. Data dirigeras dynamiskt enligt inmatningsegenskaperna.
Exemplet nedan visar hur du anger inmatningsegenskaper för blobmetadata innan du laddar upp dem. Blobar dirigeras till olika tabeller.
Dessutom kan du ange måldatabasen. En Event Grid-dataanslutning skapas i kontexten för en specifik databas. Därför är den här databasen dataanslutningens standarddatabasroutning. Om du vill skicka data till en annan databas anger du inmatningsegenskapen KustoDatabase och anger dataanslutningen som en dataanslutning med flera databaser. Routning av data till en annan databas är inaktiverat som standard (tillåts inte). Om du anger en databasinmatningsegenskap som skiljer sig från dataanslutningens databas, utan att tillåta dataroutning till flera databaser (om anslutningen anges som en dataanslutning med flera databaser), misslyckas datainmatningen.
Mer information finns i ladda upp blobar.
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>")));
Ladda upp blobar
Du kan skapa en blob från en lokal fil, ange inmatningsegenskaper till blobmetadata och ladda upp den. Exempel finns i Använda Event Grid-dataanslutningen.
Anteckning
- Vi rekommenderar starkt att du använder
BlockBlob
för att generera data, eftersom användningAppendBlob
kan leda till oväntat beteende. - Användning av Azure Data Lake Gen2 Storage SDK kräver att du använder
CreateFile
för att ladda upp filer ochFlush
i slutet med parametern close inställd påtrue
. Ett detaljerat exempel på korrekt användning av Data Lake Gen2 SDK finns i Använda Event Grid-dataanslutningen. - Utlösande inmatning efter en
CopyBlob
åtgärd stöds inte för lagringskonton som har funktionen för hierarkisk namnrymd aktiverad på sig. - När händelsehubbens slutpunkt inte bekräftar mottagandet av en händelse aktiverar Azure Event Grid en mekanism för återförsök. Om leveransen av det här återförsöket misslyckas kan Event Grid leverera de händelser som inte har levererats till ett lagringskonto med hjälp av obeställbara meddelanden. Mer information finns i Leverans av Event Grid-meddelanden och försök igen.
Byta namn på blobar
När du använder ADLSv2 kan du byta namn på en blob för att utlösa blobinmatning till Azure Data Explorer. Se till exempel Byt namn på blobar.
Anteckning
- Katalogbyte är möjligt i ADLSv2, men det utlöser inte blob omdöpta händelser och inmatning av blobar i katalogen. Om du vill mata in blobar efter namnbytet byter du direkt namn på önskade blobar.
- Om du har definierat filter för att spåra specifika ämnen när du skapar dataanslutningen eller när du skapar Event Grid-resurser manuellt tillämpas dessa filter på målfilens sökväg.
Ta bort blobar med lagringslivscykeln
Azure Data Explorer tar inte bort blobarna efter inmatningen. Använd Azure Blob Storage-livscykeln för att hantera blobborttagningen. Vi rekommenderar att du behåller blobarna i tre till fem dagar.
Kända Event Grid-problem
- Observera följande när du använder Azure Data Explorer för att exportera de filer som används för Event Grid-inmatning:
- Event Grid-meddelanden utlöses inte om anslutningssträng som tillhandahålls till exportkommandot eller anslutningssträng som tillhandahålls till en extern tabell är en anslutningssträng i ADLS Gen2-format (till exempel
abfss://filesystem@accountname.dfs.core.windows.net
) men lagringskontot inte är aktiverat för hierarkisk namnrymd. - Om kontot inte är aktiverat för hierarkisk namnrymd måste anslutningssträng använda Blob Storage-formatet (till exempel
https://accountname.blob.core.windows.net
). Exporten fungerar som förväntat även när du använder ADLS Gen2-anslutningssträng, men meddelanden utlöses inte och Event Grid-inmatning fungerar inte.
- Event Grid-meddelanden utlöses inte om anslutningssträng som tillhandahålls till exportkommandot eller anslutningssträng som tillhandahålls till en extern tabell är en anslutningssträng i ADLS Gen2-format (till exempel