Azure İzleyici OpenTelemetry'yi yapılandırma

Bu makale, Azure İzleyici OpenTelemetry dağıtımının yapılandırma ayarlarını kapsar.

Connection string

Application Analizler'daki bir bağlantı dizesi, telemetri verilerini göndermek için hedef konumu tanımlar ve izleme ve analiz için uygun kaynağa ulaşmasını sağlar.

bağlantı dizesi yapılandırmak için aşağıdaki üç yoldan birini kullanın:

  • Sınıfınızda uygulama başlangıcınıza program.cs ekleyinUseAzureMonitor().

    // Create a new ASP.NET Core web application builder.    
    var builder = WebApplication.CreateBuilder(args);
    
    // Add the OpenTelemetry telemetry service to the application.
    // This service will collect and send telemetry data to Azure Monitor.
    builder.Services.AddOpenTelemetry().UseAzureMonitor(options => {
        options.ConnectionString = "<Your Connection String>";
    });
    
    // Build the ASP.NET Core web application.
    var app = builder.Build();
    
    // Start the ASP.NET Core web application.    
    app.Run();
    
  • Ortam değişkeni ayarlayın.

    APPLICATIONINSIGHTS_CONNECTION_STRING=<Your Connection String>
    
  • Yapılandırma dosyanıza appsettings.json aşağıdaki bölümü ekleyin.

    {
      "AzureMonitor": {
          "ConnectionString": "<Your Connection String>"
      }
    }
    

Not

bağlantı dizesi birden fazla yerde ayarlarsanız, aşağıdaki önceliğe bağlıyız:

  1. Kod
  2. Ortam değişkeni
  3. Yapılandırma Dosyası

Bulut Rolü Adını ve Bulut Rolü Örneğini Ayarlama

Desteklenen diller için Azure İzleyici OpenTelemetry Distro kaynak bağlamını otomatik olarak algılar ve bileşeninizin Bulut Rolü Adı ve Bulut Rolü Örneği özellikleri için varsayılan değerler sağlar. Ancak, varsayılan değerleri ekibiniz için anlamlı bir değerle geçersiz kılmak isteyebilirsiniz. Bulut rolü adı değeri, Uygulama Haritası'nda düğümün altındaki ad olarak görünür.

Kaynak öznitelikleri aracılığıyla Bulut Rolü Adını ve Bulut Rolü Örneğini ayarlayın. Bulut Rolü Adı ve özniteliklerini kullanırservice.namespace, ancak ayarlı değilse service.namespace değerine geri dönerservice.name.service.name Bulut Rolü Örneği öznitelik değerini kullanır service.instance.id . Kaynakların standart öznitelikleri hakkında bilgi için bkz . OpenTelemetry Semantic Conventions.

// Setting role name and role instance

// Create a dictionary of resource attributes.
var resourceAttributes = new Dictionary<string, object> {
    { "service.name", "my-service" },
    { "service.namespace", "my-namespace" },
    { "service.instance.id", "my-instance" }};

// Create a new ASP.NET Core web application builder.
var builder = WebApplication.CreateBuilder(args);

// Add the OpenTelemetry telemetry service to the application.
// This service will collect and send telemetry data to Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor();

// Configure the OpenTelemetry tracer provider to add the resource attributes to all traces.
builder.Services.ConfigureOpenTelemetryTracerProvider((sp, builder) => 
    builder.ConfigureResource(resourceBuilder => 
        resourceBuilder.AddAttributes(resourceAttributes)));

// Build the ASP.NET Core web application.
var app = builder.Build();

// Start the ASP.NET Core web application.
app.Run();

Örneklemeyi Etkinleştir

Veri alımı hacminizi azaltmak ve maliyetlerinizi azaltmak için örneklemeyi etkinleştirmek isteyebilirsiniz. Azure İzleyici, olayları bir örnekleme oranıyla dolduran ve Application Analizler'ın 'a ItemCountdönüştürdüğü özel bir sabit oranlı örnekleyici sağlar. Sabit oranlı örnekleyici doğru deneyimler ve olay sayıları sağlar. Örnekleyici, hizmetler genelinde izlemelerinizi korumak için tasarlanmıştır ve eski Application Analizler SDK'larıyla birlikte çalışabilir. Daha fazla bilgi için bkz . Örnekleme hakkında daha fazla bilgi edinin.

Not

Ölçümler ve Günlükler örneklemeden etkilenmez.

Örnekleyici, 0 ile 1 (dahil) arasında bir örnek oranı bekler. 0,1 oranı, izlemelerinizin yaklaşık %10'unun gönderildiği anlamına gelir.

// Create a new ASP.NET Core web application builder.
var builder = WebApplication.CreateBuilder(args);

// Add the OpenTelemetry telemetry service to the application.
// This service will collect and send telemetry data to Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor(o =>
{
    // Set the sampling ratio to 10%. This means that 10% of all traces will be sampled and sent to Azure Monitor.
    o.SamplingRatio = 0.1F;
});

// Build the ASP.NET Core web application.
var app = builder.Build();

// Start the ASP.NET Core web application.
app.Run();

İpucu

Sabit oran/yüzde örneklemesi kullanırken örnekleme hızının ne olarak ayarlanacağından emin değilsiniz, %5'te (örn. 0,05 örnekleme oranı) başlayın ve hataların ve performans dikey pencerelerinde gösterilen işlemlerin doğruluğuna göre hızı ayarlayın. Daha yüksek bir oran genellikle daha yüksek doğrulukla sonuçlanır. Ancak, HERHANGI bir örnekleme doğruluğu etkiler, bu nedenle örneklemeden etkilenmeyen OpenTelemetry ölçümlerinde uyarı göndermenizi öneririz.

Microsoft Entra Id (eski adıyla Azure AD) kimlik doğrulamasını etkinleştirme

Azure'a daha güvenli bir bağlantı için Microsoft Entra kimlik doğrulamasını etkinleştirmek isteyebilirsiniz ve bu da yetkisiz telemetrinin aboneliğinize alınmasını önler.

Azure Identity tarafından sağlanan kimlik bilgisi sınıflarını destekliyoruz.

  • Yerel geliştirme için önerilir DefaultAzureCredential .
  • Sistem tarafından atanan ve kullanıcı tarafından atanan yönetilen kimlikler için önerilir ManagedIdentityCredential .
    • Sistem tarafından atanan için parametresiz varsayılan oluşturucuyu kullanın.
    • Kullanıcı tarafından atanan için oluşturucuya istemci kimliğini sağlayın.
  • Hizmet sorumluları için öneririz ClientSecretCredential .
    • Oluşturucuya kiracı kimliğini, istemci kimliğini ve istemci gizli dizisini sağlayın.
  1. En son Azure.Identity paketini yükleyin:

    dotnet add package Azure.Identity
    
  2. İstenen kimlik bilgisi sınıfını belirtin:

    // Create a new ASP.NET Core web application builder.    
    var builder = WebApplication.CreateBuilder(args);
    
    // Add the OpenTelemetry telemetry service to the application.
    // This service will collect and send telemetry data to Azure Monitor.
    builder.Services.AddOpenTelemetry().UseAzureMonitor(options => {
        // Set the Azure Monitor credential to the DefaultAzureCredential.
        // This credential will use the Azure identity of the current user or
        // the service principal that the application is running as to authenticate
        // to Azure Monitor.
        options.Credential = new DefaultAzureCredential();
    });
    
    // Build the ASP.NET Core web application.
    var app = builder.Build();
    
    // Start the ASP.NET Core web application.
    app.Run();
    

Çevrimdışı Depolama ve Otomatik Yeniden Denemeler

Güvenilirliği ve dayanıklılığı artırmak için Azure İzleyici OpenTelemetry tabanlı teklifler, uygulama Application Analizler bağlantısını kaybettiğinde varsayılan olarak çevrimdışı/yerel depolamaya yazar. Uygulama telemetrisini diske kaydeder ve düzenli aralıklarla 48 saate kadar yeniden göndermeye çalışır. Yüksek yüke sahip uygulamalarda telemetri bazen iki nedenden dolayı bırakılır. İlk olarak, izin verilen süre aşıldığında ve ikincisi, en büyük dosya boyutu aşıldığında veya SDK'nın dosyayı temizleme fırsatı olmadığında. Seçim yapmamız gerekirse ürün, eski olaylara göre daha yeni olaylar kaydeder. Daha Fazla Bilgi

Distro paketi, çevrimdışı depolama için varsayılan olarak aşağıdaki konumlardan birini kullanan AzureMonitorExporter'ı içerir (öncelik sırasına göre listelenir):

  • Windows
    • %LOCALAPPDATA%\Microsoft\AzureMonitor
    • %TEMP%\Microsoft\AzureMonitor
  • Windows Dışı
    • %TMPDIR%/Microsoft/AzureMonitor
    • /var/tmp/Microsoft/AzureMonitor
    • /tmp/Microsoft/AzureMonitor

Varsayılan dizini geçersiz kılmak için değerini ayarlamanız AzureMonitorOptions.StorageDirectorygerekir.

// Create a new ASP.NET Core web application builder.
var builder = WebApplication.CreateBuilder(args);

// Add the OpenTelemetry telemetry service to the application.
// This service will collect and send telemetry data to Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor(options =>
{
    // Set the Azure Monitor storage directory to "C:\\SomeDirectory".
    // This is the directory where the OpenTelemetry SDK will store any telemetry data that cannot be sent to Azure Monitor immediately.
    options.StorageDirectory = "C:\\SomeDirectory";
});

// Build the ASP.NET Core web application.
var app = builder.Build();

// Start the ASP.NET Core web application.
app.Run();

Bu özelliği devre dışı bırakmak için ayarını yapmalısınız AzureMonitorOptions.DisableOfflineStorage = true.

OTLP İhracatçısını Etkinleştirme

Telemetrinizi iki konuma göndermek için Azure İzleyici Vereni ile birlikte OpenTelemetry Protokolü (OTLP) Verme Aracı'nı etkinleştirmek isteyebilirsiniz.

Not

OTLP İhracatçısı yalnızca kolaylık sağlamak için gösterilir. OTLP İhracatçısını veya herhangi bir bileşeni ya da üçüncü taraf deneyimlerini resmi olarak desteklemiyoruz.

  1. Projenize OpenTelemetry.Exporter.OpenTelemetryProtocol paketini yükleyin.

    dotnet add package OpenTelemetry.Exporter.OpenTelemetryProtocol
    
  2. Aşağıdaki kod parçacığını ekleyin. Bu örnekte, OTLP alıcısı çalışan bir OpenTelemetry Toplayıcınız olduğu varsayılır. Ayrıntılar için GitHub örneğine bakın.

    // Create a new ASP.NET Core web application builder.
    var builder = WebApplication.CreateBuilder(args);
    
    // Add the OpenTelemetry telemetry service to the application.
    // This service will collect and send telemetry data to Azure Monitor.
    builder.Services.AddOpenTelemetry().UseAzureMonitor();
    
    // Add the OpenTelemetry OTLP exporter to the application.
    // This exporter will send telemetry data to an OTLP receiver, such as Prometheus
    builder.Services.AddOpenTelemetry().WithTracing(builder => builder.AddOtlpExporter());
    builder.Services.AddOpenTelemetry().WithMetrics(builder => builder.AddOtlpExporter());
    
    // Build the ASP.NET Core web application.
    var app = builder.Build();
    
    // Start the ASP.NET Core web application.
    app.Run();
    

OpenTelemetry yapılandırmaları

Aşağıdaki OpenTelemetry yapılandırmalarına, Azure İzleyici OpenTelemetry Dağıtımları kullanılırken ortam değişkenleri aracılığıyla erişilebilir.

Ortam değişkeni Açıklama
APPLICATIONINSIGHTS_CONNECTION_STRING Bunu Uygulama Analizler kaynağınızın bağlantı dizesi olarak ayarlayın.
APPLICATIONINSIGHTS_STATSBEAT_DISABLED İç ölçüm koleksiyonunu geri çevirmek için true bunu olarak ayarlayın.
OTEL_RESOURCE_ATTRIBUTES Kaynak öznitelikleri olarak kullanılacak anahtar-değer çiftleri. Kaynak öznitelikleri hakkında daha fazla bilgi için bkz . Kaynak SDK belirtimi.
OTEL_SERVICE_NAME Kaynak özniteliğinin service.name değerini ayarlar. içinde OTEL_RESOURCE_ATTRIBUTESOTEL_SERVICE_NAME de sağlanıyorsa service.name öncelik kazanır.

Sık sorulan sorular

Bu bölüm, sık sorulan soruların yanıtlarını sağlar.

OpenTelemetry nedir?

Gözlemlenebilirlik için yeni bir açık kaynak standardıdır. OpenTelemetry'de daha fazla bilgi edinin.

Microsoft Azure İzleyici neden OpenTelemetry'ye yatırım yapıyor?

Microsoft, OpenTelemetry'e en büyük katkıda bulunanlardandır.

OpenTelemetry'nin temel değer teklifleri, satıcıdan bağımsız olması ve diller arasında tutarlı API'ler/SDK'lar sağlamasıdır.

Zaman içinde OpenTelemetry'nin Azure İzleyici müşterilerinin desteklenen dillerimizin ötesindeki dillerde yazılmış uygulamaları gözlemleye olanak tanıyacağına inanıyoruz. Ayrıca zengin bir izleme kitaplıkları kümesi aracılığıyla toplayabileceğiniz veri türlerini de genişletir. Ayrıca OpenTelemetry SDK'ları, öncülleri olan Uygulama Analizler SDK'larından daha yüksek ölçekte performans gösterme eğilimindedir.

Son olarak OpenTelemetry, Microsoft'un açık kaynak benimseme stratejisiyle uyumlu hale geliyor.

OpenTelemetry'nin durumu nedir?

Bkz . OpenTelemetry Status.

"Azure İzleyici OpenTelemetry Distro" nedir?

Bunu, Azure'da birinci sınıf bir deneyim için tüm OpenTelemetry bileşenlerini bir araya getiren ince bir sarmalayıcı olarak düşünebilirsiniz. Bu sarmalayıcı OpenTelemetry'de dağıtım olarak da adlandırılır.

Neden "Azure İzleyici OpenTelemetry Distro" kullanmalıyım?

Azure İzleyici OpenTelemetry Dağıtımı'nı topluluktan yerel OpenTelemetry üzerinden kullanmanın çeşitli avantajları vardır:

OpenTelemetry ruhuyla dağıtımı açık ve genişletilebilir olacak şekilde tasarladık. Örneğin şunları ekleyebilirsiniz:

  • OpenTelemetry Protokolü (OTLP) verme ve aynı anda ikinci bir hedefe gönderme
  • Dağıtıma dahil olmayan diğer izleme kitaplıkları

Distro bir OpenTelemetry dağıtımı sağladığından, Distro OpenTelemetry tarafından desteklenen her şeyi destekler. Örneğin, OpenTelemetry destekliyorsa daha fazla telemetri işlemcisi, dışarı aktarıcı veya izleme kitaplığı ekleyebilirsiniz.

Not

Distro, örnekleyiciyi Uygulama Analizler için özel, sabit oranlı bir örnekleyiciye ayarlar. Bunu farklı bir örnekleyiciyle değiştirebilirsiniz, ancak bunu yapmak Distro'nun dahil edilen özelliklerinden bazılarını devre dışı bırakabilir. Desteklenen örnekleyici hakkında daha fazla bilgi için Azure İzleyici OpenTelemetry'yi Yapılandırma'nın Örneklemeyi Etkinleştirme bölümüne bakın.

Desteklenen tek başına OpenTelemetry vereni olmayan diller için Azure İzleyici OpenTelemetry Distro, OpenTelemetry'yi Azure İzleyici ile kullanmanın şu anda desteklenen tek yoludur. Desteklenen tek başına OpenTelemetry veren diller için, telemetri senaryonuza bağlı olarak Azure İzleyici OpenTelemetry Distro veya uygun tek başına OpenTelemetry verme işlemini kullanma seçeneğiniz vardır. Daha fazla bilgi için bkz. Azure İzleyici OpenTelemetry dışarı aktarmayı ne zaman kullanmalıyım?.

Azure İzleyici OpenTelemetry Dağıtımı'nı nasıl test ederim?

.NET, Java, JavaScript (Node.js) ve Python için etkinleştirme belgelerimize göz atın.

OpenTelemetry mi yoksa Uygulama Analizler SDK'sını mı kullanmalıyım?

Yalnızca Uygulama Analizler SDK'sında resmi destekle kullanılabilen bir özellik gerektirmediğiniz sürece OpenTelemetry Distro'sunu kullanmanızı öneririz.

OpenTelemetry'yi benimsemek artık daha sonraki bir tarihte geçiş yapılmasını engelliyor.

Azure İzleyici OpenTelemetry dışarı aktarmasını ne zaman kullanmalıyım?

ASP.NET Core, Java, Node.js ve Python için Azure İzleyici OpenTelemetry Distro kullanmanızı öneririz. Başlamak için bir kod satırıdır.

Klasik ASP.NET, konsol uygulamaları vb. gibi diğer tüm .NET senaryoları için .NET Azure İzleyici OpenTelemetry dışarı aktarmayı kullanmanızı öneririz: Azure.Monitor.OpenTelemetry.Exporter.

Gelişmiş yapılandırma gerektiren daha karmaşık Python telemetri senaryoları için Python Azure İzleyici OpenTelemetry Exporter'ı kullanmanızı öneririz.

Azure İzleyici OpenTelemetry Distro içindeki özelliklerin geçerli sürüm durumu nedir?

Aşağıdaki grafikte, her dil için OpenTelemetry özellik desteği gösterilmiştir.

Özellik .NET Node.js Python Java
Dağıtılmış izleme
Özel ölçümler
Standart ölçümler (şu anda örneklemeden etkilenen doğruluk)
Sabit oranlı örnekleme
Çevrimdışı depolama ve otomatik yeniden denemeler
Özel durum raporlama
Günlük koleksiyonu ⚠️
Özel Olaylar ⚠️ ⚠️ ⚠️
Microsoft Entra doğrulaması
Canlı ölçümler
VM/VMSS ve App Service için Kaynak Bağlamını Algılama
AKS ve İşlevler için Kaynak Bağlamı Algılama
Kullanılabilirlik Testi Yayılma Alanı Filtreleme
Kullanıcı kimliğini, kimliği doğrulanmış kullanıcı kimliğini ve kullanıcı IP'sini otomatik doldurma
İşlem adını, kullanıcı kimliğini veya kimliği doğrulanmış kullanıcı kimliğini el ile geçersiz kılma/ayarlama
Uyarlamalı örnekleme
Profil Oluşturucu ⚠️
Anlık Görüntü Hata Ayıklayıcı

Anahtar

  • ✅ Bu özellik resmi desteği olan tüm müşteriler tarafından kullanılabilir.
  • ⚠️ Bu özellik genel önizleme olarak kullanılabilir. Bkz . Microsoft Azure önizlemeleri için ek kullanım koşulları.
  • ❌ Bu özellik kullanılamaz veya geçerli değildir.

OpenTelemetry web tarayıcıları için kullanılabilir mi?

Evet, ancak bunu önermiyoruz ve Azure desteklemiyor. OpenTelemetry JavaScript, Node.js için yoğun olarak iyileştirilmiştir. Bunun yerine Application Analizler JavaScript SDK'sını kullanmanızı öneririz.

OpenTelemetry SDK'sının web tarayıcılarında ne zaman kullanılabilir olmasını bekleyebiliriz?

OpenTelemetry web SDK'sının belirlenmiş bir kullanılabilirlik zaman çizelgesi yoktur. Application Analizler JavaScript SDK'sına uygun bir alternatif olan tarayıcı SDK'sından birkaç yıl uzaktayız.

OpenTelemetry'yi bugün bir web tarayıcısında test edebilir miyim?

OpenTelemetry web korumalı alanı, OpenTelemetry'nin tarayıcıda çalışmasını sağlamak için tasarlanmış bir çataldır. Uygulama Analizler telemetri göndermek henüz mümkün değildir. SDK genel istemci olaylarını tanımlamaz.

Application Analizler'ı AppDynamics, DataDog ve NewRelic gibi rakip aracılarla birlikte çalıştırmak destekleniyor mu?

Hayır Bu uygulama test veya desteklemeyi planladığımız bir uygulama değildir, ancak Dağıtımlarımız Azure İzleyici ile aynı anda bir OTLP uç noktasına dışarı aktarmanıza olanak sağlar.

Üretim ortamlarında önizleme özelliklerini kullanabilir miyim?

Bunu önermiyoruz. Bkz . Microsoft Azure önizlemeleri için ek kullanım koşulları.

El ile otomatik izleme arasındaki fark nedir?

Bkz. OpenTelemetry'ye Genel Bakış.

OpenTelemetry Toplayıcısı'nı kullanabilir miyim?

Microsoft henüz uygulama izleme için aracı tabanlı bir yaklaşımı resmi olarak desteklemese de bazı müşteriler openTelemetry Collector'ı aracı alternatifi olarak kullanır. Bu arada açık kaynak topluluğu, bazı müşterilerin Azure İzleyici Uygulaması Analizler'ne veri göndermek için kullandığı bir OpenTelemetry Collector Azure İzleyici Exporter'a katkıda bulundu. Bu, Microsoft tarafından desteklenmez.

OpenCensus ile OpenTelemetry arasındaki fark nedir?

OpenCensus, OpenTelemetry'nin öncüsüdür. Microsoft, OpenTracing ve OpenCensus'un bir araya getirerek dünya için tek bir gözlemlenebilirlik standardı olan OpenTelemetry'yi oluşturmasına yardımcı oldu. Azure İzleyici için üretim tarafından önerilen geçerli Python SDK'sı OpenCensus'a dayanır. Microsoft, OpenTelemetry temelinde Azure İzleyici oluşturmayı taahhüt etmiştir.

Sorun giderme

Çalışmıyor musunuz? ASP.NET Core için sorun giderme sayfasına göz atın.

Destek

Destek seçeneklerini keşfetmek için istediğiniz dil için bir sekme seçin.

  • Azure desteği sorunlar için bir Azure desteği bileti açın.
  • OpenTelemetry sorunları için doğrudan OpenTelemetry .NET topluluğuna başvurun.
  • Azure İzleyici Dışarı Aktarma ile ilgili açık sorunların listesi için GitHub Sorunları Sayfasına bakın.

OpenTelemetry geri bildirimi

Geri bildirim sağlamak için: