Dela via


Mata in data med Serilog-mottagaren i Azure Data Explorer

Viktigt

Den här anslutningsappen kan användas i realtidsanalys i Microsoft Fabric. Följ anvisningarna i den här artikeln med följande undantag:

Serilog är ett populärt loggningsramverk för .NET-program. Med Serilog kan utvecklare styra vilka logginstruktioner som matas ut med godtycklig kornighet baserat på loggarens namn, loggningsnivå och meddelandemönster. Serilog-mottagaren, även kallad tillägg, för Azure Data Explorer strömmar dina loggdata till Azure Data Explorer, där du kan analysera och visualisera dina loggar i realtid.

I den här artikeln får du lära dig att:

En fullständig lista över dataanslutningar finns i Översikt över dataanslutningar.

Förutsättningar

Konfigurera din miljö

I det här avsnittet förbereder du din miljö för att använda Serilog-mottagaren.

Installera paketet

Lägg till NuGet-paketet Serilog.Sinks.AzureDataExplorer . Använd kommandot Install-Package och ange namnet på NuGet-paketet.

Install-Package Serilog.Sinks.AzureDataExplorer

Skapa en Microsoft Entra appregistrering

Microsoft Entra programautentisering används för program som behöver åtkomst till Azure Data Explorer utan att en användare finns. Om du vill mata in data med hjälp av Serilog-anslutningsappen måste du skapa och registrera ett Microsoft Entra tjänstens huvudnamn och sedan auktorisera det här huvudkontot för att mata in data i en Azure Data Explorer-databas.

  1. Använd ditt Azure Data Explorer-kluster genom att följa steg 1–7 i Skapa en Microsoft Entra programregistrering i Azure Data Explorer.
  2. Spara följande värden som ska användas i senare steg:
    • Program-ID (klient)
    • Katalog-ID (klient)
    • Nyckelvärde för klienthemlighet

Bevilja behörigheter för Microsoft Entra-appen

  1. Anslut till klustret på frågefliken i webbgränssnittet. Mer information om hur du ansluter finns i Lägga till kluster.

  2. Bläddra till den databas där du vill mata in data.

  3. Kör följande hanteringskommando och ersätt platshållarna. Ersätt DatabaseName med namnet på måldatabasen och ApplicationID med det tidigare sparade värdet. Det här kommandot ger appen rollen databasingestor . Mer information finns i Hantera säkerhetsroller för databaser.

    .add database <DatabaseName> ingestors ('aadapp=<ApplicationID>') 'Azure Data Explorer App Registration'
    

    Anteckning

    Den sista parametern är en sträng som visas som anteckningar när du frågar efter de roller som är associerade med en databas. Mer information finns i Visa befintliga säkerhetsroller.

Skapa en tabell och datainmatningsmappning

Skapa en måltabell för inkommande data och mappa de inmatade datakolumnerna till kolumnerna i måltabellen. I följande steg motsvarar tabellschemat och mappningen de data som skickas från exempelappen.

  1. Kör följande kommando för att skapa tabell i frågeredigeraren och ersätt platshållaren TableName med namnet på måltabellen:

    .create table <TableName> (Timestamp: datetime, Level: string, Message: string, Exception: string, Properties: dynamic, Position: dynamic, Elapsed: int)
    
  2. Kör följande inmatningsmappningskommando och ersätt platshållarna TableName med måltabellnamnet och TableNameMapping med namnet på inmatningsmappningen:

    .create table <TableName> ingestion csv mapping '<TableNameMapping>' '[{"Name":"Timestamp","DataType":"","Ordinal":"0","ConstValue":null},{"Name":"Level","DataType":"","Ordinal":"1","ConstValue":null},{"Name":"Message","DataType":"","Ordinal":"2","ConstValue":null},{"Name":"Exception","DataType":"","Ordinal":"3","ConstValue":null},{"Name":"Properties","DataType":"","Ordinal":"4","ConstValue":null},{"Name":"Position","DataType":"","Ordinal":"5","ConstValue":null},{"Name":"Elapsed","DataType":"","Ordinal":"6","ConstValue":null}]'
    

Lägga till Serilog-mottagaren i din app

Använd följande steg för att:

  • Lägga till Serilog-mottagaren i din app
  • Konfigurera variablerna som används av mottagaren
  • Kompilera och köra appen
  1. Lägg till följande kod i din app:

    using Serilog.Sinks.AzureDataExplorer;
    
  2. Konfigurera Serilog-mottagaren och ersätt platshållarna med hjälp av informationen i tabellen som följer:

    var log = new LoggerConfiguration()
    .WriteTo.AzureDataExplorerSink(new AzureDataExplorerSinkOptions
    {
        IngestionEndpointUri = "<cluster>",
        DatabaseName = "<MyDatabase>",
        TableName = "<MyTable>",
        BufferBaseFileName = "<BufferBaseFileName>"
    })
    .CreateLogger();
    
    Variabel Beskrivning
    IngestionEndPointUri Inmatnings-URI:n för klustret i formatklustrethttps://ingest-<>.<region.kusto.windows.net>.
    Databasename Måldatabasens skiftlägeskänsliga namn.
    TableName Det skiftlägeskänsliga namnet på en befintlig måltabell. SerilogTest är till exempel namnet på tabellen som skapades i Skapa en tabell och inmatningsmappning.
    AppId Programklient-ID som krävs för autentisering. Du sparade det här värdet i Skapa en Microsoft Entra appregistrering.
    AppKey Programnyckeln som krävs för autentisering. Du sparade det här värdet i Skapa en Microsoft Entra appregistrering.
    Klientorganisation ID för den klientorganisation där programmet är registrerat. Du sparade det här värdet i Skapa en Microsoft Entra appregistrering.
    BufferBaseFileName Valfritt basfilnamn för buffertfilen. Ange det här värdet om du vill att loggarna ska vara varaktiga mot förlust som resulterar i anslutningsfel till klustret. Till exempel C:/Temp/Serilog.

    Fler alternativ finns i Alternativ för mottagare.

  3. Skicka data till Azure Data Explorer med Serilog-mottagaren. Exempel:

    log.Verbose("Processed {@Position} in {Elapsed:000} ms.", position, elapsedMs);
    log.Information("Processed {@Position} in {Elapsed:000} ms.", position, elapsedMs);
    log.Warning("Processed {@Position} in {Elapsed:000} ms.", position, elapsedMs);
    log.Error(new Exception(), "Processed {@Position} in {Elapsed:000} ms.", position, elapsedMs);
    log.Debug("Processed {@Position} in {Elapsed:000} ms. ", position, elapsedMs);
    
  4. Kompilera och kör appen. Om du till exempel använder Visual Studio trycker du på F5.

  5. Kontrollera att data finns i klustret. Kör följande fråga i webbgränssnittet och ersätt platshållaren med namnet på den tabell som användes tidigare:

    <TableName>
    | take 10
    

Kör exempelappen

Använd exempellogggeneratorappen som ett exempel som visar hur du konfigurerar och använder Serilog-mottagaren.

  1. Klona git-lagringsplatsen för Serilog-mottagaren med följande git-kommando:

    git clone https://github.com/Azure/serilog-sinks-azuredataexplorer
    
  2. Ange följande miljövariabler för att konfigurera Serilog-mottagaren:

    Variabel Beskrivning
    IngestionEndPointUri Inmatnings-URI:n för klustret i formatklustrethttps://ingest-<>.<region.kusto.windows.net>.
    Databasename Måldatabasens skiftlägeskänsliga namn.
    TableName Det skiftlägeskänsliga namnet på en befintlig måltabell. SerilogTest är till exempel namnet på tabellen som skapades i Skapa en tabell och inmatningsmappning.
    AppId Programklient-ID som krävs för autentisering. Du sparade det här värdet i Skapa en Microsoft Entra appregistrering.
    AppKey Programnyckel krävs för autentisering. Du sparade det här värdet i Skapa en Microsoft Entra appregistrering.
    Klientorganisation ID för den klientorganisation där programmet är registrerat. Du sparade det här värdet i Skapa en Microsoft Entra appregistrering.
    BufferBaseFileName Basfilnamnet för buffertfilen. Ange det här värdet om du vill att loggarna ska vara varaktiga mot förlust som resulterar i anslutningsfel till klustret. Till exempel C:/Temp/Serilog

    Du kan ange miljövariablerna manuellt eller med hjälp av följande kommandon:

    $env:ingestionURI="<ingestionURI>"
    $env:appId="<appId>"
    $env:appKey="<appKey>"
    $env:tenant="<tenant>"
    $env:databaseName="<databaseName>"
    $env:tableName="<tableName>"
    
  3. I terminalen navigerar du till rotmappen för den klonade lagringsplatsen och kör följande .NET-kommando för att skapa appen:

    dotnet build src
    
  4. I terminalen navigerar du till exempelmappen och kör följande .NET-kommando för att köra appen:

    dotnet build run
    
  5. I webbgränssnittet väljer du måldatabasen och kör följande fråga för att utforska inmatade data och ersätter platshållaren TableName med namnet på måltabellen:

    <TableName>
    | take 10
    

    Dina utdata bör se ut ungefär så här:

    Skärmbild av tabellen med funktionen take 10 och resultatet.