Liczniki wydajności systemu w programie Application Szczegółowe informacje

W systemie Windows dostępne są różne liczniki wydajności, takie jak zajętości procesora CPU, pamięci, dysku i użycia sieci. Można również zdefiniować własne liczniki wydajności. Zbieranie liczników wydajności jest obsługiwane, o ile aplikacja jest uruchomiona w usługach IIS na hoście lokalnym lub na maszynie wirtualnej, do której masz dostęp administracyjny. Chociaż aplikacje działające jako usługa Azure Web Apps nie mają bezpośredniego dostępu do liczników wydajności, podzestaw dostępnych liczników jest zbierany przez usługę Application Szczegółowe informacje.

Wyświetlanie liczników

Okienko Metryki zawiera domyślny zestaw liczników wydajności.

Liczniki wydajności zgłaszane w programie Application Szczegółowe informacje

Bieżące liczniki domyślne, które są skonfigurowane do zbierania dla ASP.NET internetowych są:

  • Czas procesora \ przetwarzania (w procentach)
  • Znormalizowany \ czas procesora przetwarzania (w procentach)
  • Ilość \ dostępnej pamięci (w bajtach)
  • ASP.NET Żądania na sekundę
  • Zgłaszane wyjątki CLR .NET na sekundę
  • ASP.NET AplikacjeRequest Execution Time
  • Przetwarzanie \ bajtów prywatnych
  • Przetwarzanie \ bajtów danych we/wy na sekundę
  • ASP.NET Żądania \ aplikacji w kolejce aplikacji
  • Procesor (_Total) \ % czasu procesora

Bieżące liczniki domyślne, które są skonfigurowane do zbierania dla ASP.NET Core internetowych są:

  • Czas procesora \ przetwarzania (w procentach)
  • Znormalizowany \ czas procesora przetwarzania (w procentach)
  • Ilość \ dostępnej pamięci (w bajtach)
  • Przetwarzanie \ bajtów prywatnych
  • Przetwarzanie \ bajtów danych we/wy na sekundę
  • Procesor (_Total) \ % czasu procesora

Dodawanie liczników

Jeśli licznik wydajności, którego potrzebujesz, nie znajduje się na liście metryk, możesz go dodać.

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

    Get-Counter -ListSet *

    (Zobacz Get-Counter ).

  2. Otwórz ApplicationInsights.config.

    • Jeśli aplikacja została dodana Szczegółowe informacje do aplikacji podczas tworzenia, edytuj ApplicationInsights.config w projekcie, a następnie ponownie wdoń ją 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

ASP.NET Core nie mają metody , dlatego metoda powyżej nie jest prawidłowa dla ApplicationInsights.config ASP.NET Core Applications.

Można przechwytywać zarówno standardowe liczniki, jak i te, które zostały zaimplementowane samodzielnie. \Objects\Processesjest przykładem standardowego licznika, który jest dostępny we wszystkich Windows systemach. \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ń, po prostu \Category\Counter .

ReportAs Jest wymagany dla nazw liczników, które nie są zgodne — to znaczy zawierają znaki, które nie znajdują się w następujących zestawach: litery, nawiasy [a-zA-Z()/-_ \.]+ okrągłe, ukośnik, łącznik, podkreślenie, spacja, kropka.

Jeśli określisz wystąpienie, zostanie ono zebrane jako wymiar "CounterInstanceName" zgłaszanej metryki.

Zbieranie liczników wydajności w kodzie dla ASP.NET internetowych lub aplikacji konsolowych .NET/.NET Core

Aby zebrać liczniki wydajności systemu i wysłać je do Szczegółowe informacje Application, możesz dostosować poniższy 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ż zrobić to samo z utworzonymi metrykami niestandardowymi:

    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 ASP.NET Core internetowych

ConfigureServicesZmodyfikuj metodę Startup.cs w klasie, jak po przedstawiono poniżej.

using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector;

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddApplicationInsightsTelemetry();

        // The following configures PerformanceCollectorModule.
  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"));
            });
    }

Liczniki wydajności w analizie

Raporty liczników wydajności można wyszukiwać i wyświetlać w analizie.

PerformanceCounters schematu uwidacznia category , nazwę i nazwę każdego counter instance licznika wydajności. W telemetrii dla każdej aplikacji zobaczysz tylko liczniki dla tej aplikacji. Aby na przykład sprawdzić, jakie liczniki są dostępne:

Liczniki wydajności w analizie Szczegółowe informacje aplikacji

("Tutaj "Wystąpienie" 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:

Schemat czasowy pamięci w analizie Szczegółowe informacje aplikacji

Podobnie jak w przypadku innych telemetrii, liczniki performanceCounter również mają kolumnę, która wskazuje tożsamość wystąpienia serwera hosta, na cloud_RoleInstance którym jest uruchomiona aplikacja. Aby na przykład porównać wydajność aplikacji na różnych maszynach:

Wydajność segmentowana według wystąpienia roli w analizie Szczegółowe informacje aplikacji

ASP.NET i liczniki Szczegółowe informacje aplikacji

Jaka jest różnica między metrykami Wskaźnik wyjątków i Wyjątki?

  • Szybkość wyjątków to licznik 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 zbiera ten wynik i wysyła go do portalu.

  • Wyjątki to liczba raportów TrackException odebranych przez portal w interwale próbkowania wykresu. Obejmuje tylko obsługiwane wyjątki, w których w kodzie napisano wywołania TrackException, i nie obejmuje wszystkich nieobsługiwanych wyjątków.

Liczniki wydajności dla aplikacji działających w usłudze Azure Web Apps

Aplikacje ASP.NET i ASP.NET Core wdrożone na platformie Azure Web Apps działają w specjalnym środowisku piaskownicy. To środowisko nie zezwala na bezpośredni dostęp do liczników wydajności systemu. Jednak ograniczony podzbiór liczników jest dostępny jako zmienne środowiskowe zgodnie z opisem w tym miejscu. Zestaw SDK Szczegółowe informacje dla ASP.NET i ASP.NET Core zbiera liczniki wydajności z usługi Azure Web Apps z tych specjalnych zmiennych środowiskowych. W tym środowisku jest dostępny tylko podzbiór liczników, a pełną listę można znaleźć tutaj.

Liczniki wydajności w ASP.NET Core aplikacji

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 programie Windows i NETSTANDARD2.0 docelowych lub nowszych.
  • W przypadku aplikacji przeznaczonych .NET Framework wszystkie wersje zestawu SDK obsługują liczniki wydajności.
  • Zestaw SDK w wersji 2.8.0 lub nowszej obsługuje licznik procesora/pamięci w systemie Linux. W systemie Linux nie są obsługiwane żadne inne liczniki. Zalecanym sposobem uzyskania liczników systemowych w systemie Linux (i innych środowiskach Windows) jest użycie funkcji EventCounters

Alerty

Podobnie jak w przypadku innych metryk, można ustawić alert ostrzegawczy, jeśli licznik wydajności wykracza poza określony limit. Otwórz okienko Alerty i kliknij pozycję Dodaj alert.

Następne kroki