Delen via


Gegevens opnemen met de NLog-sink in Azure Data Explorer

NLog is een flexibel en gratis logboekregistratieplatform voor verschillende .NET-platforms, waaronder .NET Standard. Met NLog kunt u schrijven naar verschillende doelen, zoals een database, bestand of console. Met NLog kunt u de logboekconfiguratie on-the-fly wijzigen. De NLog-sink is een doel voor NLog waarmee u uw logboekberichten naar een KQL-cluster kunt verzenden. De invoegtoepassing is gebouwd op basis van de Azure-Kusto-Data-bibliotheek en biedt een efficiƫnte manier om uw logboeken naar uw cluster te sinken.

In dit artikel leert u hoe u gegevens opneemt met nLog sink.

Voor een volledige lijst met gegevensconnectors, zie Overzicht van gegevensconnectors.

Vereiste voorwaarden

Uw omgeving instellen

In deze sectie bereidt u uw omgeving voor op het gebruik van de NLog-connector.

Installeer het pakket

Voeg het NLog.Azure.Kusto NuGet-pakket toe. Gebruik de opdracht Install-Package om de naam van het NuGet-pakket op te geven.

Install-Package NLog.Azure.Kusto

Een Microsoft Entra-app-registratie maken

Microsoft Entra-toepassingsverificatie wordt gebruikt voor toepassingen die toegang nodig hebben tot het platform zonder dat een gebruiker aanwezig is. Als u gegevens wilt ophalen met de NLog-connector, moet u een Microsoft Entra-service-principal maken en registreren en deze principal vervolgens autoriseren om gegevens op te halen uit een database.

De Microsoft Entra-service-principal kan worden gemaakt via Azure Portal of programmatisch, zoals in het volgende voorbeeld.

Deze service-principal is de identiteit die door de connector wordt gebruikt voor het schrijven van gegevens in uw tabel in Kusto. U verleent later machtigingen voor deze service-principal voor toegang tot Kusto-resources.

  1. Meld u aan bij uw Azure-abonnement via Azure CLI. Verifieer vervolgens in de browser.

    az login
    
  2. Kies het abonnement om de hoofdgebruiker te hosten. Deze stap is nodig wanneer u meerdere abonnementen hebt.

    az account set --subscription YOUR_SUBSCRIPTION_GUID
    
  3. Maak de service-principal. In dit voorbeeld wordt de service-principal genoemd my-service-principal.

    az ad sp create-for-rbac -n "my-service-principal" --role Contributor --scopes /subscriptions/{SubID}
    
  4. Kopieer vanuit de geretourneerde JSON-gegevens de appId, passworden tenant voor toekomstig gebruik.

    {
      "appId": "00001111-aaaa-2222-bbbb-3333cccc4444",
      "displayName": "my-service-principal",
      "name": "my-service-principal",
      "password": "00001111-aaaa-2222-bbbb-3333cccc4444",
      "tenant": "00001111-aaaa-2222-bbbb-3333cccc4444"
    }
    

U hebt uw Microsoft Entra-toepassing en service-principal gemaakt.

Sla de volgende waarden op die in latere stappen moeten worden gebruikt: * Toepassings-id (client) ID * Map-id (tenant) * Waarde van clientgeheimsleutel

De Microsoft Entra-app-machtigingen verlenen

  1. Voer in uw queryomgeving 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 u de app de rol database ingestor . Zie Databasebeveiligingsrollen beheren voor meer informatie.

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

    Opmerking

    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.

  • Voer in de queryeditor de volgende opdracht voor het maken van tabellen uit, waarbij u de tijdelijke aanduiding TableName vervangt door de naam van de doeltabel:

    .create table <TableName> (Timestamp:datetime, Level:string, Message:string, FormattedMessage:dynamic, Exception:string, Properties:dynamic)
    

De doelconfiguratie toevoegen aan uw app

Voer de volgende stappen uit om:

  • De doelconfiguratie toevoegen
  • De app bouwen en uitvoeren
  1. Voeg het doel toe aan het NLog-configuratiebestand.

    <targets>
        <target name="targettable" xsi:type="TargetTable"
        IngestionEndpointUri="<Connection string>"
        Database="<Database name>"
        TableName="<Table name>"
        ApplicationClientId="<Entra App clientId>"
        ApplicationKey="<Entra App key>"
        Authority="<Entra tenant id>"
        />
    </targets>
    
    ##Rules
    <rules>
        <logger name="*" minlevel="Info" writeTo="adxtarget" />
    </rules>
    

    Zie Nlog-connector voor meer opties.

  2. Gegevens verzenden met behulp van de NLog-sink. Voorbeeld:

    logger.Info("Processed {@Position} in {Elapsed:000} ms.", position, elapsedMs);
    logger.Error(exceptionObj, "This was exception");
    logger.Debug("Processed {@Position} in {Elapsed:000} ms. ", position, elapsedMs);
    logger.Warn("Processed {@Position} in {Elapsed:000} ms. ", position, elapsedMs);
    
  3. Bouw en voer de app uit. Als u bijvoorbeeld Visual Studio gebruikt, drukt u op F5.

  4. Controleer of de gegevens zich in uw cluster bevinden. Voer in uw queryomgeving de volgende query uit, waarbij u de tijdelijke aanduiding vervangt door de naam van de tabel die u eerder hebt gebruikt:

    <TableName>
    | take 10
    

De voorbeeld-app uitvoeren

Gebruik de voorbeeldlogboekgenerator-app als voorbeeld waarin wordt getoond hoe u de NLog-sink configureert en gebruikt.

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

    git clone https://github.com/Azure/azure-kusto-nlog-sink.git
    
  2. Stel de volgende omgevingsvariabelen in, zodat het NLog-configuratiebestand ze direct uit de omgeving kan lezen:

    Variable Description
    INGEST_ENDPOINT De opname-URI voor uw gegevensdoel. U hebt deze URI gekopieerd in de vereisten.
    DATABANK De hoofdlettergevoelige naam van de doeldatabase.
    APP_ID Toepassingsclient-id vereist voor verificatie. U hebt deze waarde opgeslagen in Een Microsoft Entra-app-registratie maken.
    APP_KEY Toepassingssleutel vereist voor verificatie. U hebt deze waarde opgeslagen in Een Microsoft Entra App-registratie maken.
    AZURE_TENANT_ID De id van de tenant waarin de toepassing is geregistreerd. U hebt deze waarde opgeslagen in Een Microsoft Entra App-registratie maken.

    U kunt de omgevingsvariabelen handmatig instellen of de volgende opdrachten gebruiken:

    $env:INGEST_ENDPOINT="<ingestionURI>"
    $env:APP_ID="<appId>"
    $env:APP_KEY="<appKey>"
    $env:AZURE_TENANT_ID="<tenant>"
    $env:DATABASE="<databaseName>"
    
  3. Navigeer in de terminal naar de hoofdmap van de gekloonde opslagplaats en voer de volgende dotnet opdracht uit om de app te bouwen:

    cd .\NLog.Azure.Kusto.Samples\
    dotnet build
    
  4. Navigeer in de terminal naar de map met voorbeelden en voer de volgende dotnet opdracht uit om de app uit te voeren:

    dotnet run
    
  5. Selecteer in uw queryomgeving de doeldatabase en voer de volgende query uit om de opgenomen gegevens te verkennen.

    ADXNLogSample
    | take 10
    

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

    Schermopname van tabel met 10 functies en resultaten