Čítače výkonu systému v Application Insights

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.

Kolekce čítačů výkonu se podporuje, pokud vaše aplikace běží ve službě IIS na místním hostiteli nebo je virtuální počítač, ke kterému máte přístup pro správu. I když aplikace spuštěné jako Azure Web Apps nemají přímý přístup k čítačům výkonu, application Insights shromažďuje podmnožinu dostupných čítačů.

Poznámka:

Následující dokumentace spoléhá na klasické rozhraní API Application Insights. Dlouhodobým plánem application Insights je shromažďovat data pomocí OpenTelemetry. Další informace najdete v tématu Povolení OpenTelemetry služby Azure Monitor pro aplikace .NET, Node.js, Python a Java a náš plán OpenTelemetry. Pokyny k migraci jsou k dispozici pro .NET, Node.js a Python.

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.

Snímek obrazovky znázorňující čítače výkonu hlášené v Application Insights

Aktuální výchozí čítače pro webové aplikace ASP.NET:

  • % Process\Processor Time
  • % Process\Processor Time Normalized
  • Paměť\Dostupné bajty
  • požadavky ASP.NET za sekundu
  • Výjimky .NET CLR vyvolané / s
  • 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

Aktuální výchozí čítače shromážděné pro webové aplikace 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.

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

  2. Otevře záznam typu ApplicationInsights.config.

    Pokud jste do aplikace přidali Application Insights během vývoje:

    1. Upravte ApplicationInsights.config v projektu.
    2. Znovu ho nasaďte na servery.
  3. 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.

Můžete zachytit standardní čítače i čítače, které jste implementovali 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()/-_ \.]+. To znamená, že obsahují znaky, které nejsou v následujících sadách: písmena, kulaté závorky, lomítko, spojovník, podtržítko, mezera a tečka.

Pokud zadáte instanci, bude shromážděna jako 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();

Čítače výkonu v 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 jenom čítače této aplikace. Pokud například chcete zjistit, jaké čítače jsou k dispozici:

Snímek obrazovky znázorňující čítače výkonu v analýzách Application Insights

Instance Tady se odkazuje na instanci čítače výkonu, nikoli na instanci role nebo 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í:

Snímek obrazovky znázorňující graf doby paměti v analýze Application Insights

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:

Snímek obrazovky znázorňující výkon segmentovaný podle instance role v analýzách Application Insights

ASP.NET a počty Application Insights

V dalších částech najdete informace o ASP.NET a počtech Application Insights.

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 je počet sestav přijatých TrackException portálem v intervalu vzorkování grafu. Zahrnuje pouze zpracovávané výjimky, ve kterých jste v kódu napsali TrackException volání. Nezahrnuje všechny neošetřené výjimky.

Čí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 EventCounters.

Výstrahy

Stejně jako u jiných metrik můžete nastavit upozornění , které vás upozorní, pokud čítač výkonu překročí vámi zadaný limit. Pokud chcete nastavit upozornění, otevřete podokno Upozornění a vyberte Přidat výstrahu.

Další kroky