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 Insights'taki bir bağlantı dizesi, telemetri verilerini göndermek için hedef konumu tanımlar.

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

  • Dosyanıza program.cs ekleyinUseAzureMonitor():

    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>";
    });
    
    var app = builder.Build();
    
    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 ResourceBuilder to add the custom resource attributes to all signals.
    // Custom resource attributes should be added AFTER AzureMonitor to override the default ResourceDetectors.
    .ConfigureResource(resourceBuilder => resourceBuilder.AddAttributes(_testResourceAttributes));

// 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ı örnekleme oranıyla dolduran ve Application Insights'ı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, izlemelerinizi hizmetler arasında korumak için tasarlanmıştır ve eski Application Insights Yazılım Geliştirme Setleri (SDK' lar) ile 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(options =>
{
    // Set the sampling ratio to 10%. This means that 10% of all traces will be sampled and sent to Azure Monitor.
    options.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 bölmelerinde 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.

Canlı ölçümler

Canlı ölçümler , uygulama etkinliği ve performansıyla ilgili içgörüler için gerçek zamanlı bir analiz panosu sağlar.

Önemli

Beta veya önizleme aşamasında olan ya da başka bir şekilde henüz genel kullanıma sunulmamış olan Azure özelliklerinde geçerli olan yasal koşullar için bkz. Microsoft Azure Önizlemeleri için Ek Kullanım Koşulları.

Varsayılan olarak bu özellik etkindir.

Kullanıcılar, Dağıtımı yapılandırırken Canlı Ölçümleri devre dışı bırakabilir.

builder.Services.AddOpenTelemetry().UseAzureMonitor(options => {
	// Disable the Live Metrics feature.
    options.EnableLiveMetrics = false;
});

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, bir uygulama Application Insights ile 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 Application Insights kaynağınız için 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.