A .NET számlálói az Application Insightsban
Az Azure MonitorApplication Insights támogatja a teljesítményszámlálókat és az eseményszámlálókat. Ez az útmutató áttekintést nyújt mindkettőről, beleértve azok célját, konfigurációját és használatát a .NET-alkalmazásokban.
Figyelemfelhívás
Javasoljuk az Azure Monitor OpenTelemetry Distro használatát az új alkalmazások vagy ügyfelek számára az Azure Monitor Application Insights használatához. Az Azure Monitor OpenTelemetry Distro az Application Insights SDK-hoz hasonló funkciókat és élményt nyújt. Az Application Insights SDK-ból a .NET, a Node.js és a Python áttelepítési útmutatóival migrálható, de még dolgozunk néhány további funkció hozzáadásán a visszamenőleges kompatibilitás érdekében.
Áttekintés
- A teljesítményszámlálók a Windows operációs rendszerbe vannak beépítve, és előre meghatározott metrikákat kínálnak, például a processzorhasználatot, a memóriahasználatot és a lemeztevékenységet. Ezek a számlálók ideálisak a standard teljesítménymetrikák minimális beállítással történő monitorozásához. Segítenek nyomon követni az erőforrások kihasználtságát, vagy elhárítják a Windows-alapú alkalmazások rendszerszintű szűk keresztmetszeteit, de nem támogatják az egyéni alkalmazásspecifikus metrikákat.
- Az eseményszámlálók több platformon is működnek, beleértve a Windowst, a Linuxot és a macOS-t is. Lehetővé teszik a fejlesztők számára, hogy egyszerű, testre szabható alkalmazásspecifikus metrikákat definiáljanak és monitorozzanak, nagyobb rugalmasságot biztosítva, mint a teljesítményszámlálók. Az eseményszámlálók akkor hasznosak, ha a rendszermetrikák nem elegendőek, vagy ha részletes telemetriára van szükség a platformfüggetlen alkalmazásokban. Explicit megvalósítást és konfigurálást igényelnek, ami nagyobb erőfeszítést igényel.
Számlálók konfigurálása
A Windows különböző teljesítményszámlálókat 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.
Az alkalmazás támogatja a teljesítményszámláló gyűjtését, ha az Internet Information Server (IIS) alatt fut egy helyszíni gazdagépen vagy rendszergazdai hozzáféréssel rendelkező virtuális gépen. Az Azure Web Apps-ként futó alkalmazások nem férhetnek hozzá közvetlenül a teljesítményszámlálókhoz, de az Application Insights összegyűjti az elérhető számlálók egy részét.
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ó.
Alapértelmezett számlálók ASP.NET webalkalmazásokhoz:
- %Process\Processor Time
- % Process\Processor Time Normalized
- Memória\Rendelkezésre álló bájtok
- ASP.NET kérések/mp
- .NET Common Language Runtime (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ő
Alapértelmezett számlálók ASP.NET Core-webalkalmazásokhoz:
- %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álva haszná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()/-_ \.]+
.
Ha megad egy példányt, az a jelentett metrika dimenziójává CounterInstanceName
válik.
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();
ASP.NET és Application Insights-számok
A következő szakaszok a ASP.NET és az Application Insights számát ismertetik.
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áljon eseményszámlálókat.
Log Analytics-lekérdezések
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:
performanceCounters | summarize count(), avg(value) by category, instance, counter
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:
performanceCounters | where counter == "Available Bytes" | summarize avg(value), min(value) by bin(timestamp, 1h) | render timechart
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:
performanceCounters | where counter == "% Processor Time" and instance == "SendMetrics" | summarize avg(value) by cloud_RoleInstance, bin(timestamp, 1d)
Riasztások
Más metrikákhoz hasonlóan riasztást is beállíthat, amely figyelmezteti, ha egy számláló túllép egy 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.
Gyakori kérdések
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 megszámolja aTrackException
portál által a diagram mintavételezési időközében fogadott jelentéseket. Csak azokat a kezelt kivételeket tartalmazza, ahol hívásokat írTrackException
a kódba. Nem tartalmazza az összes kezeletlen kivételt.