Delen via


Systeem prestatiemeteritems in Application Insights

Windows biedt diverse prestatiemeteritems, zoals prestatiemeteritems die worden gebruikt voor het verzamelen van statistieken over processor-, geheugen- en schijfgebruik. U kunt ook uw eigen prestatiemeteritems definiëren.

Het verzamelen van prestatiemeteritems wordt ondersteund als uw toepassing wordt uitgevoerd onder IIS op een on-premises host of een virtuele machine is waartoe u beheerderstoegang hebt. Hoewel toepassingen die worden uitgevoerd als Azure Web Apps geen directe toegang hebben tot prestatiemeteritems, wordt een subset van beschikbare tellers verzameld door Application Insights.

Notitie

De volgende documentatie is afhankelijk van de klassieke Application Insights-API. Het langetermijnplan voor Application Insights is het verzamelen van gegevens met behulp van OpenTelemetry. Zie Azure Monitor OpenTelemetry inschakelen voor .NET-, Node.js-, Python- en Java-toepassingen en onze OpenTelemetry Roadmap voor meer informatie. Migratierichtlijnen zijn beschikbaar voor .NET, Node.js en Python.

Vereisten

Verwijs het serviceaccount van de app-pool om prestatiemeteritems te bewaken door deze toe te voegen aan de groep Gebruikers van prestatiemeter .

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

Tellers weergeven

In het deelvenster Metrische gegevens ziet u de standaardset prestatiemeteritems.

Schermopname van prestatiemeteritems die zijn gerapporteerd in Application Insights.

Huidige standaardtellers voor ASP.NET webtoepassingen:

  • Percentage proces\processortijd
  • Percentage proces\genormaliseerde processortijd
  • Geheugen\Beschikbare bytes
  • ASP.NET aanvragen per seconde
  • .NET CLR-uitzonderingen gegenereerd per seconde
  • Uitvoeringstijd van ASP.NET ApplicationsRequest
  • Proces\Privébytes
  • Verwerken\IO-gegevensbytes per seconde
  • ASP.NET toepassingen\aanvragen in de toepassingswachtrij
  • Processor(_Total)\% processortijd

Huidige standaarditems die worden verzameld voor ASP.NET Core-webtoepassingen:

  • Percentage proces\processortijd
  • Percentage proces\genormaliseerde processortijd
  • Geheugen\Beschikbare bytes
  • Proces\Privébytes
  • Verwerken\IO-gegevensbytes per seconde
  • Processor(_Total)\% processortijd

Tellers toevoegen

Als het gewenste prestatiemeteritem niet is opgenomen in de lijst met metrische gegevens, kunt u deze toevoegen.

  1. Ontdek welke tellers beschikbaar zijn op uw server met behulp van deze PowerShell-opdracht op de lokale server:

    Get-Counter -ListSet *
    

    Zie Get-Counter voor meer informatie.

  2. ApplicationInsights.config openen.

    Als u Application Insights tijdens de ontwikkeling aan uw app hebt toegevoegd:

    1. Bewerken ApplicationInsights.config in uw project.
    2. Implementeer deze opnieuw op uw servers.
  3. Bewerk de instructie voor de prestatieverzamelaar:

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

Notitie

ASP.NET Core-toepassingen niet hebben ApplicationInsights.config, is de voorgaande methode dus niet geldig voor ASP.NET Core-toepassingen.

U kunt zowel standaardtellers als tellers vastleggen die u zelf hebt geïmplementeerd. \Objects\Processes is een voorbeeld van een standaardteller die beschikbaar is op alle Windows-systemen. \Sales(photo)\# Items Sold is een voorbeeld van een aangepaste teller die kan worden geïmplementeerd in een webservice.

De indeling is \Category(instance)\Counter, of voor categorieën die geen exemplaren hebben, alleen \Category\Counter.

De ReportAs parameter is vereist voor tellernamen die niet overeenkomen [a-zA-Z()/-_ \.]+. Dat wil gezegd, ze bevatten tekens die niet in de volgende sets voorkomen: letters, ronde haakjes, slash, afbreekstreepje, onderstrepingsteken, spatie en punt.

Als u een exemplaar opgeeft, wordt deze verzameld als dimensie CounterInstanceName van de gerapporteerde metrische gegevens.

Prestatiemeteritems verzamelen in code voor ASP.NET webtoepassingen of .NET/.NET Core-consoletoepassingen

Als u systeemprestatiemeteritems wilt verzamelen en naar Application Insights wilt verzenden, kunt u het volgende codefragment aanpassen:

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

U kunt ook hetzelfde doen met aangepaste metrische gegevens die u hebt gemaakt:

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

Prestatiemeteritems verzamelen in code voor ASP.NET Core-webtoepassingen

Configureren PerformanceCollectorModule na de WebApplication.CreateBuilder() methode in 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();

Prestatiemeteritems in Log Analytics

U kunt rapporten van prestatiemeteritems zoeken en weergeven in Log Analytics.

Het performanceCounters-schema toont de category, counter naam en instance naam van elke prestatiemeteritem. In de telemetrie voor elke toepassing ziet u alleen de tellers voor die toepassing. Als u bijvoorbeeld wilt zien welke tellers beschikbaar zijn:

Schermopname van prestatiemeteritems in Application Insights-analyses.

Instance Hier verwijst u naar het exemplaar van het prestatiemeteritem, niet naar het exemplaar van de rol of servercomputer. De naam van het exemplaar van het prestatiemeteritem segmenten, zoals processortijd, op basis van de naam van het proces of de toepassing.

Een grafiek met het beschikbare geheugen in de afgelopen periode ophalen:

Schermopname van een geheugentijddiagram in Application Insights-analyses.

Net als andere telemetrie heeft performanceCounters ook een kolom cloud_RoleInstance die de identiteit aangeeft van het hostserverexemplaren waarop uw app wordt uitgevoerd. Als u bijvoorbeeld de prestaties van uw app op de verschillende computers wilt vergelijken:

Schermopname van de prestaties die zijn gesegmenteerd per rolinstantie in Application Insights-analyses.

aantal ASP.NET en Application Insights

In de volgende secties worden ASP.NET en application insights-aantallen besproken.

Wat is het verschil tussen de metrische gegevens voor uitzonderingsfrequentie en Uitzonderingen?

  • Exception rate: De uitzonderingsfrequentie is een prestatiemeteritem van het systeem. De CLR telt alle verwerkte en niet-verwerkte uitzonderingen die worden gegenereerd en verdeelt het totaal in een steekproefinterval door de lengte van het interval. Met de Application Insights SDK wordt dit resultaat verzameld en naar de portal verzonden.
  • Exceptions: Het metrische gegeven Uitzonderingen is een telling van de TrackException rapporten die door de portal zijn ontvangen in het steekproefinterval van de grafiek. Het bevat alleen de afgehandelde uitzonderingen waarin u aanroepen in uw code hebt geschreven TrackException . Het bevat niet alle niet-verwerkte uitzonderingen.

Prestatiemeteritems voor toepassingen die worden uitgevoerd in Azure Web Apps- en Windows-containers op Azure App Service

Zowel ASP.NET als ASP.NET Core-toepassingen die zijn geïmplementeerd in Azure Web Apps, worden uitgevoerd in een speciale sandbox-omgeving. Toepassingen die zijn geïmplementeerd in Azure-app Service kunnen gebruikmaken van een Windows-container of worden gehost in een sandbox-omgeving. Als de toepassing is geïmplementeerd in een Windows-container, zijn alle standaard prestatiemeteritems beschikbaar in de containerinstallatiekopie.

De sandbox-omgeving staat geen directe toegang tot systeemprestatiemeteritems toe. Een beperkte subset van tellers wordt echter weergegeven als omgevingsvariabelen, zoals beschreven in Prestatiemeteritems die als omgevingsvariabelen worden weergegeven. In deze omgeving is slechts een subset met tellers beschikbaar. Zie Prestatiemeteritems die als omgevingsvariabelen worden weergegeven voor de volledige lijst.

De Application Insights SDK voor ASP.NET en ASP.NET Core detecteert of code is geïmplementeerd in een web-app of een niet-Windows-container. De detectie bepaalt of prestatiemeteritems in een sandbox-omgeving worden verzameld of het standaardverzamelingsmechanisme wordt gebruikt wanneer deze wordt gehost op een Windows-container of virtuele machine.

Prestatiemeteritems in ASP.NET Core-toepassingen

Ondersteuning voor prestatiemeteritems in ASP.NET Core is beperkt:

  • SDK-versies 2.4.1 en hoger verzamelen prestatiemeteritems als de toepassing wordt uitgevoerd in Azure Web Apps (Windows).
  • SDK-versies 2.7.1 en hoger verzamelen prestatiemeteritems als de toepassing wordt uitgevoerd in Windows en doelen NETSTANDARD2.0 of hoger.
  • Voor toepassingen die zijn gericht op .NET Framework, bieden alle versies van de SDK ondersteuning voor prestatiemeteritems.
  • SDK-versies 2.8.0 en hoger ondersteunen het CPU-/geheugenmeteritem in Linux. Er wordt geen andere teller ondersteund in Linux. Gebruik EventCounters om systeemtellers op te halen in Linux (en andere niet-Windows-omgevingen).

Waarschuwingen

Net als andere metrische gegevens kunt u een waarschuwing instellen om u te waarschuwen als een prestatiemeteritem buiten een limiet valt die u opgeeft. Als u een waarschuwing wilt instellen, opent u het deelvenster Waarschuwingen en selecteert u Waarschuwing toevoegen.

Volgende stappen