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 DependencyTrackingTelemetryModule
sevk 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 SqlClient yapı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-Beta1
eski 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 TrackDependency
gö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
StopOperation
el 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.
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.
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.
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
- Özel durumlar
- Kullanıcı ve sayfa verileri
- Kullanılabilirlik
- Java için özel bağımlılık izleme ayarlayın.
- OpenCensus Python için özel bağımlılık izleme ayarlayın.
- Özel bağımlılık telemetrisi yazma
- Bkz. Application Insights türleri ve veri modeli için veri modeli.
- Application Insights tarafından desteklenen platformlara göz atın.