Baca dalam bahasa Inggris

Bagikan melalui


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 menyerap 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 database Azure Data Explorer

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

Perwakilan layanan ini akan menjadi identitas yang digunakan oleh konektor untuk menulis data 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 perwakilan. Langkah ini diperlukan saat Anda memiliki beberapa langganan.

    az account set --subscription YOUR_SUBSCRIPTION_GUID
    
  3. Buat perwakilan 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, ganti tempat penampung. Ganti DatabaseName dengan nama database target dan ApplicationID dengan nilai yang disimpan sebelumnya. Perintah ini memberi aplikasi peran ingestor database. 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 tableName tempat penampung 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:

  • Menambahkan 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 sink 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 mengganti tempat penampung dengan nama tabel yang Anda gunakan sebelumnya:

    <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 penyerapan untuk target data Anda. Anda telah menyalin URI ini dalam prasyarat.
    BASIS DATA Nama peka 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 di Membuat pendaftaran Aplikasi Microsoft Entra.
    AZURE_TENANT_ID ID penyewa tempat aplikasi terdaftar. Anda menyimpan nilai ini di Membuat pendaftaran Aplikasi Microsoft Entra.

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

    export INGEST_ENDPOINT="<ingestionURI>"
    export APP_ID="<appId>"
    export APP_KEY="<appKey>"
    export AZURE_TENANT_ID="<tenant>"
    export 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
    

    Output Anda akan terlihat mirip dengan gambar berikut:

    Cuplikan layar tabel dengan mengambil 10 fungsi dan hasil