Serilog havuzuyla azure Veri Gezgini veri alma

Serilog, .NET uygulamalarına yönelik popüler bir günlük altyapısıdır. Serilog, geliştiricilerin günlükçü adı, günlükçü düzeyi ve ileti desenine göre rastgele ayrıntı düzeyiyle hangi günlük deyimlerinin çıkış olduğunu denetlemesine olanak tanır. Ekleyici olarak da bilinen Serilog havuzu, günlük verilerinizi tablonuza akışla aktararak günlüklerinizi gerçek zamanlı olarak analiz edebilir ve görselleştirebilirsiniz.

Bu makalede Serilog ile veri alma işlemi gösterilmektedir.

Veri bağlayıcılarının tam listesi için bkz . Veri tümleştirmelerine genel bakış.

Önkoşullar

Microsoft Entra hizmet sorumlusu oluşturma

Microsoft Entra uygulama kimlik doğrulaması, kullanıcı olmadan KQL veritabanı tablonuza erişmesi gereken uygulamalar için kullanılır. Serilog bağlayıcısını kullanarak veri almak için bir Microsoft Entra hizmet sorumlusu oluşturup kaydetmeniz ve ardından bu sorumluyu bağlayıcı tarafından KQL veritabanınıza veri almak için kullanılan kimlik olarak 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.

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.

Hedef tablo ve alma eşlemesi oluşturma

Gelen veriler için bir hedef tablo ve alınan veri sütunlarını hedef tablodaki sütunlara eşlemek için bir alma eşlemesi oluşturun. Aşağıdaki adımlarda, tablo şeması ve eşleme örnek uygulamadan gönderilen verilere karşılık gelir.

  1. 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, Exception: string, Properties: dynamic, Position: dynamic, Elapsed: int)
    
  2. Aşağıdaki .create ingestion mapping komutunu çalıştırarak TableName yer tutucularını hedef tablo adıyla ve TableNameMapping öğesini alma eşlemesinin adıyla değiştirin:

    .create table <TableName> ingestion csv mapping '<TableNameMapping>' '[{"Name":"Timestamp","DataType":"","Ordinal":"0","ConstValue":null},{"Name":"Level","DataType":"","Ordinal":"1","ConstValue":null},{"Name":"Message","DataType":"","Ordinal":"2","ConstValue":null},{"Name":"Exception","DataType":"","Ordinal":"3","ConstValue":null},{"Name":"Properties","DataType":"","Ordinal":"4","ConstValue":null},{"Name":"Position","DataType":"","Ordinal":"5","ConstValue":null},{"Name":"Elapsed","DataType":"","Ordinal":"6","ConstValue":null}]'
    
  3. Microsoft Entra hizmet sorumlusu veritabanı alma rolü izinleri oluşturma bölümünden hizmet sorumlusuna veritabanıyla çalışma izni verin. Daha fazla bilgi için bkz . Örnekler. DatabaseName yer tutucusunu hedef veritabanının adıyla ve ApplicationID değerini bir Microsoft Entra hizmet sorumlusu oluştururken kaydettiğiniz değerle AppId değiştirin.

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

ASP.NET Core uygulamanızda Serilog kullanma

Bu bölümde, verileri günlüğe kaydetmek ve KQL tablonuza göndermek için Serilog'un ASP.NET Core uygulamanızla nasıl tümleştirileyeceksiniz açıklanmaktadır.

paketini yükleyin

Serilog.Sinks.AzureDataExplorer NuGet kitaplık paketini ekleyin. NuGet paketinin adını belirten Install-Package komutunu kullanın.

Install-Package Serilog.Sinks.AzureDataExplorer

Serilog havuzunu uygulamanıza ekleme

Aşağıdaki adımları kullanarak:

  • Serilog havuzunu uygulamanıza ekleyin.
  • Havuz tarafından kullanılan değişkenleri yapılandırın.
  • Uygulamayı derleyin ve çalıştırın.
  1. Aşağıdaki kodu uygulamanıza ekleyin:

    using Serilog.Sinks.AzureDataExplorer;
    
  2. Aşağıdaki tablodaki bilgileri kullanarak yer tutucuları değiştirerek Serilog havuzu yapılandırın:

    var log = new LoggerConfiguration()
    .WriteTo.AzureDataExplorerSink(new AzureDataExplorerSinkOptions
    {
        IngestionEndpointUri = "<TargetURI>",
        DatabaseName = "<MyDatabase>",
        TableName = "<MyTable>",
        BufferBaseFileName = "<BufferBaseFileName>"
    })
    .CreateLogger();
    
    Değişken Açıklama
    IngestionEndPointUri Alma URI'si.
    DatabaseName Hedef veritabanının büyük/küçük harfe duyarlı adı.
    TableName Var olan bir hedef tablonun büyük/küçük harfe duyarlı adı. Örneğin SerilogTest, Hedef tablo oluşturma ve alma eşlemesi bölümünde oluşturulan tablonun adıdır.
    AppId Kimlik doğrulaması için gereken uygulama istemci kimliği. Bu değeri Microsoft Entra hizmet sorumlusu oluşturma bölümüne kaydettiniz.
    AppKey Kimlik doğrulaması için gereken uygulama anahtarı. Bu değeri Microsoft Entra hizmet sorumlusu oluşturma bölümünde olduğu gibi password kaydettiniz.
    Kiracı Uygulamanın kayıtlı olduğu kiracının kimliği. Bu değeri Microsoft Entra hizmet sorumlusu oluşturma bölümüne kaydettiniz.
    BufferBaseFileName Arabellek dosyası için isteğe bağlı temel dosya adı. Günlüklerinizin kümenize bağlantı hatalarına neden olan kayıplara karşı dayanıklı olmasını istiyorsanız bu değeri ayarlayın. Örneğin, C:/Temp/Serilog.

    Diğer seçenekler için bkz . Havuz Seçenekleri.

  3. Serilog havuzunu kullanarak veritabanınıza veri gönderin. Örneğin:

    log.Verbose("Processed {@Position} in {Elapsed:000} ms.", position, elapsedMs);
    log.Information("Processed {@Position} in {Elapsed:000} ms.", position, elapsedMs);
    log.Warning("Processed {@Position} in {Elapsed:000} ms.", position, elapsedMs);
    log.Error(new Exception(), "Processed {@Position} in {Elapsed:000} ms.", position, elapsedMs);
    log.Debug("Processed {@Position} in {Elapsed:000} ms. ", position, elapsedMs);
    
  4. Uygulamayı derleyin ve çalıştırın. Örneğin, Visual Studio kullanıyorsanız F5 tuşuna basın.

  5. Verilerin tablonuzda olduğunu doğrulayın. Yer tutucusunu önceki adımda oluşturulan tablonun adıyla değiştirerek aşağıdaki sorguyu çalıştırın:

    <TableName>
    | take 10
    

Örnek uygulamayı çalıştırma

Test etmek için kendi verileriniz yoksa, yapılandırmayı test etmek ve Serilog havuzu kullanımını test etmek için örnek verilerle örnek günlük oluşturucu uygulamasını kullanabilirsiniz.

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

    git clone https://github.com/Azure/serilog-sinks-azuredataexplorer
    
  2. Serilog havuzu yapılandırmak için aşağıdaki ortam değişkenlerini ayarlayın:

    Değişken Açıklama
    IngestionEndPointUri Alma URI'si.
    DatabaseName Hedef veritabanının büyük/küçük harfe duyarlı adı.
    TableName Var olan bir hedef tablonun büyük/küçük harfe duyarlı adı. Örneğin SerilogTest, Hedef tablo oluşturma ve alma eşlemesi bölümünde oluşturulan tablonun adıdır.
    AppId Kimlik doğrulaması için gerekli uygulama istemci kimliği. Bu değeri Microsoft Entra hizmet sorumlusu oluşturma bölümüne kaydettiniz.
    AppKey Kimlik doğrulaması için gerekli uygulama anahtarı. Bu değeri Microsoft Entra hizmet sorumlusu oluşturma bölümüne kaydettiniz.
    Kiracı Uygulamanın kayıtlı olduğu kiracının kimliği. Bu değeri Microsoft Entra hizmet sorumlusu oluşturma bölümüne kaydettiniz.
    BufferBaseFileName Arabellek dosyasının temel dosya adı. Günlüklerinizin kümenize bağlantı hatalarına neden olan kayıplara karşı dayanıklı olmasını istiyorsanız bu değeri ayarlayın. Örneğin C:/Temp/Serilog

    Ortam değişkenlerini el ile veya aşağıdaki komutları kullanarak ayarlayabilirsiniz:

    $env:ingestionURI="<ingestionURI>"
    $env:appId="<appId>"
    $env:appKey="<appKey>"
    $env:tenant="<tenant>"
    $env:databaseName="<databaseName>"
    $env:tableName="<tableName>"
    
  3. Terminalinizde, kopyalanan deponun kök klasörüne göz atın ve uygulamayı oluşturmak için aşağıdaki .NET komutunu çalıştırın:

    dotnet build src
    
  4. Terminalinizde samples klasörüne gidin ve uygulamayı çalıştırmak için aşağıdaki .NET komutunu çalıştırın:

    dotnet build run
    
  1. Sorgu ortamında hedef veritabanını seçin ve alınan verileri keşfetmek için aşağıdaki sorguyu çalıştırın ve TableName yer tutucusunu hedef tablonun adıyla değiştirin:

    <TableName>
    | take 10
    

    Çıkışınız aşağıdaki görüntüye benzer görünmelidir:

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