Application Insights'da sistem performans sayaçları

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 IIS altında çalışıyorsa veya yönetim erişimine sahip olduğunuz bir sanal makineyse performans sayaçları koleksiyonu desteklenir. Azure Web Apps olarak çalışan uygulamaların performans sayaçlarına doğrudan erişimi olmasa da, Uygulama Analizler tarafından kullanılabilir sayaçların bir alt kümesi toplanır.

Not

Aşağıdaki belgeler, Uygulama Analizler klasik API'sine dayanır. Uygulama Analizler için uzun vadeli plan, OpenTelemetry kullanarak veri toplamaktır. Daha fazla bilgi için bkz . .NET, Node.js, Python ve Java uygulamaları için Azure İzleyici OpenTelemetry'yi etkinleştirme.

Ö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.

Screenshot that shows performance counters reported in Application Insights.

ASP.NET web uygulamaları için geçerli 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 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 toplanan geçerli 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 Uygulama Analizler 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.

Kendi uyguladığınız hem standart sayaçları hem de sayaçları yakalayabilirsiniz. \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. Diğer bir ifadeyle, şu kümelerde olmayan karakterler içerir: harfler, yuvarlak köşeli ayraçlar, eğik çizgi, kısa çizgi, alt çizgi, boşluk ve nokta.

Bir örnek belirtirseniz, raporlanan ölçümün boyutu CounterInstanceName olarak toplanır.

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 uygulama Analizler 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();

Log Analytics'teki performans sayaçları

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:

Screenshot that shows performance counters in Application Insights analytics.

Burada, Instance rol veya sunucu makine ö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:

Screenshot that shows a memory time chart in Application Insights analytics.

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:

Screenshot that shows performance segmented by role instance in Application Insights analytics.

ASP.NET ve Uygulama Analizler sayıları

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

Ö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. Uygulama Analizler SDK'sı bu sonucu toplar ve portala gönderir.
  • Exceptions: Özel Durumlar ölçümü, grafiğin TrackException örnekleme aralığında portal tarafından alınan raporların sayısıdır. Yalnızca kodunuzda çağrı yazdığınız TrackException işlenen özel durumları içerir. İşlenmeyen tüm özel durumları içermez.

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 Uygulama Analizler 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 EventCounters'ı kullanın.

Uyarılar

Diğer ölçümlerde olduğu gibi, bir performans sayacı belirttiğiniz sınırın dışına çıktığında sizi uyaracak bir uyarı ayarlayabilirsiniz. Uyarı ayarlamak için Uyarılar bölmesini açın ve Uyarı Ekle'yi seçin.

Sonraki adımlar