Aracılığıyla paylaş


Azure İzleyici OpenTelemetry'yi yapılandırma

Bu kılavuz, Azure Monitor OpenTelemetry dağıtımını kullanarak Azure Monitor Application Insights'ta OpenTelemetry (OTel) yapılandırmanın nasıl yapılacağını açıklamaktadır. Uygun yapılandırma. .NET, Java, Node.jsve Python uygulamalarında tutarlı telemetri verilerinin toplanmasını sağlayarak daha güvenilir izleme ve tanılama sağlar.

Not veya Dikkat

Azure İşlev Uygulamaları için bkz. Azure İşlevleri ile OpenTelemetry kullanma.

Bağlantı dizesi

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 UseAzureMonitor() ekleyinprogram.cs:

    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 veya Dikkat

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ı, service.namespace ve service.name özniteliklerini kullanır, ancak service.name ayarlanmadıysa, service.namespace özniteliğine geri döner. 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(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ı örnekleme oranıyla dolduran ve Application Insights'ın 'a dönüştürdüğü özel ItemCount ö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 veya Dikkat

Ölçümler ve Günlükler, örnekleme nedeniyle etkilenmez. Application Insights'ta beklenmeyen ücretler veya yüksek maliyetler görüyorsanız bu kılavuz yardımcı olabilir. Yüksek telemetri hacmi, veri alımı ani artışları ve yanlış yapılandırılmış örnekleme gibi yaygın nedenleri kapsar. Özellikle maliyet artışları, telemetri hacmi, örneklemenin çalışmaması, veri üst sınırı, yüksek veri alımı veya beklenmeyen faturalama ile ilgili sorunları gideriyorsanız kullanışlıdır. Başlamak için bkz. Application Insights'ta yüksek veri alımı sorunlarını giderme.

Ö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 örnekleme kullanırken ve örnekleme hızının ne olarak ayarlanacağından emin değilseniz% 5'te başlayın. (0,05 örnekleme oranı) Hatalar 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, Distro'yu 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.

Daha fazla bilgi için desteklenen her dil için bağlantılı ayrılmış Microsoft Entra kimlik doğrulama sayfamıza bakın.

Entra Id kimlik doğrulamasını yapılandırma hakkında bilgi için bkz . Application Insights için Microsoft Entra kimlik doğrulaması

Çevrimdışı Depolama ve Otomatik Yeniden Denemeler

Azure Monitor OpenTelemetry tabanlı teklifler, bir uygulama Application Insights bağlantısı kesildiğinde telemetriyi önbelleğe alır ve göndermeyi 48 saate kadar yeniden dener. Veri işleme önerileri için bkz. Özel verileri dışarı aktarma ve silme. Yüksek yüke sahip uygulamalar bazen telemetri verilerini iki nedenden dolayı bırakır: izin verilen süreyi aşma veya dosya boyutu üst sınırını aşma. Gerektiğinde, ürün son olaylara eski olaylara göre öncelik verir.

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 Olmayan
    • %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 İhracatı ile birlikte OpenTelemetry Protokolü (OTLP) Vericisi'ni aynı anda etkinleştirmek isteyebilirsiniz.

Not veya Dikkat

OTLP İhracatçısı yalnızca kolaylık sağlamak için gösterilir. OTLP Exporter'ını veya onun ardındaki 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 Monitor OpenTelemetry Dağıtımı 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 Dahili ölçüm toplamayı devre dışı bırakmak için true 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. Eğer service.nameOTEL_RESOURCE_ATTRIBUTES içinde sağlanmışsa, o zaman OTEL_SERVICE_NAME öncelik kazanır.

URL Sorgu Dizelerini Düzenle

URL sorgu dizelerini gizlemek için sorgu dizesi toplamasını kapatın. Sas belirteci kullanarak Azure depolamayı çağırırsanız bu ayarı öneririz.

Azure.Monitor.OpenTelemetry.AspNetCore dağıtım paketini kullanırken hem ASP.NET Core hem de HttpClient Enstrümentasyon kitaplıkları dahildir. Dağıtım paketimiz Sorgu Dizesi Redaction'ını varsayılan olarak devre dışı bırakır.

Bu davranışı değiştirmek için ortam değişkenini true veya false olarak ayarlamanız gerekir.

  • ASP.NET Core Enstrümantasyon: OTEL_DOTNET_EXPERIMENTAL_ASPNETCORE_DISABLE_URL_QUERY_REDACTION Sorgu Dizesi Düzenleme varsayılan olarak devre dışı bırakılmıştır. Etkinleştirmek için bu ortam değişkenini olarak falseayarlayın.
  • HTTP İstemci Enstrümantasyonu: OTEL_DOTNET_EXPERIMENTAL_HTTPCLIENT_DISABLE_URL_QUERY_REDACTION Sorgu Dizesi Sansürleme varsayılan olarak devre dışıdır. Etkinleştirmek için bu ortam değişkenini olarak falseayarlayın.

Metrik dışa aktarma aralığı

Ortam değişkenini kullanarak OTEL_METRIC_EXPORT_INTERVAL ölçüm dışarı aktarma aralığını yapılandırabilirsiniz.

OTEL_METRIC_EXPORT_INTERVAL=60000

Varsayılan değer milisaniyedir 60000 (60 saniye). Bu ayar, OpenTelemetry SDK'sının ölçümleri dışarı aktarma sıklıklarını denetler.

İpucu

Azure İzleyici Ölçümleri ve Azure İzleyici Çalışma Alanı özel ölçümleri sabit 60 saniyelik aralıklarla alır. Daha sık gönderilen ölçümler her 60 saniyede bir arabelleğe alınıp işlenir. Log Analytics, ölçümleri gönderildikleri aralıkta kaydeder ve bu da maliyetleri daha kısa aralıklarla artırabilir ve daha uzun aralıklarla görünürlüğü geciktirebilir.

Referans için, aşağıdaki OpenTelemetry belirtimlerine bakın: