Liczniki wydajności systemu w usłudze Application Insights
System Windows udostępnia różne liczniki wydajności, takie jak te używane do zbierania statystyk użycia procesora, pamięci i dysku. Możesz również zdefiniować własne liczniki wydajności.
Zbieranie liczników wydajności jest obsługiwane, jeśli aplikacja działa w ramach usług IIS na hoście lokalnym lub jest maszyną wirtualną, do której masz dostęp administracyjny. Mimo że aplikacje działające jako usługa Azure Web Apps nie mają bezpośredniego dostępu do liczników wydajności, podzbiór dostępnych liczników jest zbierany przez usługę Application Insights.
Uwaga
Zalecamy dystrybucję OpenTelemetry usługi Azure Monitor dla nowych aplikacji lub klientów, aby umożliwić usłudze Azure Monitor Application Insights. Dystrybucja OpenTelemetry usługi Azure Monitor zapewnia podobną funkcjonalność i środowisko jako zestaw SDK usługi Application Insights. Migracja z zestawu SDK usługi Application Insights jest możliwa przy użyciu przewodników migracji dla platformy .NET, Node.js i języka Python, ale nadal pracujemy nad dodaniem kilku dodatkowych funkcji w celu zapewnienia zgodności z poprzednimi wersjami.
Wymagania wstępne
Udziel kontu usługi puli aplikacji uprawnienia do monitorowania liczników wydajności, dodając je do grupy użytkownicy monitor wydajności.
net localgroup "Performance Monitor Users" /add "IIS APPPOOL\NameOfYourPool"
Wyświetlanie liczników
Okienko Metryki zawiera domyślny zestaw liczników wydajności.
Bieżące domyślne liczniki dla aplikacji internetowych ASP.NET:
- % procesu\czasu procesora
- % procesu\znormalizowany czas procesora
- Pamięć\Dostępne bajty
- żądania ASP.NET na sekundę
- Zgłoszone wyjątki środowiska CLR platformy .NET na sekundę
- ASP.NET ApplicationsRequest Czas wykonywania
- Proces\Bajty prywatne
- Proces\Bajty danych we/wy na sekundę
- ASP.NET Applications\Requests w kolejce aplikacji
- Procesor (_Total)\% czasu procesora
Bieżące domyślne liczniki zbierane dla aplikacji internetowych platformy ASP.NET Core:
- % procesu\czasu procesora
- % procesu\znormalizowany czas procesora
- Pamięć\Dostępne bajty
- Proces\Bajty prywatne
- Proces\Bajty danych we/wy na sekundę
- Procesor (_Total)\% czasu procesora
Dodawanie liczników
Jeśli żądany licznik wydajności nie znajduje się na liście metryk, możesz go dodać.
Dowiedz się, jakie liczniki są dostępne na serwerze przy użyciu tego polecenia programu PowerShell na serwerze lokalnym:
Get-Counter -ListSet *
Aby uzyskać więcej informacji, zobacz
Get-Counter
.Otwórz
ApplicationInsights.config
.W przypadku dodania usługi Application Insights do aplikacji podczas programowania:
- Edytuj
ApplicationInsights.config
w projekcie. - Ponownie wdróż go na serwerach.
- Edytuj
Edytuj dyrektywę modułu zbierającego wydajność:
<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>
Uwaga
aplikacje ASP.NET Core nie mają ApplicationInsights.config
wartości , więc poprzednia metoda nie jest prawidłowa dla aplikacji ASP.NET Core.
Możesz przechwytywać zarówno standardowe liczniki, jak i liczniki zaimplementowane samodzielnie. \Objects\Processes
jest przykładem standardowego licznika dostępnego we wszystkich systemach Windows. \Sales(photo)\# Items Sold
jest przykładem niestandardowego licznika, który może zostać zaimplementowany w usłudze internetowej.
Format to \Category(instance)\Counter
, lub dla kategorii, które nie mają wystąpień, tylko \Category\Counter
.
Parametr ReportAs
jest wymagany dla nazw liczników, które nie są zgodne [a-zA-Z()/-_ \.]+
. Oznacza to, że zawierają znaki, które nie znajdują się w następujących zestawach: litery, nawiasy okrągłe, ukośnik, łącznik, podkreślenie, spacja i kropka.
Jeśli określisz wystąpienie, zostanie ono zebrane jako wymiar CounterInstanceName
zgłoszonej metryki.
Zbieranie liczników wydajności w kodzie dla aplikacji internetowych ASP.NET lub aplikacji konsolowych .NET/.NET Core
Aby zebrać liczniki wydajności systemu i wysłać je do usługi Application Insights, możesz dostosować następujący fragment kodu:
var perfCollectorModule = new PerformanceCollectorModule();
perfCollectorModule.Counters.Add(new PerformanceCounterCollectionRequest(
@"\Process([replace-with-application-process-name])\Page Faults/sec", "PageFaultsPerfSec"));
perfCollectorModule.Initialize(TelemetryConfiguration.Active);
Możesz też wykonać to samo za pomocą utworzonych metryk niestandardowych:
var perfCollectorModule = new PerformanceCollectorModule();
perfCollectorModule.Counters.Add(new PerformanceCounterCollectionRequest(
@"\Sales(photo)\# Items Sold", "Photo sales"));
perfCollectorModule.Initialize(TelemetryConfiguration.Active);
Zbieranie liczników wydajności w kodzie dla aplikacji internetowych platformy ASP.NET Core
Skonfiguruj PerformanceCollectorModule
po metodzie w pliku WebApplication.CreateBuilder()
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();
Liczniki wydajności w usłudze Log Analytics
Raporty liczników wydajności można przeszukiwać i wyświetlać w usłudze Log Analytics.
Schemat performanceCounters uwidacznia category
nazwę counter
i instance
nazwę każdego licznika wydajności. W telemetrii dla każdej aplikacji zobaczysz tylko liczniki dla tej aplikacji. Aby na przykład zobaczyć, jakie liczniki są dostępne:
Instance
W tym miejscu odwołuje się do wystąpienia licznika wydajności, a nie roli lub wystąpienia maszyny serwera. Nazwa wystąpienia licznika wydajności zwykle segmentuje liczniki, takie jak czas procesora, według nazwy procesu lub aplikacji.
Aby uzyskać wykres dostępnej pamięci w ostatnim okresie:
Podobnie jak inne dane telemetryczne, funkcja performanceCounters zawiera również kolumnę cloud_RoleInstance
wskazującą tożsamość wystąpienia serwera hosta, na którym działa aplikacja. Aby na przykład porównać wydajność aplikacji na różnych maszynach:
ASP.NET i liczniki usługi Application Insights
W następnych sekcjach omówiono ASP.NET i liczbę usługi Application Insights.
Jaka jest różnica między metrykami Współczynnik wyjątków i Wyjątki?
Exception rate
: Współczynnik wyjątków jest licznikiem wydajności systemu. ClR zlicza wszystkie obsługiwane i nieobsługiwane wyjątki, które są zgłaszane i dzieli sumę w interwale próbkowania przez długość interwału. Zestaw SDK usługi Application Insights zbiera ten wynik i wysyła go do portalu.Exceptions
: Metryka Wyjątki to liczba raportówTrackException
odebranych przez portal w interwale próbkowania wykresu. Zawiera tylko obsługiwane wyjątki, w których zostały napisaneTrackException
wywołania w kodzie. Nie obejmuje wszystkich nieobsługiwane wyjątki.
Liczniki wydajności dla aplikacji działających w kontenerach usługi Azure Web Apps i systemu Windows w usłudze Azure App Service
Aplikacje ASP.NET i ASP.NET Core wdrożone w usłudze Azure Web Apps są uruchamiane w specjalnym środowisku piaskownicy. Aplikacje wdrożone w usłudze aplikacja systemu Azure mogą korzystać z kontenera systemu Windows lub być hostowane w środowisku piaskownicy. Jeśli aplikacja jest wdrożona w kontenerze systemu Windows, wszystkie standardowe liczniki wydajności są dostępne w obrazie kontenera.
Środowisko piaskownicy nie zezwala na bezpośredni dostęp do liczników wydajności systemu. Jednak ograniczony podzbiór liczników jest uwidaczniony jako zmienne środowiskowe, zgodnie z opisem w temacie Liczniki wydajności uwidocznione jako zmienne środowiskowe. W tym środowisku jest dostępny tylko podzbiór liczników. Aby uzyskać pełną listę, zobacz Liczniki wydajności uwidocznione jako zmienne środowiskowe.
Zestaw SDK usługi Application Insights dla ASP.NET i ASP.NET Core wykrywa, czy kod jest wdrażany w aplikacji internetowej lub w kontenerze innym niż Windows. Wykrywanie określa, czy zbiera liczniki wydajności w środowisku piaskownicy, czy korzysta ze standardowego mechanizmu zbierania, gdy jest hostowany w kontenerze systemu Windows lub maszynie wirtualnej.
Liczniki wydajności w aplikacjach ASP.NET Core
Obsługa liczników wydajności w ASP.NET Core jest ograniczona:
- Zestaw SDK w wersji 2.4.1 lub nowszej zbiera liczniki wydajności, jeśli aplikacja jest uruchomiona w usłudze Azure Web Apps (Windows).
- Zestaw SDK w wersji 2.7.1 lub nowszej zbiera liczniki wydajności, jeśli aplikacja jest uruchomiona w systemie Windows i elementy docelowe
NETSTANDARD2.0
lub nowsze. - W przypadku aplikacji przeznaczonych dla platformy .NET Framework wszystkie wersje zestawu SDK obsługują liczniki wydajności.
- Zestaw SDK w wersji 2.8.0 lub nowszej obsługuje licznik procesora CPU/pamięci w systemie Linux. Żaden inny licznik nie jest obsługiwany w systemie Linux. Aby uzyskać liczniki systemowe w systemie Linux (i innych środowiskach innych niż Windows), użyj usługi EventCounters.
Alerty
Podobnie jak w przypadku innych metryk, możesz ustawić alert ostrzegawczy, jeśli licznik wydajności przekroczy określony limit. Aby ustawić alert, otwórz okienko Alerty i wybierz pozycję Dodaj alert.