Ereignisse
17. März, 21 Uhr - 21. März, 10 Uhr
Nehmen Sie an der Meetup-Serie teil, um skalierbare KI-Lösungen basierend auf realen Anwendungsfällen mit Mitentwicklern und Experten zu erstellen.
Jetzt registrierenDieser Browser wird nicht mehr unterstützt.
Führen Sie ein Upgrade auf Microsoft Edge durch, um die neuesten Features, Sicherheitsupdates und den technischen Support zu nutzen.
Azure MonitorApplication Insights unterstützt Leistungsindikatoren und Ereigniszähler. Dieses Handbuch bietet eine Übersicht über beides, einschließlich Zweck, Konfiguration und Verwendung in .NET-Anwendungen.
Achtung
Wir empfehlen die OpenTelemetry-Distribution von Azure Monitor für neue Anwendungen oder Kunden, um Azure Monitor Application Insights zu betreiben. Die OpenTelemetry-Distribution von Azure Monitor bietet eine ähnliche Funktionalität und Benutzererfahrung wie das Application Insights SDK. Es ist möglich, mithilfe der Migrationsleitfäden für .NET, Node.js und Python vom Application Insights SDK zu migrieren, wir arbeiten jedoch an der Integration zusätzlicher Funktionen für die Abwärtskompatibilität.
Windows bietet eine Vielzahl von Leistungsindikatoren, wie z. B. diejenigen zum Erfassen von Statistiken zur Prozessor-, Arbeitsspeicher- und Datenträgerauslastung. Sie können auch eigene Leistungsindikatoren definieren.
Ihre Anwendung unterstützt die Leistungsindikatorsammlung, wenn sie unter Internetinformationsserver (IIS) auf einem lokalen Host oder einem virtuellen Computer mit Administratorzugriff ausgeführt wird. Anwendungen, die als Azure Web Apps ausgeführt werden, können nicht direkt auf Leistungsindikatoren zugreifen, aber ein Teil der verfügbaren Leistungsindikatoren wird von Application Insights erfasst.
Erteilen Sie dem App-Pooldienstkonto die Berechtigung zum Überwachen von Leistungsindikatoren, indem Sie es der Gruppe Leistungsmonitorbenutzer hinzufügen.
net localgroup "Performance Monitor Users" /add "IIS APPPOOL\NameOfYourPool"
Im Bereich Metriken wird die Standardmenge von Leistungsindikatoren angezeigt.
Standardleistungsindikatoren für ASP.NET-Webanwendungen:
Aktuelle Standardleistungsindikatoren für ASP.NET Core-Webanwendungen:
Wenn der gewünschte Leistungsindikator nicht in der Liste der Metriken enthalten ist, können Sie ihn hinzufügen.
Welche Leistungsindikatoren in Ihrem Server verfügbar sind, können Sie ermitteln, indem Sie diesen PowerShell-Befehl auf dem lokalen Server verwenden:
Get-Counter -ListSet *
Weitere Informationen finden Sie unter Get-Counter
.
Öffnen Sie ApplicationInsights.config
.
Wenn Sie Application Insights während der Entwicklung Ihrer App hinzugefügt haben, gehen Sie folgendermaßen vor:
ApplicationInsights.config
in Ihrem Projekt.Bearbeiten Sie Leistungserfassungsanweisung:
<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>
Hinweis
ASP.NET Core-Anwendungen verfügen nicht über ApplicationInsights.config
, sodass die vorherige Methode für ASP.NET-Core Anwendungen nicht gültig ist.
Sie erfassen sowohl Standardindikatoren und -zähler als auch Indikatoren, die Sie selbst implementieren.
\Objects\Processes
ist ein Beispiel für einen Standardindikator, der auf allen Windows-Systemen verfügbar ist.
\Sales(photo)\# Items Sold
ist ein Beispiel für einen benutzerdefinierten Indikator, der in einem Webdienst implementiert sein kann.
Das Format lautet \Category(instance)\Counter
bzw. für Kategorien, die keine Instanzen besitzen, einfach \Category\Counter
.
Der Parameter ReportAs
ist für Leistungsindikatornamen erforderlich, die nicht mit [a-zA-Z()/-_ \.]+
übereinstimmen,
Wenn Sie eine Instanz angeben, wird sie zu einer Dimension CounterInstanceName
der gemeldeten Metrik.
Um Systemleistungsindikatoren zu erfassen und an Application Insights zu senden, können Sie den folgenden Codeschnipsel anpassen:
var perfCollectorModule = new PerformanceCollectorModule();
perfCollectorModule.Counters.Add(new PerformanceCounterCollectionRequest(
@"\Process([replace-with-application-process-name])\Page Faults/sec", "PageFaultsPerfSec"));
perfCollectorModule.Initialize(TelemetryConfiguration.Active);
Alternativ können Sie dieselben Schritte mit von Ihnen erstellten benutzerdefinierten Metriken ausführen:
var perfCollectorModule = new PerformanceCollectorModule();
perfCollectorModule.Counters.Add(new PerformanceCounterCollectionRequest(
@"\Sales(photo)\# Items Sold", "Photo sales"));
perfCollectorModule.Initialize(TelemetryConfiguration.Active);
Konfigurieren Sie PerformanceCollectorModule
nach der Methode WebApplication.CreateBuilder()
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();
In den nächsten Abschnitten werden ASP.NET- und Application Insights-Leistungsindikatoren erläutert.
Sowohl ASP.NET- als auch ASP.NET Core-Anwendungen, die in Azure-Web-Apps bereitgestellt werden, werden in einer speziellen Sandkastenumgebung ausgeführt. Anwendungen, die in Azure App Service bereitgestellt werden, können einen Windows-Container verwenden oder in einer Sandboxumgebung gehostet werden. Wenn die Anwendung in einem Windows-Container bereitgestellt wird, sind alle Standardleistungsindikatoren im Containerimage verfügbar.
In der Sandboxumgebung ist der direkte Zugriff auf Systemleistungsindikatoren nicht möglich. Eine begrenzte Teilmenge von Indikatoren wird jedoch, wie unter Perf Counters exposed as environment variables beschrieben, als Umgebungsvariablen verfügbar gemacht. In dieser Umgebung ist nur eine Teilmenge der Indikatoren verfügbar. Die vollständige Liste finden Sie unter Perf Counters exposed as environment variables.
Das Application Insights SDK für ASP.NET und ASP.NET Core erkennt, ob Code in einer Web-App oder einem Nicht-Windows-Container bereitgestellt wurde. Während dieser Erkennung bestimmt das SDK, ob Leistungsindikatoren in einer Sandboxumgebung erfasst werden sollen oder ob der Standarderfassungsmechanismus beim Hosten in einem Windows-Container oder auf einer Windows-VM genutzt werden soll.
Für die Unterstützung von Leistungsindikatoren in ASP.NET Core gelten die folgenden Einschränkungen:
NETSTANDARD2.0
oder höher als Zielframework verwendet wird.In Log Analytics können Sie nach Leistungsindikatorberichten suchen und diese anzeigen.
Das Schema performanceCounters zeigt die category
, den counter
-Namen und instance
-Namen der einzelnen Leistungsindikatoren. In den Telemetriedaten jeder Anwendung werden nur die Indikatoren für die betreffende Anwendung angezeigt. Beispielsweise, um verfügbare Leistungsindikatoren anzuzeigen:
performanceCounters | summarize count(), avg(value) by category, instance, counter
Hier bezieht sich Instance
auf die Instanz des Leistungsindikators, nicht auf die Rolle oder die Servercomputerinstanz. Leistungsindikatoren wie z. B. Prozessorzeit werden vom Namen der Leistungsindikatorinstanz in der Regel nach dem Namen des Prozesses oder der Anwendung segmentiert.
So erhalten Sie ein Diagramm des verfügbaren Arbeitsspeichers im aktuellen Zeitraum:
performanceCounters | where counter == "Available Bytes" | summarize avg(value), min(value) by bin(timestamp, 1h) | render timechart
Wie andere Telemetriedaten umfasst auch performanceCounters eine Spalte cloud_RoleInstance
, die die Identität der Hostserverinstanz angibt, auf dem Ihre Anwendung ausgeführt wird. Geben Sie beispielsweise Folgendes ein, um die Leistung Ihrer App auf verschiedenen Computern vergleichen:
performanceCounters | where counter == "% Processor Time" and instance == "SendMetrics" | summarize avg(value) by cloud_RoleInstance, bin(timestamp, 1d)
Wie andere Metriken können Sie eine Warnung festlegen, um zu warnen, wenn ein Zähler außerhalb eines angegebenen Grenzwerts liegt.
Um eine Warnung festzulegen, öffnen Sie den Bereich Warnungen und wählen Warnung hinzufügen aus.
Exception rate
: Die Ausnahmerate ist ein Systemleistungsindikator. Die CLR zählt alle behandelten und nicht behandelten Ausnahmen, die ausgelöst werden, und dividiert das Ergebnis innerhalb eines Samplingintervalls durch die Länge dieses Intervalls. Das Application Insights SDK sammelt dieses Ergebnis und sendet es an das Portal.Exceptions
: Die Metrik „Ausnahmen“ zählt die TrackException
-Meldungen, die das Portal innerhalb des Samplingintervalls des Diagramms empfangen hat. Sie enthält nur die behandelten Ausnahmen, bei denen Sie TrackException
-Aufrufe in Ihren Code geschrieben haben. Sie enthält nicht alle nicht behandelten Ausnahmen.Ereignisse
17. März, 21 Uhr - 21. März, 10 Uhr
Nehmen Sie an der Meetup-Serie teil, um skalierbare KI-Lösungen basierend auf realen Anwendungsfällen mit Mitentwicklern und Experten zu erstellen.
Jetzt registrierenTraining
Lernpfad
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization