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.
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.
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)\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.
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.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();
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ınTrackException
aldığı raporları grafiğin örnekleme aralığında sayar. Yalnızca kodunuzda çağrı yazdığınızTrackException
işlenen özel durumları içerir. İşlenmeyen tüm özel durumları içermez.