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.
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.
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:
3.x sürümüne yükseltirken genellikle kod değişikliği olmaz. 3.x SDK bağımlılıkları, 2.x SDK bağımlılıklarının no-op API sürümleridir. Ancak, 3.x Java aracısıyla kullanıldığında, 3.x Java aracısı onlar için uygulamayı sağlar. Sonuç olarak, özel izlemeniz 3.x Java aracısı tarafından sağlanan yeni otomatik izleme ile eşleştirilir.
1. Adım: Bağımlılıkları güncelleştirme
| 2.x bağımlılığı |
Eylem |
Açıklamalar |
applicationinsights-core |
3.4.3 veya daha sonraki bir sürüme güncelleştirme |
|
applicationinsights-web |
3.4.3 sürümüne veya daha sonrasına güncelleyin ve dosyanızdan Application Insights web filtresini web.xml kaldırın. |
|
applicationinsights-web-auto |
şununla veya daha sonraki bir sürümle 3.4.3 değiştir: applicationinsights-web |
|
applicationinsights-logging-log4j1_2 |
Bağımlılığı kaldırın ve Application Insights ekleyicisini Log4j yapılandırmanızdan kaldırın. |
Log4j 1.2 ekleyicisi gerekli değildir çünkü 3.x Java aracısı Log4j 1.2'ye otomatik müdahale eder. |
applicationinsights-logging-log4j2 |
Bağımlılığı kaldırın ve Application Insights ekleyicisini Log4j yapılandırmanızdan kaldırın. |
Log4j 2 ekleyicisi gerekli değildir çünkü 3.x Java aracısı Log4j 2'yi otomatik olarak ekler. |
applicationinsights-logging-logback |
Bağımlılığı kaldırın ve Application Insights ekleyicisini Logback yapılandırmanızdan kaldırın. |
3.x Java aracısı logback'i otomatik olarak açtığından, logback ekleyicisi gerekli değildir. |
applicationinsights-spring-boot-starter |
şununla veya daha sonraki bir sürümle 3.4.3 değiştir: applicationinsights-web |
Bulut rolü adı artık varsayılan değeri spring.application.namedeğildir. Bulut rol adını nasıl yapılandıracağınızı öğrenmek için Azure Monitor OpenTelemetry'yi yapılandırma konusuna bakın. |
2. Adım: 3.x Java aracısını ekleme
3.x Java aracısını Java Sanal Makine (JVM) komut satırı args'nize ekleyin, örneğin:
-javaagent:path/to/applicationinsights-agent-3.7.8.jar
Application Insights 2.x Java aracısını kullanıyorsanız, mevcut -javaagent:... önceki örnekle değiştirmeniz gerekir.
Uyarı
applicationinsights-spring-boot-starter kullanıyorsanız, Java aracısı yerine Spring Boot tümleştirmesini kullanabilirsiniz. Rehberlik için 3.x Spring Boot'a gidin.
Bkz. Azure Monitor OpenTelemetry'yi yapılandırma.
Diğer notlar
Bu belgenin geri kalanında, 2.x'ten 3.x'e yükseltirken karşılaşabileceğiniz sınırlamalar ve değişiklikler ve bazı yararlı geçici çözümler açıklanmaktadır.
Telemetry Başlatıcıları
2.x SDK TelemetriSiyelleştiricileri 3.x aracısını kullanırken çalışmaz. Daha önce TelemetryInitializer yazmayı gerektiren kullanım örneklerinin çoğu Application Insights Java 3.x'te özel boyutlar yapılandırılarak veya miras alınan öznitelikler kullanılarak çözülebilir.
TelemetryProcessors
2.x SDK'sından TelemetryProcessors, 3.x aracısını kullandığınızda çalışmaz. Daha önce TelemetryProcessor yazılması gereken pek çok kullanım örneği, Application Insights Java 3.x'te örnekleme geçersiz kılmaları yapılandırılarak çözülebilir.
Tek bir JVM'de birden çok uygulama
Bu kullanım örneği, Application Insights Java 3.x'te Bulut rol adı geçersiz kılma (önizleme) ve/veya Bağlantı dizesi geçersiz kılma (önizleme) kullanılarak desteklenir.
İşlem adları
Application Insights Java 2.x SDK'sında, bazı durumlarda işlem adları tam yolu içerir, örneğin:
Application Insights Java 3.x'teki işlem adları genellikle Application Insights Portalı U/X'te daha iyi bir toplu görünüm sağlayacak şekilde değiştirildi, örneğin:
Ancak, bazı uygulamalar için yine de önceki işlem adları tarafından sağlanan U/X'te toplu görünümü tercih edebilirsiniz. Bu durumda, önceki davranışı çoğaltmak için 3.x'teki telemetri işlemcileri (önizleme) özelliğini kullanabilirsiniz.
Aşağıdaki kod parçacığı, önceki işlevsel davranışı yeniden oluşturmak için birleştirilen üç telemetri işlemcisini yapılandırır.
Telemetri işlemcileri aşağıdaki eylemleri gerçekleştirir (sırayla):
İlk telemetri işlemcisi bir öznitelik işlemcisidir (türüne attributesahiptir), yani öznitelikleri olan tüm telemetri için geçerlidir (şu anda requests ve dependencies, ancak yakında da traces).
Herhangi bir http.request.method ve url.path adlı özniteliklere sahip telemetriyle eşleşir.
Ardından url.path özniteliğini tempName adlı yeni bir özniteliğe ayıklar.
İkinci telemetri işlemcisi, türü span olan bir span işlemcidir, bu, requests ve dependencies için geçerli olduğu anlamına gelir.
adlı tempPathözniteliği olan herhangi bir span ile eşleşir.
Ardından özniteliğinden tempPathspan adını güncelleştirir.
Son telemetri işlemcisi, ilk telemetri işlemcisi ile aynı türde bir öznitelik işlemcisidir.
adlı tempPathbir özniteliği olan telemetri verileriyle eşleşir.
Ardından adlı tempPathözniteliği siler ve özniteliği özel bir boyut olarak görünür.
{
"preview": {
"processors": [
{
"type": "attribute",
"include": {
"matchType": "strict",
"attributes": [
{ "key": "http.request.method" },
{ "key": "url.path" }
]
},
"actions": [
{
"key": "url.path",
"pattern": "https?://[^/]+(?<tempPath>/[^?]*)",
"action": "extract"
}
]
},
{
"type": "span",
"include": {
"matchType": "strict",
"attributes": [
{ "key": "tempPath" }
]
},
"name": {
"fromAttributes": [ "http.request.method", "tempPath" ],
"separator": " "
}
},
{
"type": "attribute",
"include": {
"matchType": "strict",
"attributes": [
{ "key": "tempPath" }
]
},
"actions": [
{ "key": "tempPath", "action": "delete" }
]
}
]
}
}
Örnekleme ve eksik loglar
Hız sınırlı örnekleme, 3.4 ajanında varsayılan olarak etkinleştirilir ve bu, beklenmedik şekilde günlüklerin kaybolmasına neden olabilir.
Proje örneği
Bu Java 2.x SDK projesi3.x Java aracısı kullanılarak yeni bir projeye geçirilir.
Bu kılavuz, Application Insights Node.js SDK 2.X'ten OpenTelemetry'ye yükseltmek için iki seçenek sağlar.
Uyarı
Azure İşlev Uygulamaları için bkz. Azure Functions ile OpenTelemetry kullanma.
Temiz yükleme
OpenTelemetry JavaScript Uygulama Programlama Arabirimi (API) ve Yazılım Geliştirme Seti (SDK) hakkında önkoşul bilgisi elde edin.
- OpenTelemetry JavaScript belgelerini okuyun.
- Azure Monitor OpenTelemetry'in ayarlarını gözden geçirin.
- OpenTelemetry ekleme, değiştirme ve filtrelemeyi değerlendirin.
applicationinsights Bağımlılığı projenizden kaldırın.
npm uninstall applicationinsights
SDK 2.X uygulamasını kodunuzdan kaldırın.
Kodunuzdan tüm Application Insights araçlarını kaldırın. Application Insights istemcisinin başlatıldığı, değiştirildiği veya çağrıldığı bölümleri silin.
Azure Monitor OpenTelemetry Distro ile Application Insights'u etkinleştirin.
Önemli
Başka bir şeyi içeri aktarmadan önce, useAzureMonitor çağrılmalıdır. Önce başka kitaplıklar içeri aktarılırsa telemetri kaybı olabilir.
Azure Monitor OpenTelemetry Distro'ya katılmak için getting started'ı izleyin.
Azure Monitor OpenTelemetry Distro değişiklikleri ve sınırlamaları
- Application Insights SDK 2.X'teki API'ler Azure Monitor OpenTelemetry Distro'da kullanılamaz. Application Insights SDK 3.X telemetri alımı (özel olaylar ve ölçümler gibi) için bölünemez bir yükseltme yolu sağlarken, SDK 2.X API'lerinin çoğu desteklenmez ve OpenTelemetry tabanlı API'lerde kod değişiklikleri gerektirir.
- Bağımlılıkları, günlükleri ve özel durumları işlem adına göre filtreleme henüz desteklenmiyor.
Güncelleme
Paket bağımlılığını yükseltin applicationinsights .
npm update applicationinsights
Uygulamanızı yeniden oluşturun.
Uygulamanızı test edin.
Application Insights SDK 3.X'te desteklenmeyen yapılandırma seçeneklerini kullanmaktan kaçınmak için bkz . Desteklenmeyen Özellikler.
SDK, ana sürüm artışının ardından desteklenmeyen API kullanımıyla ilgili uyarılar kaydediyorsa ve bu işlevlere ihtiyacınız varsa Application Insights SDK 2.X'i kullanmaya devam edin.
Değişiklikler ve sınırlamalar
Aşağıdaki değişiklikler ve sınırlamalar her iki yükseltme yolu için de geçerlidir.
Node.js sürüm desteği
Hem JavaScript için Azure SDK hem de OpenTelemetry Node.js sürümü desteklediğinde Application Insights 3.x SDK'sı Node.js bir sürümü destekler. Geçerli OpenTelemetry çalışma zamanı desteği için OpenTelemetry tarafından desteklenen çalışma zamanları bölümüne gidin.
Node 8 gibi eski bir Node.js sürümü kullanıyorsanız, OpenTelemetry çözümleri çalıştırılabilir ancak beklenmeyen davranışlar veya hataya neden olan değişikliklere neden olabilir. Application Insights SDK'sı JavaScript için Azure SDK dayanır ve JavaScript için Azure SDK destek ilkesi, kullanım süresi sonuna ulaşmış Node.js sürümler için desteği garanti etmez. Ayrıntılar için JS destek ilkesi için Azure SDK adresine gidin.
Yapılandırma seçenekleri
Application Insights SDK sürüm 2.X, Azure Monitor OpenTelemetry Distro'da veya Application Insights SDK 3.X'e ana sürüm yükseltmesinde bulunmayan yapılandırma seçenekleri sunar. Bu değişiklikleri ve hala desteklediğimiz seçenekleri bulmak için SDK yapılandırma belgelerine bakın.
Genişletilmiş ölçümler
Genişletilmiş ölçümler Application Insights SDK 2.X'te desteklenir; ancak bu ölçümler için destek hem ApplicationInsights SDK'sının 3.X sürümünde hem de OpenTelemetry Distro Azure Monitor sona erer.
Telemetri İşlemcileri
Azure Monitor OpenTelemetry Distro ve Application Insights SDK 3.X, TelemetryProcessors'ı desteklemese de, span ve günlük kaydı işlemcilerini geçirmenize olanak tanır. Nasıl olduğu hakkında daha fazla bilgi için bkz. Azure Monitor OpenTelemetry Distro projesi.
Bu örnekte, Application Insights SDK 2.X'te özel bir özellik ekleyen bir telemetri işlemcisi oluşturma ve uygulama eşdeğeri gösterilmektedir.
const applicationInsights = require("applicationinsights");
applicationInsights.setup("YOUR_CONNECTION_STRING");
applicationInsights.defaultClient.addTelemetryProcessor(addCustomProperty);
applicationInsights.start();
function addCustomProperty(envelope: EnvelopeTelemetry) {
const data = envelope.data.baseData;
if (data?.properties) {
data.properties.customProperty = "Custom Property Value";
}
return true;
}
Bu örnekte, Azure Monitor OpenTelemetry Distro uygulamasının dağıtım yapılandırmasına bir SpanProcessor geçirmek için nasıl değiştirileceği gösterilmektedir.
import { Context, Span} from "@opentelemetry/api";
import { ReadableSpan, SpanProcessor } from "@opentelemetry/sdk-trace-base";
const { useAzureMonitor } = require("@azure/monitor-opentelemetry");
class SpanEnrichingProcessor implements SpanProcessor {
forceFlush(): Promise<void> {
return Promise.resolve();
}
onStart(span: Span, parentContext: Context): void {
return;
}
onEnd(span: ReadableSpan): void {
span.attributes["custom-attribute"] = "custom-value";
}
shutdown(): Promise<void> {
return Promise.resolve();
}
}
const options = {
azureMonitorExporterOptions: {
connectionString: "YOUR_CONNECTION_STRING"
},
spanProcessors: [new SpanEnrichingProcessor()],
};
useAzureMonitor(options);
Python uygulamalarını Azure Monitor OpenTelemetry Distro'a geçirmek için bu adımları izleyin.
1. Adım: OpenCensus kitaplıklarını kaldırma
OpenCensus ile ilgili tüm kitaplıkları ve opencensus-* ile başlayan tüm PyPI paketlerini kaldırın.
pip freeze | grep opencensus | xargs pip uninstall -y
2. Adım: Kodunuzdan OpenCensus'ı kaldırma
OpenCensus SDK ve Azure Monitor OpenCensus dışa aktarıcısının tüm örneklerini kodunuzdan kaldırın.
OpenCensus API/SDK'nin kaldırılması gereken tüm tümleştirmelerini, dışa aktarımlarını ve örneklerini bulmak için "opencensus ile başlayan içe aktarma deyimlerini denetleyin."
Kaldırılması gereken içe aktarım ifadeleri örnekleri aşağıdadır.
from opencensus.ext.azure import metrics_exporter
from opencensus.stats import aggregation as aggregation_module
from opencensus.stats import measure as measure_module
from opencensus.ext.azure.trace_exporter import AzureExporter
from opencensus.trace.samplers import ProbabilitySampler
from opencensus.trace.tracer import Tracer
from opencensus.ext.azure.log_exporter import AzureLogHandler
3. Adım: OpenTelemetry Python API'leri/SDK'ları hakkında bilgi sahibi olun
Aşağıdaki belgelerde OpenTelemetry Python API'leri/SDK'ları hakkında önkoşul bilgisi sağlanmaktadır.
Uyarı
OpenTelemetry Python ve OpenCensus Python farklı API yüzeylerine, otomatik toplama özelliklerine ve ekleme yönergelerine sahiptir.
4. Adım: Azure Monitor OpenTelemetry Distro'yu ayarlama
Azure Monitor OpenTelemetry Distro'yu kullanıma başlamak için başlarken sayfasını takip edin.
Değişiklikler ve sınırlamalar
OpenCensus'tan OpenTelemetry'ye geçirilirken aşağıdaki değişiklikler ve sınırlamalarla karşılaşılabilir.
3.7'den önceki Python sürümleri
Python için OpenTelemetry tabanlı izleme, Python 3.7 ve sonraki sürümleri destekler. OpenTelemetry Python 2.7, 3.4, 3.5 veya 3.6'yı desteklemez.
Python 2.7, 3.4, 3.5 ve 3.6 kullanım ömrü sona erer. Sürüm durumu için Python sürüm desteği gidin.
Python 2.7, 3.4, 3.5 veya 3.6'da kalırsanız, OpenTelemetry çözümleri çalıştırılabilir ancak Microsoft'un desteklemediği beklenmeyen davranış veya hataya neden olabilecek değişiklikler oluşturabilir.
OpenCensus için, opencensus-ext-azure'nin son yayımlanan sürümü bu Python sürümlerinde çalışır. Proje yeni sürümler yayımlamaz.
Configurations
OpenCensus Python telemetrinin toplanması ve dışarı aktarımıyla ilgili bazı configuration seçenekleri sağladı.
OpenTelemetry Python API'lerini ve SDK'sını kullanarak aynı yapılandırmaları ve daha fazlasını elde edebilirsiniz. OpenTelemetry Azure monitor Python Distro, Python uygulamalarınız için en yaygın izleme gereksinimleri için tek bir noktadan daha fazlasıdır. Distro OpenTelemetry API'lerini/SDk'yi kapsüllediğinden, daha yaygın olmayan kullanım örnekleri için bazı yapılandırmalar şu anda Distro için desteklenmeyebilir. Bunun yerine, OpenTelemetry API'leri/SDK'ları ile izleme gereksinimlerinize uygun olması gereken Azure Monitor OpenTelemetry dışa aktarıcısına geçmeyi tercih edebilirsiniz. Bu yapılandırmalardan bazıları şunlardır:
- Özel yayıcılar
- Özel örnekleyiciler
- Ek span/günlük işlemcileri/ölçüm okuyucuları ekleme
Azure Functions ile uyum
bir Azure işlevindeki diğer Python uygulamaları çağıran Python uygulamalar için dağıtılmış izleme özellikleri sağlamak amacıyla, bağlı dağıtılmış graflara izin vermek üzere opencensus-extension-azure-functions paketi sağlanmıştır.
Şu anda Azure Monitor için OpenTelemetry çözümleri bu senaryoyu desteklemez. Geçici bir çözüm olarak, aşağıdaki örnekte gösterildiği gibi Azure işlevleri uygulamanızda izleme bağlamını el ile yayabilirsiniz.
from opentelemetry.context import attach, detach
from opentelemetry.trace.propagation.tracecontext import \
TraceContextTextMapPropagator
# Context parameter is provided for the body of the function
def main(req, context):
functions_current_context = {
"traceparent": context.trace_context.Traceparent,
"tracestate": context.trace_context.Tracestate
}
parent_context = TraceContextTextMapPropagator().extract(
carrier=functions_current_context
)
token = attach(parent_context)
...
# Function logic
...
detach(token)
Uzantılar ve ihracatçılar
OpenCensus SDK'sı telemetri toplamak için tümleştirmeler ve telemetri göndermek için dışarı aktarmalar sağlar. OpenTelemetry'de tümleştirmelere araçlar adı verilir. OpenTelemetry, dışarı aktarmalar terimini de kullanır.
OpenTelemetry Python araçları ve dışa aktarıcıları, OpenCensus kümesini kapsar ve ek olarak daha fazla kitaplık sunar. OpenTelemetry, kitaplık kapsamı ve işlevselliğinde doğrudan yükseltme sağlar.
Azure Monitor OpenTelemetry Dağıtımı, birkaç popüler OpenTelemetry Python enstrümantasyonları içerir. Kod eklemeden bu enstrümantasyonları kullanın. Microsoft bu araçları destekler.
Bu listede yer almayan diğer OpenTelemetry Python araçları ise, kullanıcılar bunları manuel olarak izleyebilir. Ancak kararlılık ve davranışın bu durumlarda garantilenmediğini veya desteklenmediğini unutmayın. Bu nedenle, bunları kendi takdirinize bağlı olarak kullanın.
Dağıtımımıza dahil edilmesi için bir topluluk enstrümantasyon kitaplığı önermek isterseniz, geri bildirim topluluğumuzda bir fikir gönderin veya oy verin. İhracatçılar için OpenTelemetry Azure Monitor dağıtımı Azure Monitor OpenTelemetry exporter ile birlikte gelir. Diğer ihracatçıları da kullanmak isterseniz, bu örnekte olduğu gibi dağıtımla birlikte kullanabilirsiniz.
TelemetryProcessors
OpenTelemetry dünyasında Telemetriİşlemcileri kavramı yoktur, ancak aynı davranışı çoğaltmak için kullanabileceğiniz API'ler ve sınıflar vardır.
Bulut Rolü Adını ve Bulut Rolü Örneğini Ayarlama
Telemetriniz için bulut rolü adını ve bulut rolü örneğini ayarlamaya yönelik buradaki yönergeleri izleyin. OpenTelemetry Azure Monitor Distro, ortam değişkenlerinden değerleri otomatik olarak getirir ve ilgili alanları doldurur.
SpanProcessors ile span'ları değiştirme
Çok yakında.
Görünümler ile ölçümleri değiştirme
Çok yakında.
OpenCensus Python Azure Monitor dışa aktarıcısı, "performance counters" adlı sistem ve performansla ilgili ölçümleri otomatik olarak topladı. Bu ölçümler Application Insights örneğinizde görünür performanceCounters . OpenTelemetry'de artık bu ölçümleri açıkça adresine performanceCountersgöndermeyiz. Gelen/giden isteklerle ilgili ölçümler standart ölçümler altında bulunabilir. OpenTelemetry'nin sistemle ilgili ölçümleri otomatik olarak toplamasını istiyorsanız OpenTelemetry Python topluluğunun katkılarıyla deneysel sistem ölçümlerini instrumentation kullanabilirsiniz. Bu paket deneyseldir ve Microsoft tarafından resmi olarak desteklenmez.
Support
Sorun giderme adımlarını, destek seçeneklerini incelemek veya OpenTelemetry hakkında geri bildirimde bulunmak için bkz. Azure Monitor Application Insights için OpenTelemetry sorun giderme, destek ve geri bildirim.
Aşağıdaki tabloda Application Insights'ta kullanılan eski terimler ve bunların OpenTelemetry ile yer değiştirmeleri vurgulanır.