Aracılığıyla paylaş


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

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.

  1. Azure CLI aracılığıyla Azure aboneliğinizde oturum açın. Ardından tarayıcıda kimlik doğrulaması yapın.

    az login
    
  2. 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
    
  3. 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}
    
  4. Döndürülen JSON verilerinden, gelecekte kullanmak üzere , passwordve tenant değerini kopyalayınappId.

    {
      "appId": "1234abcd-e5f6-g7h8-i9j0-1234kl5678mn",
      "displayName": "my-service-principal",
      "name": "my-service-principal",
      "password": "1234abcd-e5f6-g7h8-i9j0-1234kl5678mn",
      "tenant": "1234abcd-e5f6-g7h8-i9j0-1234kl5678mn"
    }
    

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

  1. 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
  1. 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ı.

  2. 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);
    
  3. Uygulamayı derleyin ve çalıştırın. Örneğin, Visual Studio kullanıyorsanız F5 tuşuna basın.

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

  1. Aşağıdaki git komutunu kullanarak NLog havuzundaki git deposunu kopyalayın:

    git clone https://github.com/Azure/azure-kusto-nlog-sink.git
    
  2. 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:

    $env:INGEST_ENDPOINT="<ingestionURI>"
    $env:APP_ID="<appId>"
    $env:APP_KEY="<appKey>"
    $env:AZURE_TENANT_ID="<tenant>"
    $env:DATABASE="<databaseName>"
    
  3. 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
    
  4. Terminalinizde samples klasörüne gidin ve uygulamayı çalıştırmak için aşağıdaki dotnet komutu çalıştırın:

    dotnet run
    
  5. 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:

    10 işlev ve sonuç alma içeren tablonun ekran görüntüsü