Aracılığıyla paylaş


Application Insights'ta .NET sayaçları

Azure İzleyiciApplication Insights , performans sayaçlarını ve olay sayaçlarını destekler. Bu kılavuz, .NET uygulamalarında amaçları, yapılandırmaları ve kullanımları da dahil olmak üzere her ikisine de genel bir bakış sağlar.

Dikkat

Yeni uygulamalar veya müşterilerin Azure İzleyici Application Insights'ı desteklemesi için Azure İzleyici OpenTelemetry Distro'yu öneririz. Azure İzleyici OpenTelemetry Distro, Application Insights SDK'sı ile benzer bir işlev ve deneyim sunar. .NET, Node.js ve Python için geçiş kılavuzlarını kullanarak Application Insights SDK'sından geçiş yapmak mümkündür, ancak geriye dönük uyumluluk için birkaç özellik daha eklemeye çalışıyoruz.

Genel bakış

  • Performans sayaçları Windows işletim sisteminde yerleşiktir ve CPU kullanımı, bellek tüketimi ve disk etkinliği gibi önceden tanımlanmış ölçümler sunar. Bu sayaçlar, minimum kurulumla standart performans ölçümlerini izlemek için idealdir. Bunlar, Windows tabanlı uygulamalarda kaynak kullanımını izlemeye veya sistem düzeyinde performans sorunlarını gidermeye yardımcı olur, ancak uygulamaya özgü özel ölçümleri desteklemez.
  • Olay sayaçları Windows, Linux ve macOS gibi birden çok platformda çalışır. Geliştiricilerin uygulamaya özgü hafif, özelleştirilebilir ölçümleri tanımlamasına ve izlemesine olanak tanıyarak performans sayaçlarına göre daha fazla esneklik sağlar. Sistem ölçümleri yetersiz olduğunda veya platformlar arası uygulamalarda ayrıntılı telemetri gerektiğinde olay sayaçları kullanışlıdır. Bunlar, kurulumu daha yoğun bir şekilde gerçekleştiren açık uygulama ve yapılandırma gerektirir.

Sayaçları yapılandırma

Windows işlemci, bellek ve disk kullanım istatistiklerini toplamak için kullanılanlar gibi çeşitli performans sayaçları sağlar. Kendi performans sayaçlarınızı da tanımlayabilirsiniz.

Uygulamanız, şirket içi bir konakta veya yönetim erişimine sahip bir sanal makinede Internet Information Server (IIS) altında çalışıyorsa performans sayacı toplamayı destekler. Azure Web Apps olarak çalışan uygulamalar performans sayaçlarına doğrudan erişemez, ancak Application Insights kullanılabilir sayaçların bir alt kümesini toplar.

Önkoşullar

Uygulama havuzu hizmet hesabına performans sayaçlarını Performans İzleyicisi Kullanıcılar grubuna ekleyerek izleme izni verin.

net localgroup "Performance Monitor Users" /add "IIS APPPOOL\NameOfYourPool"

Sayaçları görüntüleme

Ölçümler bölmesinde varsayılan performans sayaçları kümesi gösterilir.

ASP.NET web uygulamaları için varsayılan sayaçlar:

  • İşlem\İşlemci Zamanı Yüzdesi
  • İşlem\İşlemci Süresi Normalleştirilmiş %
  • Bellek\Kullanılabilir Bayt sayısı
  • ASP.NET İstekleri/Sn
  • .NET Ortak Dil Çalışma Zamanı (CLR) Özel Durumları Oluştu / sn
  • ASP.NET Uygulamalarıİstek Yürütme Zamanı
  • İşlem\Özel Baytlar
  • İşlem\GÇ Veri Bayt/sn
  • ASP.NET Uygulamaları\Uygulama Kuyruğundaki İstekler
  • İşlemci(_Total)\% İşlemci Süresi

ASP.NET Core web uygulamaları için varsayılan sayaçlar:

  • İşlem\İşlemci Zamanı Yüzdesi
  • İşlem\İşlemci Süresi Normalleştirilmiş %
  • Bellek\Kullanılabilir Bayt sayısı
  • İşlem\Özel Baytlar
  • İşlem\GÇ Veri Bayt/sn
  • İşlemci(_Total)\% İşlemci Süresi

Sayaç ekleme

İstediğiniz performans sayacı ölçüm listesine eklenmiyorsa, bunu ekleyebilirsiniz.

  1. Yerel sunucuda bu PowerShell komutunu kullanarak sunucunuzda hangi sayaçların kullanılabilir olduğunu öğrenin:

    Get-Counter -ListSet *
    

    Daha fazla bilgi için bkz. Get-Counter.

  2. ApplicationInsights.config'ı açın.

    Geliştirme sırasında uygulamanıza Application Insights eklediyseniz:

    1. Projenizde düzenleyin ApplicationInsights.config .
    2. Sunucularınıza yeniden dağıt.
  3. Performans toplayıcı yönergesini düzenleyin:

    
        <Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.PerformanceCollectorModule, Microsoft.AI.PerfCounterCollector">
          <Counters>
            <Add PerformanceCounter="\Objects\Processes"/>
            <Add PerformanceCounter="\Sales(photo)\# Items Sold" ReportAs="Photo sales"/>
          </Counters>
        </Add>
    

Not

ASP.NET Core uygulamalarında yoktur ApplicationInsights.config, bu nedenle önceki yöntem ASP.NET Core uygulamaları için geçerli değildir.

Hem standart sayaçları hem de kendi uyguladığınız sayaçları yakalarsınız. \Objects\Processes , tüm Windows sistemlerinde kullanılabilen standart bir sayaç örneğidir. \Sales(photo)\# Items Sold , bir web hizmetinde uygulanabilecek özel bir sayaç örneğidir.

Biçimi , \Category(instance)\Counterveya örneği olmayan kategoriler için, yalnızca \Category\Counterolur.

parametresi, ReportAs ile eşleşmeyen [a-zA-Z()/-_ \.]+sayaç adları için gereklidir.

Bir örnek belirtirseniz, raporlanan ölçümün bir boyutu CounterInstanceName olur.

ASP.NET web uygulamaları veya .NET/.NET Core konsol uygulamaları için kodda performans sayaçlarını toplama

Sistem performans sayaçlarını toplamak ve Application Insights'a göndermek için aşağıdaki kod parçacığını uyarlayabilirsiniz:

    var perfCollectorModule = new PerformanceCollectorModule();
    perfCollectorModule.Counters.Add(new PerformanceCounterCollectionRequest(
      @"\Process([replace-with-application-process-name])\Page Faults/sec", "PageFaultsPerfSec"));
    perfCollectorModule.Initialize(TelemetryConfiguration.Active);

İsterseniz, oluşturduğunuz özel ölçümlerle de aynı işlemi yapabilirsiniz:

    var perfCollectorModule = new PerformanceCollectorModule();
    perfCollectorModule.Counters.Add(new PerformanceCounterCollectionRequest(
      @"\Sales(photo)\# Items Sold", "Photo sales"));
    perfCollectorModule.Initialize(TelemetryConfiguration.Active);

ASP.NET Core web uygulamaları için kodda performans sayaçlarını toplama

içindeki yönteminden WebApplication.CreateBuilder()Program.cssonra yapılandırınPerformanceCollectorModule:

using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddApplicationInsightsTelemetry();

// The following configures PerformanceCollectorModule.

builder.Services.ConfigureTelemetryModule<PerformanceCollectorModule>((module, o) =>
    {
        // The application process name could be "dotnet" for ASP.NET Core self-hosted applications.
        module.Counters.Add(new PerformanceCounterCollectionRequest(@"\Process([replace-with-application-process-name])\Page Faults/sec", "DotnetPageFaultsPerfSec"));
    });

var app = builder.Build();

ASP.NET ve Application Insights sayıları

Sonraki bölümlerde ASP.NET ve Application Insights sayıları açıklanmıştır.

Azure App Service üzerindeki Windows kapsayıcılarında ve Azure Web Apps'de çalıştırılan uygulamalar için performans sayaçları

Azure Web Apps'e dağıtılan hem ASP.NET hem de ASP.NET Core uygulamaları özel bir korumalı alan ortamında çalışır. Azure Uygulaması Hizmetine dağıtılan uygulamalar bir Windows kapsayıcısı kullanabilir veya korumalı alan ortamında barındırılabilir. Uygulama bir Windows kapsayıcısında dağıtılırsa, kapsayıcı görüntüsünde tüm standart performans sayaçları kullanılabilir.

Korumalı alan ortamı, sistem performans sayaçlarına doğrudan erişime izin vermez. Ancak, sayaçların sınırlı bir alt kümesi, ortam değişkenleri olarak kullanıma sunulan Performans Sayaçları'nda açıklandığı gibi ortam değişkenleri olarak sunulur. Bu ortamda yalnızca bir sayaç alt kümesi kullanılabilir. Tam liste için bkz . Ortam değişkenleri olarak kullanıma sunulan Performans Sayaçları.

ASP.NET ve ASP.NET Core için Application Insights SDK'sı, kodun bir web uygulamasına mı yoksa Windows olmayan bir kapsayıcıya mı dağıtılıp dağıtılmadığını algılar. Algılama, bir korumalı alan ortamında performans sayaçları toplayıp toplamadığını veya windows kapsayıcısında veya sanal makinede barındırıldığında standart koleksiyon mekanizmasını kullanıp kullanmadığını belirler.

ASP.NET Core uygulamalarında performans sayaçları

ASP.NET Core'daki performans sayaçları desteği sınırlıdır:

  • Sdk 2.4.1 ve sonraki sürümleri, uygulama Azure Web Apps'te (Windows) çalışıyorsa performans sayaçlarını toplar.
  • SDK 2.7.1 ve sonraki sürümleri, uygulama Windows'ta çalışıyorsa ve veya üzerini hedeflerse performans sayaçlarını NETSTANDARD2.0 toplar.
  • .NET Framework'ünü hedefleyen uygulamalar için SDK'nın tüm sürümleri performans sayaçlarını destekler.
  • SDK 2.8.0 ve sonraki sürümleri Linux'ta CPU/Bellek sayacını destekler. Linux'ta başka bir sayaç desteklenmez. Linux'ta (ve Diğer Windows dışı ortamlarda) sistem sayaçlarını almak için olay sayaçlarını kullanın.

Log Analytics sorguları

Log Analytics'te performans sayacı raporlarını arayabilir ve görüntüleyebilirsiniz.

performanceCounters şeması, her performans sayacının category, counter adını ve instance adını kullanıma sunar. Her uygulamanın telemetrisinde yalnızca bu uygulamanın sayaçlarını görürsünüz. Örneğin, hangi sayaçların kullanılabilir olduğunu görmek için:

performanceCounters | summarize count(), avg(value) by category, instance, counter

Burada, Instance rol veya sunucu makinesi örneğine değil performans sayacı örneğine başvurur. Performans sayacı örneği adı genellikle işlemci süresi gibi sayaçları işlem veya uygulama adına göre segmentlere ayırır.

Son dönemdeki kullanılabilir bellek grafiğini almak için:

performanceCounters | where counter == "Available Bytes" | summarize avg(value), min(value) by bin(timestamp, 1h) | render timechart

Diğer telemetride olduğu gibi performanceCounters'da da uygulamanızın üzerinde çalıştığı konak sunucu örneğinin kimliğini gösteren bir sütun cloud_RoleInstance vardır. Örneğin, uygulamanızın farklı makinelerdeki performansını karşılaştırmak için:

performanceCounters | where counter == "% Processor Time" and instance == "SendMetrics" | summarize avg(value) by cloud_RoleInstance, bin(timestamp, 1d)

Uyarılar

Diğer ölçümlerde olduğu gibi, bir sayacın belirtilen sınırın dışına çıkması durumunda uyaracak bir uyarı ayarlayabilirsiniz.

Uyarı ayarlamak için Uyarılar bölmesini açın ve Uyarı Ekle'yi seçin.

Sık sorulan sorular

Özel durum oranı ile Özel Durumlar ölçümleri arasındaki fark nedir?

  • Exception rate: Özel durum oranı bir sistem performans sayacıdır. CLR, atılan tüm işlenen ve işlenmeyen özel durumları sayar ve bir örnekleme aralığındaki toplamı aralığın uzunluğuna böler. Application Insights SDK'sı bu sonucu toplar ve portala gönderir.
  • Exceptions: Özel durumlar ölçümü, portalın TrackException aldığı raporları grafiğin örnekleme aralığında sayar. Yalnızca kodunuzda çağrı yazdığınız TrackException işlenen özel durumları içerir. İşlenmeyen tüm özel durumları içermez.