Share via


Gegevens opnemen met de Serilog-sink in Azure Data Explorer

Belangrijk

Deze connector kan worden gebruikt in realtime analyses in Microsoft Fabric. Gebruik de instructies in dit artikel met de volgende uitzonderingen:

Serilog is een populair framework voor logboekregistratie voor .NET-toepassingen. Met Serilog kunnen ontwikkelaars bepalen welke logboekinstructies worden uitgevoerd met willekeurige granulariteit op basis van de naam, het logboekniveau en het berichtpatroon van de logboekregistratie. De Serilog-sink, ook wel een appender genoemd, voor Azure Data Explorer streamt uw logboekgegevens naar Azure Data Explorer, waar u uw logboeken in realtime kunt analyseren en visualiseren.

In dit artikel leert u het volgende:

Zie Overzicht van gegevensconnectors voor een volledige lijst met gegevensconnectors.

Vereisten

Uw omgeving instellen

In deze sectie bereidt u uw omgeving voor op het gebruik van de Serilog-sink.

Het pakket installeren

Voeg het NuGet-pakket Serilog.Sinks.AzureDataExplorer toe. Gebruik de opdracht Install-Package de naam van het NuGet-pakket op te geven.

Install-Package Serilog.Sinks.AzureDataExplorer

Een Microsoft Entra-app-registratie maken

Microsoft Entra toepassingsverificatie wordt gebruikt voor toepassingen die toegang moeten hebben tot Azure Data Explorer zonder dat er een gebruiker aanwezig is. Als u gegevens wilt opnemen met behulp van de Serilog-connector, moet u een Microsoft Entra service-principal maken en registreren en deze principal vervolgens autoriseren om gegevens op te nemen in een Azure Data Explorer-database.

  1. Gebruik uw Azure Data Explorer-cluster en volg stap 1-7 in Een Microsoft Entra toepassingsregistratie maken in Azure Data Explorer.
  2. Sla de volgende waarden op voor gebruik in latere stappen:
    • (Client-)id van de app
    • (Tenant-)id van de map
    • Waarde van sleutel van clientgeheim

De Microsoft Entra-app machtigingen verlenen

  1. Maak op het querytabblad van de webgebruikersinterface verbinding met uw cluster. Zie Clusters toevoegen voor meer informatie over het maken van verbinding.

  2. Blader naar de database waarin u gegevens wilt opnemen.

  3. Voer de volgende beheeropdracht uit, waarbij u de tijdelijke aanduidingen vervangt. Vervang DatabaseName door de naam van de doeldatabase en ApplicationID door de eerder opgeslagen waarde. Met deze opdracht verleent de app de rol ingestor van de database. Zie Databasebeveiligingsrollen beheren voor meer informatie.

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

    Notitie

    De laatste parameter is een tekenreeks die wordt weergegeven als notities wanneer u een query uitvoert op de rollen die zijn gekoppeld aan een database. Zie Bestaande beveiligingsrollen weergeven voor meer informatie.

Een tabel en opnametoewijzing maken

Maak een doeltabel voor de binnenkomende gegevens en wijs de opgenomen gegevenskolommen toe aan de kolommen in de doeltabel. In de volgende stappen komen het tabelschema en de toewijzing overeen met de gegevens die zijn verzonden vanuit de voorbeeld-app.

  1. Voer in de query-editor de volgende opdracht voor het maken van tabellen uit en vervang de tijdelijke aanduiding TableName door de naam van de doeltabel:

    .create table <TableName> (Timestamp: datetime, Level: string, Message: string, Exception: string, Properties: dynamic, Position: dynamic, Elapsed: int)
    
  2. Voer de volgende opdracht voor opnametoewijzing uit, waarbij u de tijdelijke aanduidingen TableName vervangt door de naam van de doeltabel en TableNameMapping door de naam van de opnametoewijzing:

    .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}]'
    

De Serilog-sink toevoegen aan uw app

Gebruik de volgende stappen om:

  • De Serilog-sink toevoegen aan uw app
  • De variabelen configureren die door de sink worden gebruikt
  • De app bouwen en uitvoeren
  1. Voeg de volgende code toe aan uw app:

    using Serilog.Sinks.AzureDataExplorer;
    
  2. Configureer de Serilog-sink, waarbij tijdelijke aanduidingen worden vervangen met behulp van de informatie in de volgende tabel:

    var log = new LoggerConfiguration()
    .WriteTo.AzureDataExplorerSink(new AzureDataExplorerSinkOptions
    {
        IngestionEndpointUri = "<cluster>",
        DatabaseName = "<MyDatabase>",
        TableName = "<MyTable>",
        BufferBaseFileName = "<BufferBaseFileName>"
    })
    .CreateLogger();
    
    Variabele Beschrijving
    IngestionEndPointUri De opname-URI voor uw cluster in de indeling https://ingest-<cluster>.<region.kusto.windows.net>.
    Databasenaam De hoofdlettergevoelige naam van de doeldatabase.
    TableName De hoofdlettergevoelige naam van een bestaande doeltabel. SerilogTest is bijvoorbeeld de naam van de tabel die is gemaakt in Een tabel en opnametoewijzing maken.
    Appid De client-id van de toepassing die is vereist voor verificatie. U hebt deze waarde opgeslagen in Een Microsoft Entra App-registratie maken.
    AppKey De toepassingssleutel die is vereist voor verificatie. U hebt deze waarde opgeslagen in Een Microsoft Entra App-registratie maken.
    Tenant De id van de tenant waarin de toepassing is geregistreerd. U hebt deze waarde opgeslagen in Een Microsoft Entra App-registratie maken.
    BufferBaseFileName Optionele basisbestandsnaam voor het bufferbestand. Stel deze waarde in als u wilt dat uw logboeken duurzaam zijn tegen verlies als gevolg van verbindingsfouten met uw cluster. Bijvoorbeeld C:/Temp/Serilog.

    Zie Sinkopties voor meer opties.

  3. Gegevens verzenden naar Azure Data Explorer met behulp van de Serilog-sink. Bijvoorbeeld:

    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. Bouw de app en voer deze uit. Als u bijvoorbeeld Visual Studio gebruikt, drukt u op F5.

  5. Controleer of de gegevens zich in uw cluster bevinden. Voer in de webinterface de volgende query uit en vervang de tijdelijke aanduiding door de naam van de tabel die eerder is gebruikt:

    <TableName>
    | take 10
    

De voorbeeld-app uitvoeren

Gebruik de voorbeeldlogboekgenerator-app als voorbeeld van het configureren en gebruiken van de Serilog-sink.

  1. Kloon de Git-opslagplaats van de Serilog-sink met behulp van de volgende git-opdracht:

    git clone https://github.com/Azure/serilog-sinks-azuredataexplorer
    
  2. Stel de volgende omgevingsvariabelen in om de Serilog-sink te configureren:

    Variabele Beschrijving
    IngestionEndPointUri De opname-URI voor uw cluster in de indeling https://ingest-<cluster>.<region.kusto.windows.net>.
    Databasenaam De hoofdlettergevoelige naam van de doeldatabase.
    TableName De hoofdlettergevoelige naam van een bestaande doeltabel. SerilogTest is bijvoorbeeld de naam van de tabel die is gemaakt in Een tabel en opnametoewijzing maken.
    Appid Toepassingsclient-id vereist voor verificatie. U hebt deze waarde opgeslagen in Een Microsoft Entra-app-registratie maken.
    AppKey Toepassingssleutel vereist voor verificatie. U hebt deze waarde opgeslagen in Een Microsoft Entra-app-registratie maken.
    Tenant De id van de tenant waarin de toepassing is geregistreerd. U hebt deze waarde opgeslagen in Een Microsoft Entra-app-registratie maken.
    BufferBaseFileName De basisbestandsnaam voor het bufferbestand. Stel deze waarde in als u wilt dat uw logboeken duurzaam zijn tegen verlies als gevolg van verbindingsfouten met uw cluster. Bijvoorbeeld: C:/Temp/Serilog

    U kunt de omgevingsvariabelen handmatig instellen of met behulp van de volgende opdrachten:

    $env:ingestionURI="<ingestionURI>"
    $env:appId="<appId>"
    $env:appKey="<appKey>"
    $env:tenant="<tenant>"
    $env:databaseName="<databaseName>"
    $env:tableName="<tableName>"
    
  3. Navigeer in uw terminal naar de hoofdmap van de gekloonde opslagplaats en voer de volgende .NET-opdracht uit om de app te bouwen:

    dotnet build src
    
  4. Navigeer in uw terminal naar de map voorbeelden en voer de volgende .NET-opdracht uit om de app uit te voeren:

    dotnet build run
    
  5. Selecteer in de webgebruikersinterface de doeldatabase en voer de volgende query uit om de opgenomen gegevens te verkennen, waarbij u de tijdelijke aanduiding TableName vervangt door de naam van de doeltabel:

    <TableName>
    | take 10
    

    De uitvoer moet er ongeveer uitzien als in de volgende afbeelding:

    Schermopname van tabel met de functie take 10 en resultaten.