Inserire dati con il sink NLog in Azure Esplora dati
NLog è una piattaforma di registrazione flessibile e gratuita per varie piattaforme .NET, tra cui .NET Standard. NLog consente di scrivere in diverse destinazioni, ad esempio un database, un file o una console. Con NLog è possibile modificare la configurazione della registrazione in tempo reale. Il sink NLog è una destinazione per NLog che consente di inviare i messaggi di log a un cluster KQL. Il plug-in si basa sulla libreria Azure-Kusto-Data e offre un modo efficiente per eseguire il sink dei log nel cluster.
In questo articolo si apprenderà come inserire dati con il sink nLog.
Per un elenco completo dei connettori dati, vedere Panoramica dei connettori dati.
Prerequisiti
Configurazione dell'ambiente
In questa sezione si preparerà l'ambiente per l'uso del connettore NLog.
Installare il pacchetto
Aggiungere il pacchetto NuGet NLog.Azure.Kusto . Usare il comando Install-Package che specifica il nome del pacchetto NuGet.
Install-Package NLog.Azure.Kusto
Creare una registrazione dell'app Microsoft Entra
L'autenticazione dell'applicazione Microsoft Entra viene usata per le applicazioni che devono accedere alla piattaforma senza un utente presente. Per ottenere dati usando il connettore NLog, è necessario creare e registrare un'entità servizio Microsoft Entra e quindi autorizzare questa entità a ottenere dati da un database.
L'entità servizio Microsoft Entra può essere creata tramite il portale di Azure o a livello di programmazione, come nell'esempio seguente.
Questa entità servizio sarà l'identità usata dal connettore per scrivere dati nella tabella in Kusto. Successivamente si concedono le autorizzazioni per questa entità servizio per accedere alle risorse Kusto.
Accedere alla sottoscrizione di Azure tramite l'interfaccia della riga di comando di Azure. Eseguire quindi l'autenticazione nel browser.
az login
Scegliere la sottoscrizione per ospitare l'entità. Questo passaggio è necessario quando si hanno più sottoscrizioni.
az account set --subscription YOUR_SUBSCRIPTION_GUID
Creare l'entità servizio. In questo esempio l'entità servizio è denominata
my-service-principal
.az ad sp create-for-rbac -n "my-service-principal" --role Contributor --scopes /subscriptions/{SubID}
Dai dati JSON restituiti copiare
appId
,password
etenant
per un uso futuro.{ "appId": "1234abcd-e5f6-g7h8-i9j0-1234kl5678mn", "displayName": "my-service-principal", "name": "my-service-principal", "password": "1234abcd-e5f6-g7h8-i9j0-1234kl5678mn", "tenant": "1234abcd-e5f6-g7h8-i9j0-1234kl5678mn" }
È stata creata l'applicazione Microsoft Entra e l'entità servizio.
Salvare i valori seguenti da usare nei passaggi successivi: * ID applicazione (client) * ID directory (tenant) * Valore della chiave privata client
Concedere le autorizzazioni dell'app Microsoft Entra
Nell'ambiente di query eseguire il comando di gestione seguente, sostituendo i segnaposto. Sostituire DatabaseName con il nome del database di destinazione e ApplicationID con il valore salvato in precedenza. Questo comando concede all'app il ruolo ingestor del database. Per altre informazioni, vedere Gestire i ruoli di sicurezza del database.
.add database <DatabaseName> ingestors ('aadapp=<ApplicationID>') 'NLOG Azure App Registration role'
Nota
L'ultimo parametro è una stringa che viene visualizzata come note quando si eseguono query sui ruoli associati a un database. Per altre informazioni, vedere Visualizzare i ruoli di sicurezza esistenti.
Creare una tabella e un mapping di inserimento
Creare una tabella di destinazione per i dati in ingresso.
Nell'editor di query eseguire il comando di creazione della tabella seguente, sostituendo il segnaposto TableName con il nome della tabella di destinazione:
.create table <TableName> (Timestamp:datetime, Level:string, Message:string, FormattedMessage:dynamic, Exception:string, Properties:dynamic)
Aggiungere la configurazione di destinazione all'app
Seguire questa procedura per:
- Aggiungere la configurazione di destinazione
- Compilare ed eseguire l'app
Aggiungere la destinazione nel file di configurazione NLog.
<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>
Per altre opzioni, vedere Connettore Nlog.
Inviare dati usando il sink NLog. Ad esempio:
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);
Compilare ed eseguire l'app. Ad esempio, se si usa Visual Studio, premere F5.
Verificare che i dati si trovano nel cluster. Nell'ambiente di query eseguire la query seguente sostituendo il segnaposto con il nome della tabella usata in precedenza:
<TableName> | take 10
Eseguire l'app di esempio
Usare l'app generatore di log di esempio come esempio che illustra come configurare e usare il sink NLog.
Clonare il repository Git del sink NLog usando il comando git seguente:
git clone https://github.com/Azure/azure-kusto-nlog-sink.git
Impostare le variabili di ambiente seguenti, in modo che il file di configurazione NLog possa leggerli immediatamente dall'ambiente:
Variabile Descrizione INGEST_ENDPOINT URI di inserimento per la destinazione dati. Questo URI è stato copiato nei prerequisiti. DATABASE Nome con distinzione tra maiuscole e minuscole del database di destinazione. APP_ID ID client dell'applicazione necessario per l'autenticazione. Questo valore è stato salvato in Creare una registrazione dell'app Microsoft Entra. APP_KEY Chiave dell'applicazione necessaria per l'autenticazione. Questo valore è stato salvato in Creare una registrazione dell'app Microsoft Entra. AZURE_TENANT_ID ID del tenant in cui è registrata l'applicazione. Questo valore è stato salvato in Creare una registrazione dell'app Microsoft Entra. È possibile impostare le variabili di ambiente manualmente o usando i comandi seguenti:
Nel terminale passare alla cartella radice del repository clonato ed eseguire il comando seguente
dotnet
per compilare l'app:cd .\NLog.Azure.Kusto.Samples\ dotnet build
Nel terminale passare alla cartella samples ed eseguire il comando seguente
dotnet
per eseguire l'app:dotnet run
Nell'ambiente di query selezionare il database di destinazione ed eseguire la query seguente per esplorare i dati inseriti.
ADXNLogSample | take 10
L'output dovrebbe essere simile all'immagine seguente: