Dela via


Hämta data med NLog-mottagaren

NLog är en flexibel och kostnadsfri loggningsplattform för olika .NET-plattformar, inklusive .NET-standard. Med NLog kan du skriva till flera mål, till exempel en databas, fil eller konsol. Med NLog kan du ändra loggningskonfigurationen direkt. NLog-mottagaren är ett mål för NLog som gör att du kan skicka dina loggmeddelanden till ett KQL-kluster. Plugin-programmet bygger på Azure-Kusto-Data-biblioteket och ger ett effektivt sätt att sänka loggarna till klustret.

I den här artikeln får du lära dig hur du hämtar data med nLog-mottagare.

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 NLog-anslutningsappen.

Installera -paketet

Lägg till NLog.Azure.Kusto NuGet-paketet. Använd kommandot Install-Package som anger namnet på NuGet-paketet.

Install-Package NLog.Azure.Kusto

Skapa en Microsoft Entra-appregistrering

Microsoft Entra-programautentisering används för program som behöver komma åt plattformen utan att en användare finns. För att hämta data med NLog-anslutningsappen måste du skapa och registrera ett Microsoft Entra-tjänsthuvudnamn och sedan auktorisera det här huvudkontot för att hämta data från en databas.

Microsoft Entra-tjänstens huvudnamn kan skapas via Azure Portal eller programatiskt, som i följande exempel.

Tjänstens huvudnamn är den identitet som används av anslutningsappen för att skriva data i tabellen i Kusto. Du beviljar senare behörigheter för tjänstens huvudnamn för åtkomst till Kusto-resurser.

  1. Logga in på din Azure-prenumeration via Azure CLI. Autentisera sedan i webbläsaren.

    az login
    
  2. Välj den prenumeration som ska vara värd för huvudkontot. Det här steget behövs när du har flera prenumerationer.

    az account set --subscription YOUR_SUBSCRIPTION_GUID
    
  3. Skapa tjänstens huvudnamn. I det här exemplet kallas my-service-principaltjänstens huvudnamn .

    az ad sp create-for-rbac -n "my-service-principal" --role Contributor --scopes /subscriptions/{SubID}
    
  4. Från de returnerade JSON-data kopierar du appId, passwordoch tenant för framtida användning.

    {
      "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"
    }
    

Du har skapat ditt Microsoft Entra-program och tjänstens huvudnamn.

Spara följande värden som ska användas i senare steg: * Program-ID (klient)-ID * Katalog-ID (klient) * Nyckelvärde för klienthemlighet

Bevilja Microsoft Entra-appen behörigheter

  1. Kör följande hanteringskommando i frågemiljön 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 databassäkerhetsroller.

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

    Kommentar

    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 inmatningsmappning

Skapa en tom tabell som måltabell för inkommande data.

Lägga till målkonfigurationen i din app

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

  • Lägg till målkonfigurationen
  • Kompilera och köra appen
  1. Lägg till målet i NLog-konfigurationsfilen.

    <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>
    

    Fler alternativ finns i Nlog-anslutningsprogrammet.

  2. Skicka data med NLog-mottagaren. Till exempel:

    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. Skapa och kör appen. Om du till exempel använder Visual Studio trycker du på F5.

  4. Kontrollera att data finns i klustret. Kör följande fråga i frågemiljön och ersätt platshållaren med namnet på den tabell som du använde tidigare:

    <TableName>
    | take 10
    

Kör exempelappen

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

  1. Klona NLog-mottagarens git-lagringsplats med följande git-kommando:

    git clone https://github.com/Azure/azure-kusto-nlog-sink.git
    
  2. Ange följande miljövariabler så att NLog-konfigurationsfilen kan läsa dem direkt från miljön:

    Olika beskrivning
    INGEST_ENDPOINT Inmatnings-URI:n för datamålet. Du har kopierat den här URI:n i förutsättningarna.
    DATABAS Måldatabasens skiftlägeskänsliga namn.
    APP_ID Programklient-ID som krävs för autentisering. Du sparade det här värdet i Skapa en Microsoft Entra-appregistrering.
    APP_KEY Programnyckel krävs för autentisering. Du sparade det här värdet i Skapa en Microsoft Entra-appregistrering.
    AZURE_TENANT_ID ID:t för klientorganisationen där programmet är registrerat. Du sparade det här värdet i Skapa en Microsoft Entra-appregistrering.

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

    $env:INGEST_ENDPOINT="<ingestionURI>"
    $env:APP_ID="<appId>"
    $env:APP_KEY="<appKey>"
    $env:AZURE_TENANT_ID="<tenant>"
    $env:DATABASE="<databaseName>"
    
  3. I terminalen går du till rotmappen för den klonade lagringsplatsen och kör följande dotnet kommando för att skapa appen:

    cd .\NLog.Azure.Kusto.Samples\
    dotnet build
    
  4. I terminalen går du till exempelmappen och kör följande dotnet kommando för att köra appen:

    dotnet run
    
  5. I frågemiljön väljer du måldatabasen och kör följande fråga för att utforska inmatade data.

    ADXNLogSample
    | take 10
    

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

    Skärmbild av tabellen med funktionen take 10 och resultat