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.
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.
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.ApplicationInsights.config
openen.Als u Application Insights tijdens de ontwikkeling aan uw app hebt toegevoegd:
- Bewerken
ApplicationInsights.config
in uw project. - Implementeer deze opnieuw op uw servers.
- Bewerken
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:
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:
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:
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 deTrackException
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 geschrevenTrackException
. 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.