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 aplikację Szczegółowe informacje.

Uwaga

Poniższa dokumentacja opiera się na klasycznym interfejsie API usługi Application Szczegółowe informacje. Długoterminowy plan Szczegółowe informacje aplikacji polega na zbieraniu danych przy użyciu biblioteki OpenTelemetry. Aby uzyskać więcej informacji, zobacz Enable Azure Monitor OpenTelemetry for .NET, Node.js, Python and Java applications (Włączanie usługi Azure Monitor OpenTelemetry dla platformy .NET, Node.js, Python i Java applications).

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.

Screenshot that shows performance counters reported in Application Insights.

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

  1. Dowiedz się, jakie liczniki są dostępne na serwerze przy użyciu tego polecenia programu PowerShell na serwerze lokalnym:

    Get-Counter -ListSet *
    

    W celu uzyskania więcej informacji, zobacz następujący temat: Get-Counter.

  2. Otwórz ApplicationInsights.config.

    W przypadku dodania Szczegółowe informacje aplikacji do aplikacji podczas programowania:

    1. Edytuj ApplicationInsights.config w projekcie.
    2. Ponownie wdróż go na serwerach.
  3. 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.configwartoś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 Szczegółowe informacje, 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 categorynazwę 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:

Screenshot that shows performance counters in Application Insights analytics.

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:

Screenshot that shows a memory time chart in Application Insights analytics.

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:

Screenshot that shows performance segmented by role instance in Application Insights analytics.

ASP.NET i liczba Szczegółowe informacje aplikacji

W następnych sekcjach omówiono ASP.NET i liczbę Szczegółowe informacje aplikacji.

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 Szczegółowe informacje aplikacji zbiera ten wynik i wysyła go do portalu.
  • Exceptions: Metryka Wyjątki to liczba raportów TrackException odebranych przez portal w interwale próbkowania wykresu. Zawiera tylko obsługiwane wyjątki, w których zostały napisane TrackException 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 Szczegółowe informacje 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.

Następne kroki