Uygulama Analizler'de bağımlılık izleme

Not

Aşağıdaki belgeler, Uygulama Analizler klasik API'sine dayanır. Uygulama Analizler için uzun vadeli plan, OpenTelemetry kullanarak veri toplamaktır. Daha fazla bilgi için bkz . .NET, Node.js, Python ve Java uygulamaları için Azure İzleyici OpenTelemetry'yi etkinleştirme.

Bağımlılık, uygulamanız tarafından çağrılan bir bileşendir. Genellikle HTTP, veritabanı veya dosya sistemi kullanılarak çağrılan bir hizmettir. Uygulama Analizler bağımlılık çağrılarının süresini ve başarısız olup olmadığını ve bağımlılığın adı gibi bilgilerle birlikte ölçer. Belirli bağımlılık çağrılarını araştırabilir ve istekler ve özel durumlarla ilişkilendirebilirsiniz.

Otomatik olarak izlenen bağımlılıklar

.NET ve .NET Core için uygulama Analizler SDK'ları, DependencyTrackingTelemetryModulebağımlılıkları otomatik olarak toplayan bir telemetri modülüdür. Bu bağımlılık koleksiyonu, bağlı resmi belgelere göre yapılandırıldığında ASP.NET ve ASP.NET Core uygulamaları için otomatik olarak etkinleştirilir. Modül DependencyTrackingTelemetryModule Microsoft.Application Analizler olarak gönderilir. DependencyCollector NuGet paketi. NuGet paketini veya Microsoft.ApplicationInsights.AspNetCore NuGet paketini kullandığınızda Microsoft.ApplicationInsights.Web otomatik olarak getirilir.

DependencyTrackingTelemetryModule Şu anda aşağıdaki bağımlılıkları otomatik olarak izler:

Bağımlılıklar Ayrıntılar
HTTP/HTTPS Yerel veya uzak HTTP/HTTPS çağrıları.
WCF çağrıları Yalnızca HTTP tabanlı bağlamalar kullanılıyorsa otomatik olarak izlenir.
SQL ile SqlClientyapılan aramalar. SQL sorgularını yakalamak için tam SQL sorgusu almak için Gelişmiş SQL izleme bölümüne bakın.
Azure Blob Depolama, Tablo Depolama veya Kuyruk Depolama Azure Depolama istemcisiyle yapılan çağrılar.
Azure Event Hubs istemci SDK'sı En son paketi kullanın: https://nuget.org/packages/Azure.Messaging.EventHubs.
Azure Service Bus istemci SDK'sı En son paketi kullanın: https://nuget.org/packages/Azure.Messaging.ServiceBus.
Azure Cosmos DB HTTP/HTTPS kullanılıyorsa otomatik olarak izlenir. TCP ile doğrudan modda yapılan işlemler için izleme, önizleme paketi >= 3.33.0-preview kullanılarak da otomatik olarak yakalanır. Daha fazla bilgi için belgeleri ziyaret edin.

Bir bağımlılığınız eksikse veya farklı bir SDK kullanıyorsanız, bunun otomatik olarak alınan bağımlılıklar listesinde olduğundan emin olun. Bağımlılık otomatik olarak toplu değilse, bağımlılık izleme çağrısıyla el ile izleyebilirsiniz.

Konsol uygulamalarında otomatik bağımlılık izlemeyi ayarlama

.NET konsol uygulamalarından bağımlılıkları otomatik olarak izlemek için NuGet paketini Microsoft.ApplicationInsights.DependencyCollector yükleyin ve başlatın DependencyTrackingTelemetryModule:

    DependencyTrackingTelemetryModule depModule = new DependencyTrackingTelemetryModule();
    depModule.Initialize(TelemetryConfiguration.Active);

.NET Core konsol uygulamaları TelemetryConfiguration.Active için kullanım dışıdır. Çalışan hizmeti belgelerindeki kılavuza ve ASP.NET Core izleme belgelerine bakın.

Otomatik bağımlılık izleme nasıl çalışır?

Bağımlılıklar aşağıdaki tekniklerden biri kullanılarak otomatik olarak toplanır:

  • Belirli yöntemlerin çevresinde bayt kodu izlemesi kullanma. Azure Uygulaması Service Web Apps uzantısından StatusMonitor birini kullanınInstrumentationEngine.
  • EventSource Geri.
  • DiagnosticSource en son .NET veya .NET Core SDK'larında geri çağırmalar.

Bağımlılıkları el ile izleme

Otomatik olarak toplanmayan aşağıdaki bağımlılık örnekleri için el ile izleme gerekir:

  • Azure Cosmos DB yalnızca HTTP/HTTPS kullanıldığında otomatik olarak izlenir. TCP modu, sürümünden 2.22.0-Beta1eski SDK sürümleri için Uygulama Analizler tarafından otomatik olarak yakalanmaz.
  • Redis

SDK tarafından otomatik olarak toplanmayan bağımlılıklar için, standart otomatik toplama modülleri tarafından kullanılan TrackDependency API'sini kullanarak bunları el ile izleyebilirsiniz.

Örnek

Kodunuzu kendi yazmadığınız bir derlemeyle oluşturursanız, tüm çağrıları zamanlayabilirsiniz. Bu senaryo, yanıt sürelerinize ne gibi bir katkı sağladığını bulmanıza olanak sağlar.

Bu verilerin Application Analizler'daki bağımlılık grafiklerinde görüntülenmesini sağlamak için kullanarak TrackDependencygönderin:


    var startTime = DateTime.UtcNow;
    var timer = System.Diagnostics.Stopwatch.StartNew();
    try
    {
        // making dependency call
        success = dependency.Call();
    }
    finally
    {
        timer.Stop();
        telemetryClient.TrackDependency("myDependencyType", "myDependencyCall", "myDependencyData",  startTime, timer.Elapsed, success);
    }

Alternatif olarak, TelemetryClient Giden bağımlılıkları izleme bölümünde gösterildiği gibi bağımlılıkları StartOperationStopOperationel ile izlemek için kullanılabilen ve uzantı yöntemlerini sağlar.

Standart bağımlılık izleme modülünü kapatmak istiyorsanız, ASP.NET uygulamalar için Application Analizler.config içindeki başvuruyu DependencyTrackingTelemetryModule kaldırın. ASP.NET Core uygulamaları için ASP.NET Core uygulamaları için Uygulama Analizler'daki yönergeleri izleyin.

Web sayfalarından AJAX çağrılarını izleme

Web sayfaları için Application Analizler JavaScript SDK'sı AJAX çağrılarını otomatik olarak bağımlılık olarak toplar.

Tam SQL sorgusu almak için gelişmiş SQL izleme

Not

Azure İşlevleri, SQL metin toplamayı etkinleştirmek için ayrı ayarlar gerektirir. Daha fazla bilgi için bkz . SQL sorgu koleksiyonunu etkinleştirme.

SQL çağrıları için, sunucunun ve veritabanının adı her zaman toplanır ve toplanan DependencyTelemetryöğesinin adı olarak depolanır. Veri olarak adlandırılan başka bir alan, tam SQL sorgu metnini içerebilir.

ASP.NET Core uygulamaları için artık aşağıdakileri kullanarak SQL Metin toplamayı kabul etmek gerekir:

services.ConfigureTelemetryModule<DependencyTrackingTelemetryModule>((module, o) => { module. EnableSqlCommandTextInstrumentation = true; });

ASP.NET uygulamalar için, tam SQL sorgu metni bayt kod izlemesi yardımıyla toplanır. Bu, izleme altyapısının kullanılmasını veya System.Data.SqlClient kitaplığı yerine Microsoft.Data.SqlClient NuGet paketinin kullanılmasını gerektirir. Tam SQL Sorgu koleksiyonunu etkinleştirmek için platforma özgü adımlar aşağıdaki tabloda açıklanmıştır.

Platform Tam SQL sorgusu almak için gereken adımlar
Azure Uygulaması Hizmetinde Web Apps Web uygulaması denetim masanızda Uygulama Analizler bölmesini açın ve .NET altında SQL Komutlarını etkinleştirin.
IIS Sunucusu (Azure Sanal Makineler, şirket içi vb.) Microsoft.Data.SqlClient NuGet paketini kullanın veya izleme altyapısını yüklemek ve IIS'yi yeniden başlatmak için Application Analizler Agent PowerShell Modülünü kullanın.
Azure Bulut Hizmetleri StatusMonitor'ı yüklemek için bir başlangıç görevi ekleyin.
Uygulamanız, ASP.NET veya ASP.NET Core uygulamaları için NuGet paketleri yüklenerek derleme zamanında Application Analizler SDK'sına eklenmelidir.
IIS Express Microsoft.Data.SqlClient NuGet paketini kullanın.
Azure Uygulaması Hizmetinde Web İşleri Microsoft.Data.SqlClient NuGet paketini kullanın.

Önceki platforma özgü adımlara ek olarak, dosyayı aşağıdaki kodla değiştirerek SQL komut koleksiyonunu etkinleştirmeyi applicationInsights.config de açıkça kabul etmeniz gerekir:

<TelemetryModules>
  <Add Type="Microsoft.ApplicationInsights.DependencyCollector.DependencyTrackingTelemetryModule, Microsoft.AI.DependencyCollector">
    <EnableSqlCommandTextInstrumentation>true</EnableSqlCommandTextInstrumentation>
  </Add>

Önceki durumlarda, izleme altyapısının doğru yüklendiğini doğrulamanın doğru yolu, toplanan DependencyTelemetry SDK sürümünün olduğunu doğrulamaktır rddp. rdddsdrddf veya kullanımı bağımlılıkların veya EventSource geri çağırmalar aracılığıyla DiagnosticSource toplandığını gösterir, böylece tam SQL sorgusu yakalanmaz.

Bağımlılık verileri nerede bulunur?

  • Uygulama Haritası , uygulamanızla komşu bileşenler arasındaki bağımlılıkları görselleştirir.
  • İşlem Tanılama, birleşik, bağıntılı sunucu verilerini gösterir.
  • Tarayıcılar sekmesi , kullanıcılarınızın tarayıcılarından gelen AJAX çağrılarını gösterir.
  • Bağımlılık çağrılarını denetlemek için yavaş veya başarısız istekler arasından seçim yapın.
  • Bağımlılık verilerini sorgulamak için analiz kullanılabilir.

Yavaş istekleri tanılama

Her istek olayı, istek işlenirken izlenen bağımlılık çağrıları, özel durumlar ve diğer olaylarla ilişkilendirilir. Bu nedenle, bazı istekler kötü gidiyorsa, bunun bir bağımlılıktan gelen yavaş yanıtlar nedeniyle olup olmadığını öğrenebilirsiniz.

İsteklerden bağımlılıklara izleme

Sol taraftaki Performans sekmesini seçin ve üstteki Bağımlılıklar sekmesini seçin.

Genel altında bir Bağımlılık Adıseçin. Bir bağımlılığı seçtikten sonra, bu bağımlılığın süre dağılımının grafiği sağ tarafta görünür.

Screenshot that shows the Dependencies tab open to select a Dependency Name in the chart.

Sağ alttaki Örnekler düğmesini seçin. Ardından uçtan uca işlem ayrıntılarını görmek için bir örnek seçin.

Screenshot that shows selecting a sample to see the end-to-end transaction details.

Canlı sitenizin profilini oluşturma

Uygulama Analizler profil oluşturucu canlı sitenize yapılan HTTP çağrılarını izler ve kodunuzda en uzun süren işlevleri gösterir.

Başarısız istekler

Başarısız istekler, bağımlılıklara yapılan başarısız çağrılarla da ilişkilendirilebilir.

Soldaki Hatalar sekmesini ve ardından üst kısımdaki Bağımlılıklar sekmesini seçin.

Screenshot that shows selecting the failed requests chart.

Burada başarısız bağımlılık sayısını göreceksiniz. Başarısız bir oluşum hakkında daha fazla bilgi edinmek için alttaki tablodan bir Bağımlılık Adı seçin. Uçtan uca işlem ayrıntılarını görmek için sağ alttaki Bağımlılıklar düğmesini seçin.

Günlükler (Analiz)

Kusto sorgu dilinde bağımlılıkları izleyebilirsiniz. İşte bazı örnekler.

  • Başarısız bağımlılık çağrılarını bulun:

    
        dependencies | where success != "True" | take 10
    
  • AJAX çağrılarını bulun:

    
        dependencies | where client_Type == "Browser" | take 10
    
  • İsteklerle ilişkili bağımlılık çağrılarını bulun:

    
        dependencies
        | where timestamp > ago(1d) and  client_Type != "Browser"
        | join (requests | where timestamp > ago(1d))
          on operation_Id  
    
  • Sayfa görünümleri ile ilişkili AJAX çağrılarını bulun:

    
        dependencies
        | where timestamp > ago(1d) and  client_Type == "Browser"
        | join (browserTimings | where timestamp > ago(1d))
          on operation_Id
    

Sık sorulan sorular

Bu bölüm, sık sorulan soruların yanıtlarını sağlar.

Otomatik bağımlılık toplayıcısı bağımlılıklara başarısız çağrıları nasıl bildirir?

Başarısız bağımlılık çağrılarının success alanı False olarak ayarlanır. Modülü DependencyTrackingTelemetryModule raporlamaz ExceptionTelemetry. Bağımlılık için tam veri modeli, Uygulama Analizler telemetri veri modeli bölümünde açıklanmıştır.

Bağımlılık telemetrim için veri alımı gecikmesini Nasıl yaparım? hesapladım?

Şu kodu kullanın:

dependencies
| extend E2EIngestionLatency = ingestion_time() - timestamp 
| extend TimeIngested = ingestion_time()

Bağımlılık çağrısının başlatıldığı zamanı belirlemek Nasıl yaparım??

Log Analytics sorgu görünümünde, timestamp bağımlılık çağrısı yanıtı alındıktan hemen sonra gerçekleşen TrackDependency() çağrısının başlatıldığı anı temsil eder. Bağımlılık çağrısının başladığı zamanı hesaplamak için, bağımlılık çağrısının kaydedilen duration kısmını alıp timestamp çıkarırsınız.

Uygulama Analizler bağımlılık izleme, yanıt gövdelerini günlüğe kaydetmeyi içeriyor mu?

Application Analizler'da bağımlılık izleme, çoğu uygulama için çok fazla telemetri oluşturacağı için yanıt gövdelerinin günlüğe kaydedilmesini içermez.

Açık kaynak SDK

Her Application Analizler SDK'sı gibi bağımlılık toplama modülü de açık kaynak. Resmi GitHub deposunda kod veya rapor sorunlarını okuyun ve katkıda bulunun.

Bağımlılık otomatik toplama

Aşağıda, uygulamanızın kodunda ek değişiklik yapılması gerekmeden otomatik olarak bağımlılık olarak algılanan bağımlılık çağrılarının şu anda desteklenen listesi yer almaktadır. Bu bağımlılıklar Uygulama Analizler Uygulama eşlemesi ve İşlem tanılama görünümlerinde görselleştirilir. Bağımlılığınız aşağıdaki listede yoksa, yine de bağımlılık izleme çağrısıyla el ile izleyebilirsiniz.

.NET

Uygulama çerçeveleri Sürümler
web formlarını ASP.NET 4.5+
ASP.NET MVC 4+
WebAPI'ASP.NET 4.5+
ASP.NET Core 1.1+
İletişim kitaplıkları
HttpClient 4.5+, .NET Core 1.1+
Sqlclient .NET Core 1.0+, NuGet 4.3.0
Microsoft.Data.SqlClient 1.1.0 - en son kararlı sürüm. (Aşağıdaki Nota bakın.)
Event Hubs İstemci SDK'sı 1.1.0
ServiceBus İstemci SDK'sı 7.0.0
İstemcileri Depolama
ADO.NET 4.5+

Not

Microsoft.Data.SqlClient'ın eski sürümlerinde bilinen bir sorun vardır. Bu sorunu azaltmak için 1.1.0 veya üzerini kullanmanızı öneririz. Entity Framework Core,Microsoft.Data.SqlClient'ın en son kararlı sürümüyle birlikte gönderilmeyebilir, bu nedenle bu sorunu önlemek için en az 1.1.0'da olduğunuzu onaylamanızı öneririz.

Java

Application Analizler Java'nın otomatik olarak alınan bağımlılıklarının listesine bakın.

Node.js

Şu anda desteklenen en son modüllerin listesi burada tutulur.

JavaScript

İletişim kitaplıkları Sürümler
XMLHttpRequest Tümünü

Sonraki adımlar