Penghitung performa sistem dalam Application Insights

Windows menyediakan berbagai penghitung kinerja, seperti yang digunakan untuk mengumpulkan statistik penggunaan prosesor, memori, dan disk. Anda juga dapat menentukan penghitung performa Anda sendiri.

Pengumpulan penghitung kinerja didukung jika aplikasi Anda berjalan di bawah IIS pada host lokal atau merupakan komputer virtual tempat Anda memiliki akses administratif. Meskipun aplikasi yang berjalan sebagai Azure Web Apps tidak memiliki akses langsung ke penghitung kinerja, subset penghitung yang tersedia dikumpulkan oleh Application Insights.

Catatan

Dokumentasi berikut bergantung pada API klasik Application Insights. Rencana jangka panjang untuk Application Insights adalah mengumpulkan data menggunakan OpenTelemetry. Untuk informasi selengkapnya, lihat Mengaktifkan Azure Monitor OpenTelemetry untuk aplikasi .NET, Node.js, Python, dan Java.

Prasyarat

Berikan izin akun layanan kumpulan aplikasi untuk memantau penghitung performa dengan menambahkannya ke grup Pengguna Monitor Performa.

net localgroup "Performance Monitor Users" /add "IIS APPPOOL\NameOfYourPool"

Melihat penghitung

Panel Metrik memperlihatkan kumpulan penghitung kinerja default.

Screenshot that shows performance counters reported in Application Insights.

Penghitung default saat ini untuk aplikasi web ASP.NET:

  • % Proses\Waktu Prosesor
  • % Proses\Waktu Prosesor Dinormalisasi
  • Memori\Byte yang Tersedia
  • Permintaan ASP.NET/Detik
  • Pengecualian .NET CLR yang Dibuang / detik
  • Waktu Eksekusi ASP.NET ApplicationsRequest
  • Proses\Byte Privat
  • Proses\IO Data Bytes/dtk
  • Aplikasi\Permintaan ASP.NET Dalam Antrean Aplikasi
  • Processor(_Total)\% Waktu Prosesor

Penghitung default saat ini dikumpulkan untuk aplikasi web ASP.NET Core:

  • % Proses\Waktu Prosesor
  • % Proses\Waktu Prosesor Dinormalisasi
  • Memori\Byte yang Tersedia
  • Proses\Byte Privat
  • Proses\IO Data Bytes/dtk
  • Processor(_Total)\% Waktu Prosesor

Menambahkan penghitung

Jika penghitung performa yang Anda inginkan tidak disertakan dalam daftar metrik, Anda dapat menambahkannya.

  1. Cari tahu penghitung yang tersedia di server Anda dengan menggunakan perintah PowerShell ini di server lokal:

    Get-Counter -ListSet *
    

    Untuk informasi selengkapnya, lihat Get-Counter .

  2. Buka ApplicationInsights.config.

    Jika Anda menambahkan Application Insights ke aplikasi Anda selama pengembangan:

    1. Edit ApplicationInsights.config di proyek Anda.
    2. Sebarkan ulang ke server Anda.
  3. Edit petunjuk kolektor performa:

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

Catatan

ASP.NET Core tidak memiliki ApplicationInsights.config, sehingga metode sebelumnya tidak valid untuk aplikasi ASP.NET Core.

Anda dapat menangkap penghitung standar dan penghitung yang telah Anda terapkan sendiri. \Objects\Processes adalah contoh penghitung standar yang tersedia di semua sistem Windows. \Sales(photo)\# Items Sold adalah contoh penghitung kustom yang mungkin diimplementasikan dalam layanan web.

Formatnya adalah \Category(instance)\Counter, atau untuk kategori yang tidak memiliki instans, hanya \Category\Counter.

Parameter ReportAs diperlukan untuk nama penghitung yang tidak cocok [a-zA-Z()/-_ \.]+. Artinya, karakter berisi karakter yang tidak ada dalam set berikut: huruf, kurung bulat, garis miring, tanda hubung, garis bawah, spasi, dan titik.

Jika Anda menentukan instans, instans akan dikumpulkan sebagai dimensi CounterInstanceName metrik yang dilaporkan.

Mengumpulkan penghitung kinerja dalam kode untuk aplikasi web ASP.NET atau aplikasi konsol .NET/.NET Core

Untuk mengumpulkan penghitung kinerja sistem dan mengirimkannya ke Application Insights, Anda dapat menyesuaikan cuplikan berikut:

    var perfCollectorModule = new PerformanceCollectorModule();
    perfCollectorModule.Counters.Add(new PerformanceCounterCollectionRequest(
      @"\Process([replace-with-application-process-name])\Page Faults/sec", "PageFaultsPerfSec"));
    perfCollectorModule.Initialize(TelemetryConfiguration.Active);

Atau Anda dapat melakukan hal yang sama dengan metrik kustom yang Anda buat:

    var perfCollectorModule = new PerformanceCollectorModule();
    perfCollectorModule.Counters.Add(new PerformanceCounterCollectionRequest(
      @"\Sales(photo)\# Items Sold", "Photo sales"));
    perfCollectorModule.Initialize(TelemetryConfiguration.Active);

Mengumpulkan penghitung kinerja dalam kode untuk aplikasi web ASP.NET Core

Konfigurasikan PerformanceCollectorModuleWebApplication.CreateBuilder() setelah metode di 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();

Penghitung kinerja di Analitik Log

Anda dapat mencari dan menampilkan laporan penghitung kinerja di Analitik Log.

Skema performanceCounters mengekspos category, nama counter, dan nama instance setiap penghitung performa. Dalam telemetri untuk setiap aplikasi, Anda hanya akan melihat penghitung untuk aplikasi tersebut. Misalnya, untuk melihat penghitung yang tersedia:

Screenshot that shows performance counters in Application Insights analytics.

Di sini, Instance mengacu pada instans penghitung kinerja, bukan peran atau instans komputer server. Nama instans penghitung kinerja biasanya segmen penghitung, seperti waktu prosesor, dengan nama proses atau aplikasi.

Untuk mendapatkan bagan memori yang tersedia selama periode terakhir:

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

Seperti telemetri lainnya, performanceCounters juga memiliki kolom cloud_RoleInstance yang menunjukkan identitas instans server host tempat aplikasi Anda dijalankan. Misalnya, untuk membandingkan performa aplikasi Anda di komputer yang berbeda:

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

Jumlah ASP.NET dan Application Insights

Bagian berikutnya membahas jumlah ASP.NET dan Application Insights.

Apa perbedaan antara metrik Pengecualian dan tingkat Pengecualian?

  • Exception rate: Tingkat pengecualian adalah penghitung kinerja sistem. CLR menghitung semua pengecualian yang ditangani dan tidak tertangani yang dilemparkan dan membagi total dalam interval pengambilan sampel dengan panjang interval. Application Insights SDK mengumpulkan hasil ini dan mengirimkannya ke portal.
  • Exceptions: Metrik Pengecualian adalah hitungan TrackException laporan yang diterima oleh portal dalam interval pengambilan sampel bagan. Ini hanya mencakup pengecualian yang ditangani di mana Anda telah menulis TrackException panggilan dalam kode Anda. Ini tidak termasuk semua pengecualian yang tidak tertangani.

Penghitung kinerja untuk aplikasi yang berjalan di Azure Web Apps dan kontainer Windows di Azure App Service

Aplikasi ASP.NET dan ASP.NET yang disebarkan ke Azure Web Apps dijalankan di lingkungan kotak pasir khusus. Aplikasi yang disebarkan ke Azure App Service dapat menggunakan kontainer Windows atau dihosting di lingkungan kotak pasir. Jika aplikasi disebarkan dalam kontainer Windows, semua penghitung kinerja standar tersedia dalam gambar kontainer.

Lingkungan kotak pasir tidak mengizinkan akses langsung ke penghitung kinerja sistem. Namun, subset penghitung terbatas diekspos sebagai variabel lingkungan seperti yang dijelaskan dalam Penghitung Perf yang diekspos sebagai variabel lingkungan. Hanya subset penghitung yang tersedia di lingkungan ini. Untuk daftar lengkapnya, lihat Penghitung Perf yang diekspos sebagai variabel lingkungan.

Application Insights SDK untuk ASP.NET dan ASP.NET Core mendeteksi apakah kode disebarkan ke aplikasi web atau kontainer non-Windows. Deteksi menentukan apakah ia mengumpulkan penghitung kinerja di lingkungan kotak pasir atau menggunakan mekanisme pengumpulan standar saat dihosting pada kontainer Windows atau komputer virtual.

Penghitung performa aplikasi ASP.NET Core

Dukungan untuk penghitung kinerja ASP.NET Core terbatas:

  • SDK versi 2.4.1 dan yang lebih baru mengumpulkan penghitung performa jika aplikasi berjalan di Azure Web Apps (Windows).
  • SDK versi 2.7.1 dan yang lebih baru mengumpulkan penghitung kinerja jika aplikasi berjalan Windows dan menargetkan NETSTANDARD2.0 atau yang lebih baru.
  • Untuk aplikasi yang menargetkan .NET Framework, semua versi SDK mendukung penghitung kinerja.
  • SDK versi 2.8.0 dan yang lebih baru mendukung penghitung CPU/Memori di Linux. Tidak ada penghitung lain yang didukung di Linux. Untuk mendapatkan penghitung sistem di Linux (dan lingkungan non-Windows lainnya), gunakan EventCounters.

Peringatan

Seperti metrik lainnya, Anda dapat mengatur pemberitahuan untuk memperingatkan Anda jika penghitung performa berada di luar batas yang Anda tentukan. Untuk mengatur pemberitahuan, buka panel Pemberitahuan dan pilih Tambahkan Pemberitahuan.

Langkah berikutnya