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 jest uruchomiona 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.
Wymagania wstępne
Udziel konta usługi puli aplikacji uprawnienie 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
W okienku Metryki jest wyświetlany 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
- ASP.NET żądania/s
- Wyjątki środowiska CLR platformy .NET zgłaszane / s
- ASP.NET ApplicationsRequest Czas wykonywania
- Proces\Bajty prywatne
- Proces\Bajty danych we/wy na sekundę
- ASP.NET Applications\Requests w kolejce aplikacji
- Procesor(_Total)\Czas procesora (%)
Bieżące domyślne liczniki zbierane dla aplikacji internetowych 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)\Czas 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 plik
ApplicationInsights.config
.Jeśli podczas opracowywania dodano usługę Application Insights do aplikacji:
- 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
ASP.NET Core aplikacje nie mają ApplicationInsights.config
elementu , 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()/-_ \.]+
z parametrem . Oznacza to, że zawierają znaki, które nie znajdują się w następujących zestawach: litery, zaokrąglone nawiasy, ukośnik do przodu, łą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 zbierać liczniki wydajności systemu i wysył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ć te same czynności w przypadku 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 ASP.NET Core
Skonfiguruj PerformanceCollectorModule
po metodzie WebApplication.CreateBuilder()
w pliku 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
Możesz wyszukiwać i wyświetlać raporty liczników wydajności w usłudze Log Analytics.
Schemat performanceCounters uwidacznia category
counter
nazwę 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 odnosi się do wystąpienia licznika wydajności, a nie roli lub wystąpienia maszyny serwera. Nazwa wystąpienia licznika wydajności zazwyczaj 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, parametr 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 o długość interwału. Zestaw SDK usługi Application Insights zbiera ten wynik i wysyła go do portalu.Exceptions
: Metryka Wyjątki jest liczbąTrackException
raportów 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ługiwanych wyjątków.
Liczniki wydajności dla aplikacji działających w kontenerach usługi Azure Web Apps i systemu Windows w usłudze Azure App Service
Zarówno ASP.NET, jak i ASP.NET Core aplikacje wdrożone w usłudze Azure Web Apps są uruchamiane w specjalnym środowisku piaskownicy. Aplikacje wdrożone w Azure App Service 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 uwidoczniony 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 używa standardowego mechanizmu zbierania w przypadku hostowanych 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 elementach docelowych
NETSTANDARD2.0
lub nowszych. - W przypadku aplikacji przeznaczonych dla .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 systemu w systemie Linux (i innych środowiskach innych niż Windows), użyj usługi EventCounters.
Alerty
Podobnie jak inne metryki, 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.