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.
Di bagian ini, Anda akan menyiapkan lingkungan untuk menggunakan konektor NLog.
Tambahkan paket NLog.Azure.Kusto NuGet. Gunakan perintah Install-Package yang menentukan nama paket NuGet.
Install-Package NLog.Azure.Kusto
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.
Masuk ke langganan Azure Anda melalui Azure CLI. Kemudian autentikasi di browser.
az login
Pilih langganan untuk menghosting perwakilan. Langkah ini diperlukan saat Anda memiliki beberapa langganan.
az account set --subscription YOUR_SUBSCRIPTION_GUID
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}
Dari data JSON yang dikembalikan, salin
appId
,password
, dantenant
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
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.
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)
Gunakan langkah-langkah berikut untuk:
- Menambahkan konfigurasi target
- Buat dan jalankan aplikasi
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.
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);
Buat dan jalankan aplikasi. Misalnya, jika Anda menggunakan Visual Studio, tekan F5.
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
Gunakan contoh aplikasi generator log sebagai contoh yang menunjukkan cara mengonfigurasi dan menggunakan sink NLog.
Kloning repositori git NLog sink menggunakan perintah git berikut:
git clone https://github.com/Azure/azure-kusto-nlog-sink.git
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:
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
Di dalam terminal Anda, navigasikan ke folder sampel dan jalankan perintah berikut
dotnet
untuk menjalankan aplikasi:dotnet run
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: