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 Application Insights összegyűjti az elérhető számlálók egy részét.
Feljegyzés
Az alábbi dokumentáció a klasszikus Application Insights API-ra támaszkodik. Az Application Insights hosszú távú terve, hogy adatokat gyűjtsön az OpenTelemetry használatával. További információ: Az Azure Monitor OpenTelemetria engedélyezése .NET-, Node.js-, Python- és Java-alkalmazásokhoz , valamint az OpenTelemetria ütemterve. A migrálási útmutató a .NET, a Node.js és a Python esetében érhető el.
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ó.
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.
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
.Nyílt
ApplicationInsights.config
.Ha a fejlesztés során hozzáadta az Application Insightst az alkalmazáshoz:
- Szerkesztés
ApplicationInsights.config
a projektben. - Helyezze újra üzembe a kiszolgálókon.
- Szerkesztés
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)\Counter
vagy 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 Application Insightsba 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 category
nevé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:
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:
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:
ASP.NET és Application Insights-számok
A következő szakaszok a ASP.NET és az Application Insights 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 Application Insights SDK összegyűjti ezt az eredményt, és elküldi a portálnak.Exceptions
: A Kivételek metrika aTrackException
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 írtTrackException
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.
A ASP.NET és ASP.NET Core-hoz készült Application Insights 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.