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, Application Insights tarafından kullanılabilir sayaçların bir alt kümesi toplanır.
Not
Aşağıdaki belgeler Application Insights klasik API'sine dayanır. Application Insights 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 ve OpenTelemetry Yol Haritamız. Geçiş kılavuzu .NET, Node.js ve Python için kullanılabilir.
Ö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 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.
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
.ApplicationInsights.config
'ı açın.Geliştirme sırasında uygulamanıza Application Insights eklediyseniz:
- Projenizde düzenleyin
ApplicationInsights.config
. - Sunucularınıza yeniden dağıt.
- Projenizde düzenleyin
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)\Counter
veya örneği olmayan kategoriler için, yalnızca \Category\Counter
olur.
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 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.cs
sonra 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:
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:
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:
ASP.NET ve Application Insights sayıları
Sonraki bölümlerde ASP.NET ve Application Insights 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. Application Insights SDK'sı bu sonucu toplar ve portala gönderir.Exceptions
: Özel Durumlar ölçümü, grafiğinTrackException
örnekleme aralığında portal tarafından alınan raporların sayısıdır. Yalnızca kodunuzda çağrı yazdığınızTrackException
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 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 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.