Aracılığıyla paylaş


Application Insights Klasik API SDK'larından Azure İzleyici OpenTelemetry'ye geçiş

Bu kılavuz, uygulamaları Application Insights SDK'larını (Klasik API) kullanarak Azure İzleyici OpenTelemetry'ye geçirmeye yönelik adım adım yönergeler sağlar.

Azure İzleyici OpenTelemetry araçları ile, Application Insights SDK'larında olduğu gibi benzer bir deneyim yaşayabilirsiniz. Daha fazla bilgi ve özelliğe göre özellik karşılaştırması için bkz. Özelliklerin yayın durumu.

Tavsiye

Arşivlenmiş .NET veya Node.js klasik API SDK bilgilerini gözden geçirmek için bkz. API 2.x.

Application Insights .NET SDK 2.x'ten OpenTelemetry (OTel) tabanlı bir uygulamaya yükseltmek için Application Insights .NET yazılım geliştirme seti (SDK) 3.x'i kullanın. 3.x SDK, çoğu TelemetryClient ve TelemetryConfiguration uygulama programlama arabirimini (API'ler) tutar ve Application Insights'a telemetri göndermek için Azure Monitor OpenTelemetry Exporter'ı kullanır.

Çoğu klasik Track* çağrı yükseltmeden sonra çalışmaya devam eder, ancak OpenTelemetry sinyalleri yayan bir iç eşleme katmanı üzerinden yönlendirilir.

Yeni bir uygulama oluşturuyorsanız veya Azure Monitor OpenTelemetry Distro'yu kullanıyorsanız, bunun yerine Azure Monitor OpenTelemetry Distro kullanın. Aynı uygulamada Application Insights .NET SDK 3.x ve OpenTelemetry Distro Azure Monitor kullanmayın.

Application Insights .NET SDK 3.x'e genel bakış

Application Insights .NET SDK 3.x şu NuGet paketlerini sağlar:

  • Microsoft.ApplicationInsights için TelemetryClient ve TelemetryConfiguration
  • ASP.NET Core (Active Server Pages .NET) web uygulamaları için Microsoft.ApplicationInsights.AspNetCore
  • Microsoft.ApplicationInsights.WorkerService Worker Service ve konsol uygulamaları için
  • .NET Framework'te ASP.NET uygulamaları için Microsoft.ApplicationInsights.Web
  • Microsoft.ApplicationInsights.NLogTarget NLog ile tümleştirme için (beta)

Kod örnekleri ve ayrıntılı geçiş kılavuzu için depo belgelerini kullanın:

3.x sürümüne yükseltme

1. Adım: Uyumsuz paketlere bağımlılıkları kaldırma

SDK 3.x ile uyumlu olmadıklarından bu paketleri kaldırın:

  • Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel
  • Microsoft.ApplicationInsights.DependencyCollector
  • Microsoft.ApplicationInsights.EventCounterCollector
  • Microsoft.ApplicationInsights.PerfCounterCollector
  • Microsoft.ApplicationInsights.WindowsServer
  • Microsoft.Extensions.Logging.ApplicationInsights
  • Microsoft.ApplicationInsights.Log4NetAppender
  • Microsoft.ApplicationInsights.TraceListener
  • Microsoft.ApplicationInsights.DiagnosticSourceListener
  • Microsoft.ApplicationInsights.EtwCollector
  • Microsoft.ApplicationInsights.EventSourceListener

SDK 3.x, bu paketlerin 3.x sürümlerini yayımlamaz. Bunun yerine Application Insights .NET SDK 3.x'e genel bakış listelenen desteklenen 3.x paketlerini kullanın. Aşağıdaki bölümlerde bu paketler için hedeflenen değiştirmeler açıklanmaktadır. Bazı durumlarda, işlevsellik desteklenen 3.x paketlerinde yerleşiktir veya OpenTelemetry API'leri ile değiştirilir.

Uyarı

Bu liste yalnızca Microsoft paketlerini içerir. 2.x'e bağlı Microsoft.ApplicationInsights üçüncü taraf paketleri kullanıyorsanız (örneğin, Serilog.Sinks.ApplicationInsights), yükseltmeden önce bu paketlerin SDK 3.x'i desteklediğini doğrulayın. Paket bakımcılarının yönergelerini izleyin.

2. Adım: Paket sürümlerini 3.x sürümüne yükseltme

Desteklenen kalan Application Insights paketlerini en son 3.x sürümüne yükseltin.

Önemli

Application Insights 2.x ve 3.x paketlerini aynı uygulamada karıştırmayın. Application Insights paket referanslarının tamamını birlikte güncelleyin.

3. Adım: Uyumsuzluk yaratan değişiklikler için kodu ve yapılandırmayı güncelleme

Hem büyük değişiklikler referanslarını hem de ayrıntılı geçiş kılavuzunu gözden geçirin. Çoğu uygulamanın aşağıdaki alanlardan birinde veya daha fazlasında kodu veya yapılandırmayı güncelleştirmesi gerekir:

2.x API, ayar veya kullanım modeli 3.x kılavuzu
TrackPageView TrackPageView çağrılarını kaldırın. Sayfa görünümü izleme .NET 3.x SDK'sında kaldırılır.
TrackEvent, TrackException ve TrackAvailability içeren aşırı yüklemeler IDictionary<string, double> metrics Özel ölçümler parametresini kaldırın. TrackMetric() kullanarak ölçümleri ayrı olarak izleyin.
GetMetric veya MetricConfiguration veya MetricAggregationScope kullanan aşırı yüklemeler Basitleştirilmiş GetMetric aşırı yüklemeleri kullanın. Ölçüm yapılandırması ve toplama, SDK 3.x'te dahili olarak yönetilir.
InstrumentationKey yapılandırma veya TelemetryClient.InstrumentationKey TelemetryConfiguration.ConnectionString kullanın ve izleme anahtarı yerine bir bağlantı dizesi sağlayın. SDK 3.x bir bağlantı dizesi gerektirir ve yapılandırılmamışsa başlangıçta başarısız olabilir. Test senaryoları için gibi InstrumentationKey=00000000-0000-0000-0000-000000000000sahte bir bağlantı dizesi kullanabilirsiniz.
TelemetryClient() veya TelemetryConfiguration.Active TelemetryConfiguration.CreateDefault() kullanarak açıkça bir yapılandırma oluşturun ve onu new TelemetryClient(config)'e geçirin.
TelemetryModule, TelemetryInitializerveya TelemetryProcessor özelleştirme Özel başlatıcılar veya işlemciler OpenTelemetry tabanlı işlemcilere geçirilmelidir. Yerleşik 2.x işlemcilere, başlatıcılara ve modüllere başvurular kaldırılmalıdır. Daha fazla bilgi için bkz. geçiş kılavuzu.
ITelemetryChannel veya TelemetryConfiguration.TelemetryChannel 3.x, Azure İzleyici dışa vericisini dahili olarak entegre ettiği için klasik kanal soyutlaması kaldırılmıştır. Testler için, bellek içi bir dışa aktarıcı gibi OpenTelemetry ile uyumlu doğrulamaları kullanın.
EnableAdaptiveSampling Uyarlamalı örneklemeyi TracesPerSecond veya SamplingRatio ile değiştirin.
Microsoft.ApplicationInsights.Web .NET Framework 4.5.2'yi hedefleme Hedef .NET Framework 4.6.2 veya üzeri.
Ölçüm adı ve ad alanı konvansiyonları OpenTelemetry araç adlandırma söz dizimini izlemek için, name, metricId ve metricNamespace değerlerini, TrackMetric(), GetMetric() ve MetricIdentifier ile kullanılan halinde güncelleyin. Ölçüm adları ve ad alanları bir harfle başlamalıdır ve yalnızca harf, basamak, _, ., -veya /içerebilir. Boşluklara izin verilmez.

Kaldırılan genişletilebilirlik noktalarını değiştirme

Application Insights .NET SDK 2.x telemetri modülleri, başlatıcılar, işlemciler ve kanallar gibi Application Insights'a özgü genişletilebilirlik türleri sağladı. Application Insights .NET SDK 3.x bunun yerine OpenTelemetry genişletilebilirliğini kullanır.

Uç durumlar da dahil olmak üzere 2.x genişletilebilirlik noktalarını değiştirmenin ayrıntılı yönergeleri için geçiş kılavuzu bölümüne bakınız.

Tavsiye

Rol meta verileri gibi kaynak tabanlı değerler, her telemetri öğesinde görüntülenmek yerine OpenTelemetry kaynak eşlemeleri aracılığıyla akabilir. Her telemetri öğesinde anahtar-değer çifti gerekiyorsa, GlobalProperties veya özel bir işlemci kullanın.

Örneklemeyi yapılandırma

Application Insights .NET SDK 3.x izlemeler için iki örnekleme modunu destekler (istekler ve bağımlılıklar):

  • Yüzde tabanlı örnekleme için (0,0 - 1,0) ayarlayın SamplingRatio .
  • Hız sınırlı örnekleme için ayarlayın TracesPerSecond (varsayılan: Saniyede beş izleme).

SDK 3.x, isteklere ve bağımlılıklara aynı örnekleme ayarlarını uygular. SDK 3.x, istekler ve bağımlılıklar için ayrı örnekleme ayarlarını desteklemez.

Bir istek veya bağımlılık örneklemeye dahil edildiğinde, SDK 3.x varsayılan olarak ana izlemenin örnekleme kararını ilgili kayıt ve günlüklere uygular. Bu davranışı devre dışı bırakmak için EnableTraceBasedLogsSampler değerini false olarak ayarlayın.

SamplingRatio, TracesPerSecond ve EnableTraceBasedLogsSampler öğelerini TelemetryConfiguration, appsettings.json veya applicationinsights.config içinde ayarlayabilirsiniz.

Yükseltme sorunlarını giderme

SDK 3.x'e yükseltme sırasında telemetriyi doğrulamak için şu adımları kullanın:

  • Başlatmadan önce tam bağlantı dizesinin yapılandırıldığını onaylayın. Gerçek kaynağı olmayan testlerde telemetriyi doğrularsanız, sahte bir bağlantı dizesi kullanın.
  • Yapılandırma hatalarını ve dışarı aktarma hatalarını tanımlamak için Application Insights kendi kendine tanılama günlüklerini toplayın.
  • Azure Monitor alımına güvenmeden önce izlemelerin, ölçümlerin ve günlüklerin beklendiği gibi yayıldığını doğrulamak için OpenTelemetry konsol dışa aktarıcısını ekleyin.
  • Daha önce telemetriyi simüle ederek birim testi yaptıysanız, bellek içi ihraç ediciler veya test ortamlarındaki diğer test ihraç ediciler gibi OpenTelemetry'ye uygun doğrulama yöntemlerine geçin.
  • Üst-alt izleme kararlarını doğrulayarak örnekleme ayarlarının beklendiği gibi çalıştığını onaylayın.
  • Application Insights'ta doğru ilişkilendirmeyi sağlamak için hizmet adı, rol adı, rol örneği ve ortam gibi kaynak özniteliklerini doğrulayın.
  • Özel zenginleştirmeyi geçirdiyseniz, özelliklerinizin beklediğiniz yerde göründüğünü doğrulayın. Kaynak tabanlı eşlemeler 2.x davranışından farklı olabilir.

Ayrıntılı sorun giderme kılavuzu ve örnekleri için aşağıdaki kaynakları kullanın:

OpenTelemetry Terminolojisi

Terminoloji için OpenTelemetry belirtimlerindeki sözlüğe bakın.

Aşağıdaki tabloda Application Insights'ta kullanılan eski terimler ve bunların OpenTelemetry ile yer değiştirmeleri vurgulanır.

Uygulama Öngörüleri OpenTelemetry
Otomatik toplayıcılar Enstrümantasyon kütüphaneleri
Kanal İhracatçı
Kod gerektirmeyen / Aracılı tabanlı Otomatik enstrümantasyon
İzler Kayıtlar
Requests Sunucu Kapsamı
Bağımlılıklar Diğer Span Türleri (Müşteri, Dahili, vb.)
İşlem Kimliği İzleme Kimliği
Kimlik veya İşlem Ana Kimliği Span Kimliği