Condividi tramite


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

  • .NET SDK 6.0 o versione successiva
  • Un cluster e un database di Azure Esplora dati

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 del pacchetto di installazione 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 a questa entità servizio per accedere alle risorse Kusto.

  1. Accedere alla sottoscrizione di Azure usando l'interfaccia della riga di comando di Azure. Eseguire quindi l'autenticazione nel browser.

    az login
    
  2. Scegliere la sottoscrizione per ospitare l'entità di sicurezza. Questo passaggio è necessario quando si hanno più sottoscrizioni.

    az account set --subscription YOUR_SUBSCRIPTION_GUID
    
  3. Creare l'entità servizio. In questo esempio l'entità servizio viene chiamata my-service-principal.

    az ad sp create-for-rbac -n "my-service-principal" --role Contributor --scopes /subscriptions/{SubID}
    
  4. Dai dati JSON restituiti copiare appId, password e tenant per un uso futuro.

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

L'applicazione Microsoft Entra e l'entità servizio sono state create.

Salvare i seguenti valori da usare nei passaggi successivi: * (client) ID applicazione * ID Directory (tenant) * Client del Valore della chiave segreta

Concedere autorizzazioni all'applicazione Microsoft Entra

  1. Nell’ambiente query, eseguire il seguente comando di gestione, 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 Gestisci 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 in forma di note quando si eseguono query sui ruoli associati a un database. Per altre informazioni, vedi Visualizzare ruoli di sicurezza.

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 NomeTabella con il nome della tabella di destinazione:

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

Aggiungere una configurazione per l'app

Eseguire la procedura descritta di seguito per:

  • Aggiungere una configurazione di destinazione per l'app
  • Compilare ed eseguire l'app
  1. 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.

  2. 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);
    
  3. Compilare ed eseguire l'app. Ad esempio, se si usa Visual Studio, premere F5.

  4. Verificare che i dati si trovino nel cluster. Nell'ambiente di query eseguire la seguente query 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 per illustrare come configurare e usare il sink NLog.

  1. Clonare il sink Nlog repository git usando il comando git seguente:

    git clone https://github.com/Azure/azure-kusto-nlog-sink.git
    
  2. Impostare le seguenti variabili di ambiente, in modo che il file di configurazione NLog possa leggerli immediatamente dall'ambiente:

    Variabile Descrizione
    INGEST_ENDPOINT L’URI di inserimento per la destinazione dati. Questo URI è stato copiato nei prerequisiti.
    DATABASE Il nome che è sensibile alle maiuscole del database di destinazione.
    APP_ID L'ID client dell'applicazione richiesto per l'autenticazione. Questo valore è stato salvato in Creare una registrazione App di Microsoft Entra.
    APP_KEY L'Application key richiesto per l'autenticazione. Questo valore è stato salvato in Creare una registrazione App di Microsoft Entra.
    AZURE_TENANT_ID L'ID del tenant dove è registrata l'applicazione. Questo valore è stato salvato in Creare una registrazione App di Microsoft Entra.

    Si possono configurare tali variabili di ambiente manualmente o usando i comandi seguenti:

    $env:INGEST_ENDPOINT="<ingestionURI>"
    $env:APP_ID="<appId>"
    $env:APP_KEY="<appKey>"
    $env:AZURE_TENANT_ID="<tenant>"
    $env:DATABASE="<databaseName>"
    
  3. Dal proprio computer passare alla cartella radice del repository clonato ed eseguire il seguente comando dotnet per creare l'app:

    cd .\NLog.Azure.Kusto.Samples\
    dotnet build
    
  4. Dal proprio computer passare alla cartella esempi ed eseguire il seguente comando dotnet per creare l'app:

    dotnet run
    
  5. Nell'ambiente di query selezionare il database di destinazione ed eseguire la seguente query per esplorare i dati inseriti.

    ADXNLogSample
    | take 10
    

    L'output dovrebbe essere simile alla seguente immagine:

    Screenshot della tabella con la funzione e i risultati take 10