Čítače pro .NET v Application Insights
Azure MonitorApplication Insights podporuje čítače výkonu a čítače událostí. Tato příručka poskytuje přehled o obou případech, včetně jejich účelu, konfigurace a použití v aplikacích .NET.
Upozornění
Pro nové aplikace nebo zákazníky doporučujeme , aby služba Azure Monitor OpenTelemetry distro vysílala služby Azure Monitor Application Insights. Distribuce OpenTelemetry služby Azure Monitor poskytuje podobné funkce a prostředí jako sada Application Insights SDK. Ze sady Application Insights SDK je možné migrovat pomocí průvodců migrací pro .NET, Node.js a Python, ale stále pracujeme na přidání několika dalších funkcí pro zpětnou kompatibilitu.
Přehled
- Čítače výkonu jsou integrované do operačního systému Windows a nabízejí předdefinované metriky , jako je využití procesoru, spotřeba paměti a aktivita disku. Tyto čítače jsou ideální pro monitorování standardních metrik výkonu s minimálním nastavením. Pomáhají sledovat využití prostředků nebo řešit kritické body na úrovni systému v aplikacích s Windows, ale nepodporují vlastní metriky specifické pro aplikace.
- Čítače událostí fungují na různých platformách, včetně Windows, Linuxu a macOS. Umožňují vývojářům definovat a monitorovat zjednodušené přizpůsobitelné metriky specifické pro aplikace a poskytují větší flexibilitu než čítače výkonu. Čítače událostí jsou užitečné, když systémové metriky nejsou dostatečné nebo když je potřeba podrobná telemetrie v multiplatformních aplikacích. Vyžadují explicitní implementaci a konfiguraci, což zvyšuje náročnost instalace.
Konfigurace čítačů
Systém Windows poskytuje různé čítače výkonu, například ty, které se používají ke shromažďování statistik využití procesoru, paměti a disku. Můžete také definovat vlastní čítače výkonu.
Vaše aplikace podporuje shromažďování čítačů výkonu, pokud běží v internetovém informačním serveru (IIS) na místním hostiteli nebo virtuálním počítači s přístupem pro správu. Aplikace spuštěné jako Azure Web Apps nemají přímý přístup k čítačům výkonu, ale Application Insights shromažďuje podmnožinu dostupných čítačů.
Požadavky
Udělte účtu služby App Pool Service oprávnění k monitorování čítačů výkonu tak, že ho přidáte do skupiny Sledování výkonu Users.
net localgroup "Performance Monitor Users" /add "IIS APPPOOL\NameOfYourPool"
Zobrazení čítačů
Podokno Metriky zobrazuje výchozí sadu čítačů výkonu.
Výchozí čítače webových aplikací ASP.NET:
- % Process\Processor Time
- % Process\Processor Time Normalized
- Paměť\Dostupné bajty
- požadavky ASP.NET za sekundu
- Výjimky modulu CLR (Common Language Runtime) .NET vyvolány za sekundu
- ASP.NET ApplicationsRequest – doba provádění
- Process\Private Bytes
- Zpracování\Bajty vstupně-výstupních dat za sekundu
- ASP.NET Applications\Requests In Application Queue
- Processor(_Total)\% čas procesoru
Výchozí čítače webových aplikací ASP.NET Core:
- % Process\Processor Time
- % Process\Processor Time Normalized
- Paměť\Dostupné bajty
- Process\Private Bytes
- Zpracování\Bajty vstupně-výstupních dat za sekundu
- Processor(_Total)\% čas procesoru
Přidání čítačů
Pokud požadovaný čítač výkonu není součástí seznamu metrik, můžete ho přidat.
Pomocí tohoto příkazu PowerShellu na místním serveru zjistěte, jaké čítače jsou na vašem serveru k dispozici:
Get-Counter -ListSet *
Další informace najdete na webu
Get-Counter
.Otevře záznam typu
ApplicationInsights.config
.Pokud jste do aplikace přidali Application Insights během vývoje:
- Upravte
ApplicationInsights.config
v projektu. - Znovu ho nasaďte na servery.
- Upravte
Upravte direktivu kolektoru výkonu:
<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>
Poznámka:
ASP.NET aplikace Core nemají ApplicationInsights.config
, takže předchozí metoda není platná pro aplikace ASP.NET Core.
Zaznamenáte standardní čítače i čítače, které implementujete sami.
\Objects\Processes
je příkladem standardního čítače, který je k dispozici ve všech systémech Windows.
\Sales(photo)\# Items Sold
je příkladem vlastního čítače, který může být implementován ve webové službě.
Formát je \Category(instance)\Counter
, nebo pro kategorie, které nemají instance, pouze \Category\Counter
.
Parametr ReportAs
je povinný pro názvy čítačů, které neodpovídají [a-zA-Z()/-_ \.]+
.
Pokud zadáte instanci, stane se dimenze CounterInstanceName
hlášené metriky.
Shromažďování čítačů výkonu v kódu pro webové aplikace ASP.NET nebo konzolové aplikace .NET/.NET Core
Pokud chcete shromažďovat čítače výkonu systému a odesílat je do Application Insights, můžete přizpůsobit následující fragment kódu:
var perfCollectorModule = new PerformanceCollectorModule();
perfCollectorModule.Counters.Add(new PerformanceCounterCollectionRequest(
@"\Process([replace-with-application-process-name])\Page Faults/sec", "PageFaultsPerfSec"));
perfCollectorModule.Initialize(TelemetryConfiguration.Active);
Nebo můžete udělat totéž s vlastními metrikami, které jste vytvořili:
var perfCollectorModule = new PerformanceCollectorModule();
perfCollectorModule.Counters.Add(new PerformanceCounterCollectionRequest(
@"\Sales(photo)\# Items Sold", "Photo sales"));
perfCollectorModule.Initialize(TelemetryConfiguration.Active);
Shromažďování čítačů výkonu v kódu pro webové aplikace ASP.NET Core
Konfigurace PerformanceCollectorModule
za metodou WebApplication.CreateBuilder()
v Program.cs
:
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 a počty Application Insights
V dalších částech najdete informace o ASP.NET a počtech Application Insights.
Čítače výkonu pro aplikace spuštěné v Azure Web Apps a v kontejnerech Windows ve službě Azure App Service
Aplikace ASP.NET i ASP.NET Core nasazené do Azure Web Apps běží ve speciálním sandboxovém prostředí. Aplikace nasazené do služby Aplikace Azure Service můžou využívat kontejner Windows nebo být hostované v prostředí sandboxu. Pokud je aplikace nasazená v kontejneru Windows, jsou v imagi kontejneru k dispozici všechny standardní čítače výkonu.
Prostředí sandboxu neumožňuje přímý přístup k čítačům výkonu systému. Omezená podmnožina čítačů je však vystavena jako proměnné prostředí, jak je popsáno v čítačích výkonu vystavených jako proměnné prostředí. V tomto prostředí je k dispozici pouze podmnožina čítačů. Úplný seznam najdete v tématu Čítače výkonu vystavené jako proměnné prostředí.
Sada Application Insights SDK pro ASP.NET a ASP.NET Core zjistí, jestli je kód nasazený do webové aplikace nebo kontejneru mimo Windows. Detekce určuje, jestli shromažďuje čítače výkonu v prostředí sandboxu nebo využívá standardní mechanismus shromažďování při hostování na kontejneru nebo virtuálním počítači s Windows.
Čítače výkonu v aplikacích ASP.NET Core
Podpora čítačů výkonu v ASP.NET Core je omezená:
- Sada SDK verze 2.4.1 a novější shromažďuje čítače výkonu, pokud aplikace běží ve službě Azure Web Apps (Windows).
- Sada SDK verze 2.7.1 a novější shromažďuje čítače výkonu, pokud aplikace běží ve Windows a cílech
NETSTANDARD2.0
nebo novějších verzích. - U aplikací, které cílí na rozhraní .NET Framework, podporují všechny verze sady SDK čítače výkonu.
- Sada SDK verze 2.8.0 a novější podporuje čítač procesoru a paměti v Linuxu. Linux nepodporuje žádný jiný čítač. K získání čítačů systému v Linuxu (a dalších prostředích mimo Windows) použijte čítače událostí.
Dotazy Log Analytics
Sestavy čítačů výkonu můžete vyhledávat a zobrazovat v Log Analytics.
Schéma performanceCounters zveřejňuje category
, counter
název a instance
název každého čítače výkonu. V telemetrii pro každou aplikaci uvidíte pouze čítače dané aplikace. Pokud například chcete zjistit, jaké čítače jsou k dispozici:
performanceCounters | summarize count(), avg(value) by category, instance, counter
Instance
Tady odkazuje na instanci čítače výkonu, nikoli roli nebo instanci serveru. Název instance čítače výkonu obvykle segmentuje čítače, například čas procesoru, podle názvu procesu nebo aplikace.
Získání grafu dostupné paměti za poslední období:
performanceCounters | where counter == "Available Bytes" | summarize avg(value), min(value) by bin(timestamp, 1h) | render timechart
Stejně jako jiná telemetrie má performanceCounters také sloupec cloud_RoleInstance
, který označuje identitu instance hostitelského serveru, na které je vaše aplikace spuštěná. Pokud chcete například porovnat výkon aplikace na různých počítačích:
performanceCounters | where counter == "% Processor Time" and instance == "SendMetrics" | summarize avg(value) by cloud_RoleInstance, bin(timestamp, 1d)
Výstrahy
Stejně jako u jiných metrik můžete nastavit upozornění , které vás upozorní, pokud čítač překročí zadaný limit.
Pokud chcete nastavit upozornění, otevřete podokno Upozornění a vyberte Přidat výstrahu.
Nejčastější dotazy
Jaký je rozdíl mezi metrikou Četnost výjimek a Výjimkami?
-
Exception rate
: Frekvence výjimek je čítač výkonu systému. CLR spočítá všechny zpracovávané a neošetřené výjimky, které jsou vyvolány, a vydělí celkový součet v intervalu vzorkování délkou intervalu. Sada Application Insights SDK shromažďuje tento výsledek a odesílá ho na portál. -
Exceptions
: Metrika Výjimky spočítáTrackException
sestavy přijaté portálem v intervalu vzorkování grafu. Zahrnuje pouze zpracovávané výjimky, ve kterých píšeteTrackException
volání v kódu. Nezahrnuje všechny neošetřené výjimky.