Megosztás a következőn keresztül:


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.

  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 a fejlesztés során hozzáadta az Application Insightst az alkalmazáshoz:

    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á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)\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()/-_ \.]+.

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

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 a TrackException 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 ír TrackException a kódba. Nem tartalmazza az összes kezeletlen kivételt.