Rendszerteljesítmény-számlálók az Application Insightsban

A Windows számos teljesítményszámlálót biztosít, például a processzor-, memória- és lemezhasználati statisztikák gyűjtéséhez használtakat. Saját teljesítményszámlálókat is definiálhat.

A teljesítményszámlálók gyűjtése akkor támogatott, ha az alkalmazás IIS alatt fut egy helyszíni gazdagépen, vagy olyan virtuális gép, amelyhez rendszergazdai hozzáféréssel rendelkezik. Bár az Azure Web Apps-ként futó alkalmazások nem rendelkeznek közvetlen hozzáféréssel a teljesítményszámlálókhoz, az alkalmazás Elemzések összegyűjti az elérhető számlálók egy részét.

Feljegyzés

Az alábbi dokumentáció az Alkalmazás Elemzések klasszikus API-ra támaszkodik. Az Alkalmazás Elemzések hosszú távú terve az Adatok gyűjtése Az OpenTelemetria használatával. További információ: Az Azure Monitor OpenTelemetria engedélyezése .NET-, Node.js-, Python- és Java-alkalmazásokhoz.

Előfeltételek

Adjon engedélyt az alkalmazáskészlet szolgáltatásfiókjának a teljesítményszámlálók figyelésére a Teljesítményfigyelő felhasználók csoportjához való hozzáadásával.

net localgroup "Performance Monitor Users" /add "IIS APPPOOL\NameOfYourPool"

Számlálók megtekintése

A Metrikák panelen a teljesítményszámlálók alapértelmezett készlete látható.

Screenshot that shows performance counters reported in Application Insights.

ASP.NET webalkalmazások aktuális alapértelmezett számlálói:

  • %Process\Processor Time
  • % Process\Processor Time Normalized
  • Memória\Rendelkezésre álló bájtok
  • ASP.NET kérések/mp
  • .NET CLR-kivételek másodpercenként
  • ASP.NET ApplicationsRequest végrehajtási ideje
  • Process\Private Bytes
  • Process\IO Data Bytes/sec
  • ASP.NET Alkalmazások\Kérelmek az alkalmazássorban
  • Processzor(_Total)\% Processzoridő

Az ASP.NET Core-webalkalmazásokhoz gyűjtött aktuális alapértelmezett számlálók:

  • %Process\Processor Time
  • % Process\Processor Time Normalized
  • Memória\Rendelkezésre álló bájtok
  • Process\Private Bytes
  • Process\IO Data Bytes/sec
  • Processzor(_Total)\% Processzoridő

Számlálók hozzáadása

Ha a kívánt teljesítményszámláló nem szerepel a metrikák listájában, felveheti.

  1. A helyi kiszolgálón található PowerShell-paranccsal megtudhatja, hogy mely számlálók érhetők el a kiszolgálón:

    Get-Counter -ListSet *
    

    További információ: Get-Counter.

  2. Nyílt ApplicationInsights.config.

    Ha alkalmazás Elemzések adott hozzá az alkalmazáshoz a fejlesztés során:

    1. Szerkesztés ApplicationInsights.config a projektben.
    2. Helyezze újra üzembe a kiszolgálókon.
  3. A teljesítménygyűjtő irányelvének szerkesztése:

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

Feljegyzés

ASP.NET Core-alkalmazások nem rendelkeznek ApplicationInsights.config, ezért az előző módszer nem érvényes ASP.NET Core-alkalmazásokra.

A saját maga által implementált standard számlálókat és számlálókat is rögzítheti. \Objects\Processes Egy példa egy szabványos számlálóra, amely minden Windows rendszeren elérhető. \Sales(photo)\# Items Sold Egy példa egy webszolgáltatásban implementálható egyéni számlálóra.

A formátum , \Category(instance)\Countervagy olyan kategóriák esetén, amelyek nem rendelkeznek példányokkal, csak \Category\Counter.

A ReportAs paraméter olyan számlálónevekhez szükséges, amelyek nem egyeznek [a-zA-Z()/-_ \.]+. Vagyis olyan karaktereket tartalmaznak, amelyek nem szerepelnek a következő csoportokban: betűk, kerek zárójelek, perjel, kötőjel, aláhúzás, szóköz és pont.

Ha megad egy példányt, az a jelentett metrika dimenziójaként CounterInstanceName lesz összegyűjtve.

Teljesítményszámlálók gyűjtése ASP.NET webalkalmazások vagy .NET/.NET Core-konzolalkalmazások kódjában

A rendszerteljesítmény-számlálók gyűjtéséhez és az Alkalmazás Elemzések való elküldéséhez a következő kódrészletet módosíthatja:

    var perfCollectorModule = new PerformanceCollectorModule();
    perfCollectorModule.Counters.Add(new PerformanceCounterCollectionRequest(
      @"\Process([replace-with-application-process-name])\Page Faults/sec", "PageFaultsPerfSec"));
    perfCollectorModule.Initialize(TelemetryConfiguration.Active);

Vagy ugyanezt megteheti a létrehozott egyéni metrikákkal is:

    var perfCollectorModule = new PerformanceCollectorModule();
    perfCollectorModule.Counters.Add(new PerformanceCounterCollectionRequest(
      @"\Sales(photo)\# Items Sold", "Photo sales"));
    perfCollectorModule.Initialize(TelemetryConfiguration.Active);

Teljesítményszámlálók gyűjtése ASP.NET Core-webalkalmazások kódjában

Konfigurálás PerformanceCollectorModule a metódus után a WebApplication.CreateBuilder() következőben 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();

Teljesítményszámlálók a Log Analyticsben

A Log Analyticsben teljesítményszámláló jelentéseket kereshet és jeleníthet meg.

A performanceCounters séma az egyes teljesítményszámlálók categorynevét counter és instance nevét teszi elérhetővé. Az egyes alkalmazások telemetriai adataiban csak az adott alkalmazás számlálói láthatók. Például a rendelkezésre álló számlálók megtekintéséhez:

Screenshot that shows performance counters in Application Insights analytics.

Instance Itt a teljesítményszámláló példányra hivatkozik, nem a szerepkörre vagy a kiszolgálógép-példányra. A teljesítményszámláló-példány neve általában a folyamat vagy az alkalmazás neve alapján szegmentálta a számlálókat, például a processzoridőt.

Az elmúlt időszakban rendelkezésre álló memória diagramjának lekérése:

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

A többi telemetriához hasonlóan a PerformanceCounters is rendelkezik egy oszlopmalcloud_RoleInstance, amely annak a gazdagépkiszolgáló-példánynak az identitását jelzi, amelyen az alkalmazás fut. Például az alkalmazás teljesítményének összehasonlítása a különböző gépeken:

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

ASP.NET és alkalmazás Elemzések száma

A következő szakaszok a ASP.NET és az alkalmazás Elemzések számát ismertetik.

Mi a különbség a kivételi arány és a Kivételek metrikák között?

  • Exception rate: A kivételi arány egy rendszerteljesítmény-számláló. A CLR megszámolja az összes olyan kezelt és kezeletlen kivételt, amely ki van dobva, és a mintavételi intervallumban lévő összesítést az intervallum hosszával osztja el. Az alkalmazás Elemzések SDK összegyűjti ezt az eredményt, és elküldi a portálnak.
  • Exceptions: A Kivételek metrika a TrackException portál által a diagram mintavételezési időközében fogadott jelentések száma. Csak azokat a kezelt kivételeket tartalmazza, amelyekben hívásokat írt TrackException a kódban. Nem tartalmazza az összes kezeletlen kivételt.

Azure App Service-beli Azure-webalkalmazásokban és Windows-tárolókban futó alkalmazások teljesítményszámlálói

Az Azure Web Appsben üzembe helyezett ASP.NET és ASP.NET Core-alkalmazások speciális tesztkörnyezetben futnak. A Azure-alkalmazás szolgáltatásban üzembe helyezett alkalmazások használhatnak Windows-tárolót, vagy tesztkörnyezetben üzemeltethetők. Ha az alkalmazás windowsos tárolóban van üzembe helyezve, a tároló lemezképében minden standard teljesítményszámláló elérhető.

A tesztkörnyezet nem teszi lehetővé a rendszerteljesítmény-számlálók közvetlen elérését. A számlálók korlátozott részhalmaza azonban környezeti változóként jelenik meg a környezeti változóként közzétett Perf Számlálókban leírtak szerint. Ebben a környezetben csak a számlálók egy részhalmaza érhető el. A teljes listát a környezeti változókként közzétett perf számlálókban találja.

Az alkalmazás Elemzések ASP.NET és ASP.NET Core-hoz készült SDK észleli, hogy a kód webalkalmazásban vagy nem Windows-tárolóban van-e üzembe helyezve. Az észlelés meghatározza, hogy a tesztkörnyezetben gyűjti-e a teljesítményszámlálókat, vagy windowsos tárolón vagy virtuális gépen üzemeltetve használja-e a standard gyűjtési mechanizmust.

Teljesítményszámlálók ASP.NET Core-alkalmazásokban

A ASP.NET Core teljesítményszámlálóinak támogatása korlátozott:

  • A 2.4.1-s és újabb SDK-verziók teljesítményszámlálókat gyűjtenek, ha az alkalmazás az Azure Web Appsben (Windows) fut.
  • A 2.7.1-s és újabb SDK-verziók teljesítményszámlálókat gyűjtenek, ha az alkalmazás Windows rendszerben és célokban vagy újabb verziókban NETSTANDARD2.0 fut.
  • A .NET-keretrendszer megcélzott alkalmazások esetében az SDK minden verziója támogatja a teljesítményszámlálókat.
  • Az SDK 2.8.0-s és újabb verziói támogatják a Cpu/Memória számlálót Linuxon. A Linux nem támogat más számlálót. Ha rendszerszámlálókat szeretne lekérni Linuxon (és más nem Windows-környezetekben), használja az EventCounterst.

Riasztások

Más metrikákhoz hasonlóan riasztást is beállíthat, amely figyelmezteti, ha egy teljesítményszámláló túllépi a megadott korlátot. Riasztás beállításához nyissa meg a Riasztások panelt, és válassza a Riasztás hozzáadása lehetőséget.

Következő lépések