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
- .NET SDK 6.0 eller senare
- En Azure-prenumeration Skapa ett kostnadsfritt Azure-konto.
- En KQL-databas i Microsoft Fabric. Kopiera URI:n för den här databasen med hjälp av anvisningarna i Access an existing KQL database (Åtkomst till en befintlig KQL-databas).
- En KQL-frågeuppsättning. Detta kallas för din frågemiljö.
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.
Logga in på din Azure-prenumeration via Azure CLI. Autentisera sedan i webbläsaren.
az login
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
Skapa tjänstens huvudnamn. I det här exemplet kallas
my-service-principal
tjänstens huvudnamn .az ad sp create-for-rbac -n "my-service-principal" --role Contributor --scopes /subscriptions/{SubID}
Från de returnerade JSON-data kopierar du
appId
,password
ochtenant
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
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
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.
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);
Skapa och kör appen. Om du till exempel använder Visual Studio trycker du på F5.
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.
Klona NLog-mottagarens git-lagringsplats med följande git-kommando:
git clone https://github.com/Azure/azure-kusto-nlog-sink.git
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:
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
I terminalen går du till exempelmappen och kör följande
dotnet
kommando för att köra appen:dotnet run
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: