Udostępnij za pośrednictwem


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.

Zrzut ekranu przedstawiający liczniki wydajności zgłaszane w usłudze 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 *
    

    Aby uzyskać więcej informacji, zobacz Get-Counter.

  2. Otwórz ApplicationInsights.config.

    W przypadku dodania usługi Application Insights 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 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 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:

Zrzut ekranu przedstawiający liczniki wydajności w analizie usługi Application Insights.

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:

Zrzut ekranu przedstawiający wykres czasu pamięci w analizie usługi Application Insights.

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:

Zrzut ekranu przedstawiający wydajność segmentowaną według wystąpienia roli w analizie usługi Application Insights.

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

Następne kroki