Menyerap data dengan sink NLog ke Azure Data Explorer

NLog adalah platform pengelogan fleksibel dan gratis untuk berbagai platform .NET, termasuk standar .NET. NLog memungkinkan Anda menulis ke beberapa target, seperti database, file, atau konsol. Dengan NLog, Anda dapat mengubah konfigurasi pengelogan dengan cepat. Sink NLog adalah target untuk NLog yang memungkinkan Anda mengirim pesan log ke kluster KQL. Plugin ini dibangun di atas pustaka Azure-Kusto-Data dan menyediakan cara yang efisien untuk men-sink log Anda ke kluster Anda.

Dalam artikel ini Anda akan mempelajari cara memasukkan data dengan sink nLog.

Untuk daftar lengkap konektor data, lihat Gambaran umum konektor data.

Prasyarat

  • .NET SDK 6.0 atau yang lebih baru
  • Kluster dan basis data Azure Data Explorer

Siapkan lingkungan Anda

Di bagian ini, Anda akan menyiapkan lingkungan untuk menggunakan konektor NLog.

Pasang paket

Tambahkan paket NLog.Azure.Kusto NuGet. Gunakan perintah Install-Package yang menentukan nama paket NuGet.

Install-Package NLog.Azure.Kusto

Membuat pendaftaran aplikasi Microsoft Entra

Autentikasi aplikasi Microsoft Entra digunakan untuk aplikasi yang perlu mengakses platform tanpa ada pengguna. Untuk mendapatkan data menggunakan konektor NLog, Anda perlu membuat dan mendaftarkan perwakilan layanan Microsoft Entra, lalu mengotorisasi perwakilan ini untuk mendapatkan data dari database.

Perwakilan layanan Microsoft Entra dapat dibuat melalui portal Azure atau secara terprogram, seperti dalam contoh berikut.

Service principal ini akan menjadi identitas yang digunakan oleh konektor untuk menulis data ke tabel Anda di Kusto. Anda nantinya akan memberikan izin bagi perwakilan layanan ini untuk mengakses sumber daya Kusto.

  1. Masuk ke langganan Azure Anda melalui Azure CLI. Kemudian autentikasi di browser.

    az login
    
  2. Pilih langganan untuk menghosting utama. Langkah ini diperlukan saat Anda memiliki beberapa langganan.

    az account set --subscription YOUR_SUBSCRIPTION_GUID
    
  3. Buat prinsipal layanan. Dalam contoh ini, perwakilan layanan disebut my-service-principal.

    az ad sp create-for-rbac -n "my-service-principal" --role Contributor --scopes /subscriptions/{SubID}
    
  4. Dari data JSON yang dikembalikan, salin appId, password, dan tenant untuk penggunaan di masa mendatang.

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

Anda telah membuat aplikasi Microsoft Entra dan perwakilan layanan Anda.

Simpan nilai berikut untuk digunakan dalam langkah selanjutnya: * ID Aplikasi (klien) * ID Direktori (penyewa) * Nilai kunci rahasia klien

Memberikan izin aplikasi Microsoft Entra

  1. Di lingkungan kueri Anda, jalankan perintah manajemen berikut dan ganti placeholder. Ganti DatabaseName dengan nama database target dan ApplicationID dengan nilai yang disimpan sebelumnya. Perintah ini memberi aplikasi ingestor database peran. Untuk informasi selengkapnya, lihat Mengelola peran keamanan database.

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

    Catatan

    Parameter terakhir adalah string yang muncul sebagai catatan saat Anda mengkueri peran yang terkait dengan database. Untuk informasi selengkapnya, lihat Menampilkan peran keamanan yang sudah ada.

Membuat tabel dan pemetaan penyerapan

Buat tabel target untuk data masuk.

  • Di editor kueri Anda, jalankan perintah pembuatan tabel berikut, ganti placeholder TableName dengan nama tabel target.

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

Menambahkan konfigurasi target ke aplikasi Anda

Gunakan langkah-langkah berikut untuk:

  • Tambahkan konfigurasi target
  • Buat dan jalankan aplikasi
  1. Tambahkan target dalam file konfigurasi NLog Anda.

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

    Untuk opsi lainnya, lihat Konektor Nlog.

  2. Kirim data menggunakan saluran NLog. Contohnya:

    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. Buat dan jalankan aplikasi. Misalnya, jika Anda menggunakan Visual Studio, tekan F5.

  4. Verifikasi bahwa data berada di kluster Anda. Di lingkungan kueri Anda, jalankan kueri berikut dengan mengganti placeholder dengan nama tabel yang sebelumnya Anda gunakan.

    <TableName>
    | take 10
    

Menjalankan contoh aplikasi

Gunakan contoh aplikasi generator log sebagai contoh yang menunjukkan cara mengonfigurasi dan menggunakan sink NLog.

  1. Kloning repositori git NLog sink menggunakan perintah git berikut:

    git clone https://github.com/Azure/azure-kusto-nlog-sink.git
    
  2. Atur variabel lingkungan berikut, sehingga file konfigurasi NLog dapat langsung membacanya dari lingkungan:

    Variabel Deskripsi
    INGEST_ENDPOINT URI pengambilan untuk sasaran data Anda. Anda telah menyalin URI ini dalam prasyarat.
    BASIS DATA Nama sensitif huruf besar/kecil dari database target.
    APP_ID ID klien aplikasi diperlukan untuk autentikasi. Anda menyimpan nilai ini di Membuat pendaftaran aplikasi Microsoft Entra.
    APP_KEY Kunci aplikasi diperlukan untuk autentikasi. Anda menyimpan nilai ini saat Membuat Pendaftaran Aplikasi Microsoft Entra.
    AZURE_TENANT_ID ID penyewa tempat aplikasi terdaftar. Anda menyimpan nilai ini di Buat pendaftaran Aplikasi Microsoft Entra.

    Anda dapat mengatur variabel lingkungan secara manual atau menggunakan perintah berikut:

    $env:INGEST_ENDPOINT="<ingestionURI>"
    $env:APP_ID="<appId>"
    $env:APP_KEY="<appKey>"
    $env:AZURE_TENANT_ID="<tenant>"
    $env:DATABASE="<databaseName>"
    
  3. Di dalam terminal Anda, navigasikan ke folder akar repositori kloning dan jalankan perintah berikut dotnet untuk membangun aplikasi:

    cd .\NLog.Azure.Kusto.Samples\
    dotnet build
    
  4. Di dalam terminal Anda, navigasikan ke folder sampel dan jalankan perintah berikut dotnet untuk menjalankan aplikasi:

    dotnet run
    
  5. Di lingkungan kueri Anda, pilih database target, dan jalankan kueri berikut untuk menjelajahi data yang diserap.

    ADXNLogSample
    | take 10