NLog havuzuyla azure Veri Gezgini veri alma
NLog, .NET standardı dahil olmak üzere çeşitli .NET platformları için esnek ve ücretsiz bir günlük platformudur. NLog veritabanı, dosya veya konsol gibi çeşitli hedeflere yazmanızı sağlar. NLog ile günlük yapılandırmasını anında değiştirebilirsiniz. NLog havuzu, günlük iletilerinizi bir KQL kümesine göndermenizi sağlayan bir NLog hedefidir. Eklenti, Azure-Kusto-Data kitaplığının üzerine kurulmuştur ve günlüklerinizi kümenize batırmak için etkili bir yol sağlar.
Bu makalede nLog havuzu ile veri almayı öğreneceksiniz.
Veri bağlayıcılarının tam listesi için bkz . Veri bağlayıcılarına genel bakış.
Önkoşullar
- .NET SDK 6.0 veya üzeri
- Azure Veri Gezgini kümesi ve veritabanı
Ortamınızı ayarlama
Bu bölümde ortamınızı NLog bağlayıcısını kullanacak şekilde hazırlayacaksınız.
paketini yükleyin
NLog.Azure.Kusto NuGet paketini ekleyin. NuGet paketinin adını belirten Install-Package komutunu kullanın.
Install-Package NLog.Azure.Kusto
Microsoft Entra uygulama kaydı oluşturma
Microsoft Entra uygulama kimlik doğrulaması, bir kullanıcı olmadan platforma erişmesi gereken uygulamalar için kullanılır. NLog bağlayıcısını kullanarak veri almak için bir Microsoft Entra hizmet sorumlusu oluşturup kaydetmeniz ve ardından bu sorumluyu veritabanından veri alması için yetkilendirmeniz gerekir.
Microsoft Entra hizmet sorumlusu, aşağıdaki örnekte olduğu gibi Azure portalı aracılığıyla veya program aracılığıyla oluşturulabilir.
Bu hizmet sorumlusu, kusto'da tablonuza veri yazmak için bağlayıcı tarafından kullanılan kimlik olacaktır. Daha sonra bu hizmet sorumlusu için Kusto kaynaklarına erişim izinleri verirsiniz.
Azure CLI aracılığıyla Azure aboneliğinizde oturum açın. Ardından tarayıcıda kimlik doğrulaması yapın.
az login
Sorumluyu barındırmak için aboneliği seçin. Bu adım, birden çok aboneliğiniz olduğunda gereklidir.
az account set --subscription YOUR_SUBSCRIPTION_GUID
Hizmet sorumlusunu oluşturun. Bu örnekte hizmet sorumlusu olarak adlandırılır
my-service-principal
.az ad sp create-for-rbac -n "my-service-principal" --role Contributor --scopes /subscriptions/{SubID}
Döndürülen JSON verilerinden, gelecekte kullanmak üzere ,
password
vetenant
değerini kopyalayınappId
.{ "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" }
Microsoft Entra uygulamanızı ve hizmet sorumlunuzu oluşturdunuz.
Sonraki adımlarda kullanmak üzere aşağıdaki değerleri kaydedin: * Uygulama (istemci) Kimliği * Dizin (kiracı) Kimliği * İstemci gizli anahtarı değeri
Microsoft Entra uygulaması izinlerini verme
Sorgu ortamınızda aşağıdaki yönetim komutunu çalıştırarak yer tutucuları değiştirin. DatabaseName değerini hedef veritabanının adıyla, ApplicationID değerini ise daha önce kaydedilmiş değerle değiştirin. Bu komut uygulamaya veritabanı alma rolü verir. Daha fazla bilgi için bkz . Veritabanı güvenlik rollerini yönetme.
.add database <DatabaseName> ingestors ('aadapp=<ApplicationID>') 'NLOG Azure App Registration role'
Not
Son parametre, bir veritabanıyla ilişkili rolleri sorguladığınızda not olarak gösterilen bir dizedir. Daha fazla bilgi için bkz . Mevcut güvenlik rollerini görüntüleme.
Tablo ve alma eşlemesi oluşturma
Gelen veriler için bir hedef tablo oluşturun.
Sorgu düzenleyicinizde aşağıdaki tablo oluşturma komutunu çalıştırın ve TableName yer tutucusunu hedef tablonun adıyla değiştirin:
.create table <TableName> (Timestamp:datetime, Level:string, Message:string, FormattedMessage:dynamic, Exception:string, Properties:dynamic)
Hedef yapılandırmayı uygulamanıza ekleme
Aşağıdaki adımları kullanarak:
- Hedef yapılandırmayı ekleme
- Uygulamayı derleyin ve çalıştırın
Hedefi NLog yapılandırma dosyanıza ekleyin.
<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>
Diğer seçenekler için bkz . Nlog bağlayıcısı.
NLog havuzu kullanarak veri gönderme. Örneğin:
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);
Uygulamayı derleyin ve çalıştırın. Örneğin, Visual Studio kullanıyorsanız F5 tuşuna basın.
Verilerin kümenizde olduğunu doğrulayın. Sorgu ortamınızda aşağıdaki sorguyu çalıştırarak yer tutucuyu daha önce kullandığınız tablonun adıyla değiştirin:
<TableName> | take 10
Örnek uygulamayı çalıştırma
NLog havuzu yapılandırmayı ve kullanmayı gösteren örnek günlük oluşturucu uygulamasını kullanın.
Aşağıdaki git komutunu kullanarak NLog havuzundaki git deposunu kopyalayın:
git clone https://github.com/Azure/azure-kusto-nlog-sink.git
NLog yapılandırma dosyasının bunları ortamdan hemen okuyabilmesi için aşağıdaki ortam değişkenlerini ayarlayın:
Değişken Açıklama INGEST_ENDPOINT Veri hedefiniz için alma URI'si. Bu URI'yi önkoşullara kopyalamış olmanız gerekir. VERİTABANI Hedef veritabanının büyük/küçük harfe duyarlı adı. APP_ID Kimlik doğrulaması için gerekli uygulama istemci kimliği. Bu değeri Microsoft Entra uygulama kaydı oluşturma bölümüne kaydettiniz. APP_KEY Kimlik doğrulaması için gerekli uygulama anahtarı. Bu değeri Microsoft Entra Uygulaması kaydı oluşturma bölümüne kaydettiniz. AZURE_TENANT_ID Uygulamanın kayıtlı olduğu kiracının kimliği. Bu değeri Microsoft Entra Uygulaması kaydı oluşturma bölümüne kaydettiniz. Ortam değişkenlerini el ile veya aşağıdaki komutları kullanarak ayarlayabilirsiniz:
Terminalinizde, kopyalanan deponun kök klasörüne gidin ve uygulamayı derlemek için aşağıdaki
dotnet
komutu çalıştırın:cd .\NLog.Azure.Kusto.Samples\ dotnet build
Terminalinizde samples klasörüne gidin ve uygulamayı çalıştırmak için aşağıdaki
dotnet
komutu çalıştırın:dotnet run
Sorgu ortamınızda hedef veritabanını seçin ve alınan verileri keşfetmek için aşağıdaki sorguyu çalıştırın.
ADXNLogSample | take 10
Çıkışınız aşağıdaki görüntüye benzer görünmelidir: