Aracılığıyla paylaş


Veri API'si oluşturucusunda Azure Log Analytics'i kullanma

Azure Log Analytics; uygulamalardan, Azure kaynaklarından, VM'lerden, kapsayıcılardan ve daha fazlasından günlükleri toplayan merkezi bir günlük kaydı platformudur. Bunu Veri API oluşturucusu (DAB) ile tümleştirmek, kuruluşların uyumluluk, idare ve gözlemlenebilirlik gereksinimlerini karşılamaya yardımcı olur. Application Insights'ın (APM'ye odaklanan) aksine Log Analytics, Kusto Sorgu Dili (KQL) desteğiyle daha geniş kapsamlı günlük toplaması sağlar.

Log Analytics telemetri akışını gösteren diyagram.

Önkoşullar

  • Mevcut DAB yapılandırma dosyası.
  • Log Analytics kaynakları oluşturma izinlerine sahip Azure aboneliği.
  • Azure Log Analytics çalışma alanı:
    • Özel tablo (ile biten _CL)
    • Veri Toplama Kuralı (DCR)
    • Veri Toplama Uç Noktası (DCE)
  • Yönetilen Kimlik, DAB sunucunuzda (Azure App Service, Container Apps, VM vb.) etkinleştirildi.
  • Veri API'si oluşturucu CLI. CLI'yi yükleme

Azure Log Analytics kaynaklarını ayarlama

DAB'yi yapılandırmadan önce gerekli Azure kaynaklarını oluşturun.

Log Analytics çalışma alanı oluşturma

  1. Azure Portal>Log Analytics çalışma alanlarına gidin.
  2. +Oluştur'u seçin.
  3. Aboneliğinizi, kaynak grubunuzu ve bölgenizi seçin.
  4. Bir çalışma alanı adı girin.
  5. Gözden geçir ve oluştur>Oluştur'u seçin.

Özel tablo oluşturma

Günlük Alımı API'si için özel tablolar _CL ile bitmelidir.

  1. Log Analytics çalışma alanınızda Tablolar'a gidin.
  2. + Oluştur>Yeni özel günlük (DCR tabanlı) seçeneğini belirleyin.
  3. Tablo adını girin (örneğin, DabLogs_CL).
  4. Şemayı şu sütunlarla tanımlayın:
    • Time (tarih ve saat)
    • LogLevel (dize)
    • Message (dize)
    • Component (dize)
    • Identifier (dize)
  5. Oluştur'i seçin.

Veri Toplama Uç Noktası Oluşturma (DCE)

  1. Veri Toplama Uç Noktalarını> gidin.
  2. +Oluştur'u seçin.
  3. Aboneliğinizi, kaynak grubunuzu ve bölgenizi seçin.
  4. Bir ad girin (örneğin, my-dce).
  5. Gözden geçir ve oluştur>Oluştur'u seçin.
  6. Günlük Alımı uç noktası URL'sini kopyalayın (örneğin, https://my-dce.eastus-1.ingest.monitor.azure.com).

Veri Toplama Kuralı Oluşturma (DCR)

  1. İzleme>Veri Toplama Kuralları'na gidin.
  2. +Oluştur'u seçin.
  3. Abonelik, kaynak grubu, bölge'yi seçin.
  4. Bir ad girin (örneğin, my-dcr).
  5. Veri kaynakları'ndaÖzel Metin Günlükleri'ni seçin.
  6. Ayarla
    • Veri Toplama Uç Noktası: DCE'nizi seçin.
    • Hedef: Log Analytics çalışma alanınız.
    • Tablo: Özel tablonuz (DabLogs_CL).
  7. Gözden geçir ve oluştur>Oluştur'u seçin.
  8. Immutable ID'yi (şununla dcr- başlayan) kopyalayın.

Kimlik doğrulamasını yapılandırma

DAB, Log Analytics'de kimlik doğrulaması yapmak için Azure Yönetilen Kimliği kullanır. Yapılandırmanızda hiçbir kimlik bilgisi depolanmaz.

Yönetilen Kimliği Etkinleştirme

az webapp identity assign \
  --name my-app \
  --resource-group my-rg

İzin atama

DCR'de Yönetilen Kimliğinize İzleme Ölçümleri Yayımcısı rolü verin.

# Get Managed Identity principal ID
PRINCIPAL_ID=$(az webapp identity show \
  --name my-app \
  --resource-group my-rg \
  --query principalId -o tsv)

# Get DCR resource ID
DCR_ID=$(az monitor data-collection rule show \
  --name my-dcr \
  --resource-group my-rg \
  --query id -o tsv)

# Assign role
az role assignment create \
  --assignee $PRINCIPAL_ID \
  --role "Monitoring Metrics Publisher" \
  --scope $DCR_ID

Önemli

Bu rol ataması olmadan DAB, günlükleri doğru yapılandırmayla bile Log Analytics'e gönderemez.

Log Analytics’i Yapılandırma

Yapılandırma dosyanızın altına azure-log-analytics bir runtime.telemetry bölüm ekleyin.

{
  "runtime": {
    "telemetry": {
      "azure-log-analytics": {
        "enabled": true,
        "dab-identifier": "my-dab-instance",
        "flush-interval-seconds": 10,
        "auth": {
          "custom-table-name": "DabLogs_CL",
          "dcr-immutable-id": "dcr-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
          "dce-endpoint": "https://my-dce.eastus-1.ingest.monitor.azure.com"
        }
      }
    }
  }
}

Yapılandırma özellikleri

Mülkiyet Description Varsayılan Constraints
enabled Log Analytics tümleştirmesini etkinleştirin veya devre dışı bırakın. false Boolean
dab-identifier Bu DAB örneği için günlük girdilerini tanımlamak amacıyla benzersiz bir dize. DabLogs Herhangi bir dize
flush-interval-seconds Günlükler, Log Analytics'e saniye olarak ne sıklıkta aktarılır? 5 0 olmalıdır >
auth.custom-table-name Log Analytics çalışma alanınızdaki özel tablo adı. (gerekli) Şununla bitmelidir _CL
auth.dcr-immutable-id Veri Toplama Kuralınızın değiştirilemez kimliği. (gerekli) Şununla başlar: dcr-
auth.dce-endpoint Veri Toplama Uç Noktası URL'si. (gerekli) HTTPS URL'si

Command-line

Log Analytics'i dab configure aracılığıyla yapılandırın.

Log Analytics'i etkinleştirme

dab configure \
  --runtime.telemetry.azure-log-analytics.enabled true

DAB tanımlayıcısı ayarlama

dab configure \
  --runtime.telemetry.azure-log-analytics.dab-identifier my-dab-instance

Temizleme aralığını ayarlama

dab configure \
  --runtime.telemetry.azure-log-analytics.flush-interval-seconds 10

Özel tablo adını ayarlama

dab configure \
  --runtime.telemetry.azure-log-analytics.auth.custom-table-name DabLogs_CL

DCR sabit kimliğini ayarlama

dab configure \
  --runtime.telemetry.azure-log-analytics.auth.dcr-immutable-id dcr-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

DCE uç noktasını ayarlama

dab configure \
  --runtime.telemetry.azure-log-analytics.auth.dce-endpoint https://my-dce.eastus-1.ingest.monitor.azure.com

DAB çalıştırma

DAB'i yapılandırma dosyanızla başlatın:

dab start

DAB başlangıç günlüklerini denetleyin:

Azure Log Analytics is enabled.

Nasıl çalışır?

Log Analytics etkinleştirildiğinde DAB:

  1. Konağın Yönetilen Kimliğini kullanarak Azure'da kimlik doğrulaması yapar.
  2. flush-interval-seconds temelinde günlük girdilerini gruplandırır.
  3. Günlükleri Veri Toplama Uç Noktasına (DCE) gönderir.
  4. DCE, dönüştürme için günlükleri Veri Toplama Kuralı (DCR) aracılığıyla yönlendirir.
  5. DCR, günlükleri özel Log Analytics tablonuza yükler.

Veri akışı

DAB Application
    ↓
ILogger (ASP.NET Core)
    ↓
Log Analytics Logger Provider
    ↓
Managed Identity Authentication
    ↓
Data Collection Endpoint (DCE)
    ↓
Data Collection Rule (DCR)
    ↓
Log Analytics Workspace (Custom Table)

Yakalananlar

Telemetri türü Kaynak Örnekler
İzler ILogger DAB'de aramalar Başlangıç günlükleri, sorgu yürütme günlükleri, uyarılar
Errors İstisna yönetimi Çalışma zamanı hataları, yapılandırma hataları, veritabanı hataları
Bileşen bilgileri DAB iç işlevleri Günlüğü oluşturan modül
Örnek Kimliği Konfigürasyon dab-identifier filtreleme değeri

Günlük yapısı

Log Analytics'e gönderilen her günlük girdisi şu alanları içerir:

Veri Alanı Türü Description Example
Time tarih/zaman Zaman damgası (ISO 8601) 2026-01-27T14:30:00Z
LogLevel String Kayıt şiddeti Information, Warning, Error
Message String Günlük iletisi Request completed successfully
Component String Günlüğü oluşturan DAB bileşeni Azure.DataApiBuilder.Service.Startup
Identifier String Yapılandırmadan alınan dab-identifier değer my-dab-instance

Uyarı

Log Analytics'teki özel tablo sütunları sonekleri ekler: _s dizeler için, _d ondalık sayılar için, _t tarih saatler için vb.

Log Analytics'te sorgu günlükleri

  1. Log Analytics çalışma alanınızı Azure portalında açın.

  2. Günlükler'e gidin ve bir KQL sorgusu çalıştırın:

    DabLogs_CL
    | where Identifier_s == "my-dab-instance"
    | where LogLevel_s in ("Warning", "Error")
    | where TimeGenerated > ago(1h)
    | project TimeGenerated, LogLevel_s, Message_s, Component_s
    | order by TimeGenerated desc
    

Örnek sorgular

Günlükleri düzeye göre say:

DabLogs_CL
| where TimeGenerated > ago(24h)
| summarize Count=count() by LogLevel_s

Belirli bir bileşendeki hataları bulun:

DabLogs_CL
| where Component_s contains "SqlQueryExecutor"
| where LogLevel_s == "Error"
| project TimeGenerated, Message_s

Performans ve maliyetle ilgili dikkat edilmesi gerekenler

Toplu işlem davranışı

DAB günlükleri toplu olarak oluşturur ve her flush-interval-secondsbirini gönderir:

  • 5 saniye (varsayılan): Çoğu senaryo için iyi denge.
  • 1-2 saniye: Neredeyse gerçek zamanlı günlükleme (daha fazla API çağrısı, daha yüksek maliyet).
  • 10-60 saniye: API çağrıları azaltılmış ancak günlüklerde gecikme var.

Maliyet optimizasyonu

Log Analytics fiyatlandırması şu temellere dayanır:

  1. Veri alımı: Alınan GB başına.
  2. Veri saklama: Ücretsiz katmandan sonraki aylık GB başına.

Maliyetleri azaltma:

  • Daha fazla günlüğü gruplamak için flush-interval-seconds değerini artırın.
  • Ayrıntılı günlükleri dışlamak için günlük düzeyi filtrelerini kullanın. Daha fazla bilgi için bkz. Günlük ayrıntı düzeyini özelleştirme.
  • Log Analytics çalışma alanınızda uygun veri saklamayı ayarlayın.

Örnek: Sesi azaltmak için filtre kullanma

{
  "runtime": {
    "telemetry": {
      "log-level": {
        "Default": "Warning",
        "Microsoft": "Error"
      },
      "azure-log-analytics": {
        "enabled": true,
        "flush-interval-seconds": 30,
        "auth": {
          "custom-table-name": "DabLogs_CL",
          "dcr-immutable-id": "dcr-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
          "dce-endpoint": "https://my-dce.eastus-1.ingest.monitor.azure.com"
        }
      }
    }
  }
}

Bu, yalnızca Uyarı ve Hata günlüklerini gönderir ve birimi önemli ölçüde azaltır.

Veri muhafazası

Log Analytics veri saklama, çalışma alanı başına yapılandırılabilir:

Katman Varsayılan saklama En fazla saklama
Ücretsiz seviye 7 gün 7 gün
Pay-as-you-go 30 gün 730 gün (2 yıl)

Saklamayı yapılandırma: Log Analytics çalışma alanı Kullanım ve tahmini maliyetlerVeri Saklama →.

Tavsiye

Uyumluluk gereksinimleri için, uzun süreli saklama için eski günlükleri Azure Depolama'ya arşivleme seçeneğini göz önünde bulundurun.

Sorun giderme

Log Analytics'te görünmeyen günlükler

Belirti: DAB başarıyla başlar ancak Log Analytics çalışma alanınızda günlükler görünmez.

Olası nedenler:

  • Tamamlanmamış yapılandırma: Logs won't be sent to Azure Log Analytics because the Custom Table Name is not available in the config file. ve custom-table-name, dcr-immutable-id, dce-endpoint gibi hatalar için DAB başlangıç günlüklerini denetleyin. Tüm gerekli kimlik doğrulama özelliklerini doğrulayın.

  • Yönetilen Kimlik atanmadı: ile az webapp identity show --name my-app --resource-group my-rgYönetilen Kimliğin etkinleştirildiğini doğrulayın. az role assignment list --assignee <principal-id> --scope <dcr-id> ile rol atamalarını denetleyin.

  • Yanlış DCE uç noktası veya DCR Kimliği: DCE uç noktası biçiminin olduğunu https://<dce-name>.<region>-1.ingest.monitor.azure.comdoğrulayın. DCR sabit kimliğinin dcr- ile başladığını doğrulayın.

  • Özel tablo yok: Özel tablolar ile _CLbitmelidir. Tablo şeması günlük yapısıyla eşleşmelidir.

Hata: Temizleme aralığı pozitif olmalıdır

Neden: flush-interval-seconds0 veya negatif bir değere ayarlanır.

Çözüm: Pozitif bir tamsayıya (minimumflush-interval-seconds) ayarlayın1.

DAB günlükleri "Azure Log Analytics devre dışı bırakıldı" ifadesini gösteriyor

Neden: enabled yapılandırmada var false veya eksik.

Çözüm: Yapılandırmanızda ayarlayın enabled: true .

Log Analytics ile Application Insights karşılaştırması

Kapasite Uygulama Öngörüleri Log Analytics
Odak Uygulama performansı izleme (APM) Merkezi günlük toplama
Sorgu dili KQL KQL
Scope Tek uygulama Uygulamalar, VM'ler, kapsayıcılar, Azure kaynakları
Kullanım örneği Performans, özel durumlar, izler Uyumluluk, idare, kaynaklar arası bağıntı
Authentication Bağlantı dizesi Yönetilen Kimlik (DCR/DCE aracılığıyla)

İstek izleme, bağımlılık eşleme ve performans profili oluşturma gibi APM özelliklerine ihtiyacınız olduğunda Application Insights'ı kullanın. Kurumsal uyumluluk gereksinimleri olan birden çok kaynakta merkezi kayıt tutmaya ihtiyacınız olduğunda Log Analytics'i kullanın.