Condividi tramite


Inserire dati nel Data Explorer di Azure utilizzando il connettore NLog

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 trasferire i 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 Data Explorer

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.

Il principale del servizio sarà l'identità usata dal connettore per scrivere dati nella tua tabella in Kusto. In seguito, si concederanno le autorizzazioni a questa entità del 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 il principale. 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"
    }
    

Hai creato la tua applicazione Microsoft Entra e l'entità del servizio.

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

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 Visualizza i ruoli di sicurezza esistenti.

Creare una tabella e una mappatura di ingestione

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 la configurazione di destinazione all'app

Eseguire la procedura descritta di seguito per:

  • Aggiungere la configurazione di destinazione
  • 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

Utilizzare l'app generatore di log di esempio come esempio per mostrare come configurare e utilizzare il sink NLog.

  1. Clonare il sink di NLog del repository Git usando il seguente comando git:

    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