Aracılığıyla paylaş


Application Insights'ta bağımlılık izleme

Not

Aşağıdaki belgeler Application Insights klasik API'sine dayanır. Application Insights 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 ve OpenTelemetry Yol Haritamız. Geçiş kılavuzu .NET, Node.js ve Python için kullanılabilir.

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. Application Insights , 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 bilgileri ö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 Application Insights SDK'ları, bağımlılıkları otomatik olarak toplayan bir telemetri modülü olan ile birlikte DependencyTrackingTelemetryModulesevk edilir. 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.ApplicationInsights.DependencyCollector NuGet paketi olarak gönderilir. 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 Application Insights 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 Insights'taki 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ı StartOperation StopOperationel 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 ApplicationInsights.config içindeki başvuruyu DependencyTrackingTelemetryModule kaldırın. ASP.NET Core uygulamaları için ASP.NET Core uygulamaları için Application Insights'taki yönergeleri izleyin.

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

Web sayfaları için Application Insights JavaScript SDK'sı bağımlılık olarak AJAX çağrılarını otomatik 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 Application Insights 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 Insights Aracısı 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 ApplicationInsights 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. rdddsd rddf 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.

Grafikte bir Bağımlılık Adı seçmek için Açık Bağımlılıklar sekmesini gösteren ekran görüntüsü.

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.

Uçtan uca işlem ayrıntılarını görmek için örnek seçmeyi gösteren ekran görüntüsü.

Canlı sitenizin profilini oluşturma

Application Insights 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.

Başarısız istekler grafiğinin seçilmesini gösteren ekran görüntüsü.

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 Application Insights 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.

Application Insights'ta bağımlılık izleme, yanıt gövdelerini günlüğe kaydetmeyi içeriyor mu?

Application Insights'ta 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 Insights 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 Application Insights Uygulama haritası 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
Depolama istemcileri
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 Insights 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ü

Sonraki adımlar