Aracılığıyla paylaş


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

Dikkat

Yeni uygulamalar veya müşteriler için Azure İzleyici OpenTelemetry Distro'yu kullanarak Azure İzleyici Application Insights'ı çalıştırmalarını öneririz. Azure İzleyici OpenTelemetry Distro, Application Insights SDK'sı ile benzer bir işlev ve deneyim sunar. .NET, Node.js ve Python için geçiş kılavuzlarını kullanarak Application Insights SDK'sından geçiş yapmak mümkündür, ancak geriye dönük uyumluluk için birkaç özellik daha eklemeye çalışıyoruz.

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 DependencyTrackingTelemetryModule ile birlikte gelir. 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ülDependencyTrackingTelemetryModule, Microsoft.ApplicationInsights.DependencyCollector NuGet paketi olarak gönderilir ve NuGet paketini veya Microsoft.ApplicationInsights.Web NuGet paketini kullandığınızda Microsoft.ApplicationInsights.AspNetCore 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 Çağrılar SqlClient ile yapıldı. SQL sorgularını yakalamak için genel SQL sorgularını almak amacıyla Gelişmiş SQL izleme bölümüne bakın.
Azure Blob Depolama Hizmeti, Tablo Depolama Hizmeti veya Kuyruk Depolama Hizmeti 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 işlemler için izleme, önizleme paketi >= 3.33.0-preview kullanılarak otomatik olarak yakalanır. Diğer ayrıntılar 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 toplanmıyorsa, 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 enstrümantasyonu kullanma. InstrumentationEngine ya StatusMonitor veya Azure Uygulama Servisi Web Apps uzantısından kullanın.
  • EventSource Geri çağrı işlevleri.
  • 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 uzantı yöntemleri StartOperation ve StopOperation sağlar, bunlar el ile bağımlılıkları izlemek için kullanılabilir ve bu, Giden bağımlılıkları izleme bölümünde gösterildiği gibi yapılabilir.

Standart bağımlılık izleme modülünü kapatmak istiyorsanız, ASP.NET uygulamaları için DependencyTrackingTelemetryModule dosyasındaki başvuruyu kaldırın. ASP.NET Core uygulamaları için Application Insights yönergelerini 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.

Platforma 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 App Hizmetinde WebJobs Microsoft.Data.SqlClient NuGet paketini kullanın.

Önceki platforma özgü adımlara ek olarak, dosyayı aşağıdaki kodla değiştirerek SQL komut koleksiyonunugerekir:

<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 uygun yolu, toplanan DependencyTelemetry SDK sürümünün rddp olduğunu doğrulamaktır. rdddsd veya rddf kullanımının, bağımlılıkların DiagnosticSource veya EventSource geri çağırmaları aracılığıyla toplandığını gösterdiğini, bu nedenle tam SQL sorgusunun yakalanamayacağını gösterir.

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 gösterilir.

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

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

Sol taraftaki 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 olan bağımlılıkların sayısını görüyorsunuz. Başarısız bir olay 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.

Kayıtlar (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
    

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 listede yoksa, yine de bağımlılık takibi çağrısıyla el ile izleyebilirsiniz.

.NET

Uygulama çerçeveleri Sürümler
ASP.NET Webformlar 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