Penghitung untuk .NET di Application Insights
Azure MonitorApplication Insights mendukung penghitung kinerja dan penghitung peristiwa. Panduan ini memberikan gambaran umum tentang keduanya, termasuk tujuan, konfigurasi, dan penggunaannya dalam aplikasi .NET.
Perhatian
Kami merekomendasikan Distro OpenTelemetry Azure Monitor untuk aplikasi atau pelanggan baru untuk mendukung Azure Monitor Application Insights. Distro OpenTelemetry Azure Monitor memberikan fungsionalitas dan pengalaman serupa seperti Application Insights SDK. Dimungkinkan untuk bermigrasi dari Application Insights SDK menggunakan panduan migrasi untuk .NET, Node.js, dan Python, tetapi kami masih berupaya menambahkan beberapa fitur lagi untuk kompatibilitas mundur.
Gambaran Umum
- Penghitung kinerja dibangun ke dalam sistem operasi Windows dan menawarkan metrik yang telah ditentukan sebelumnya seperti penggunaan CPU, konsumsi memori, dan aktivitas disk. Penghitung ini sangat ideal untuk memantau metrik performa standar dengan pengaturan minimal. Mereka membantu melacak pemanfaatan sumber daya atau memecahkan masalah hambatan tingkat sistem di aplikasi berbasis Windows tetapi tidak mendukung metrik khusus aplikasi kustom.
- Penghitung peristiwa berfungsi di beberapa platform, termasuk Windows, Linux, dan macOS. Mereka memungkinkan pengembang untuk menentukan dan memantau metrik khusus aplikasi yang ringan dan dapat disesuaikan, memberikan lebih banyak fleksibilitas daripada penghitung kinerja. Penghitung peristiwa berguna ketika metrik sistem tidak mencukup atau ketika telemetri terperinci diperlukan dalam aplikasi lintas platform. Mereka memerlukan implementasi dan konfigurasi eksplisit, yang membuat penyiapan lebih intensif.
Mengonfigurasi penghitung
Windows menyediakan berbagai penghitung kinerja, seperti yang digunakan untuk mengumpulkan statistik penggunaan prosesor, memori, dan disk. Anda juga dapat menentukan penghitung performa Anda sendiri.
Aplikasi Anda mendukung pengumpulan penghitung kinerja jika berjalan di bawah Internet Information Server (IIS) pada host lokal atau komputer virtual dengan akses administratif. Aplikasi yang berjalan karena Azure Web Apps tidak dapat langsung mengakses penghitung kinerja, tetapi Application Insights mengumpulkan subset penghitung yang tersedia.
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.
Penghitung default untuk aplikasi web ASP.NET:
- % Proses\Waktu Prosesor
- % Proses\Waktu Prosesor Dinormalisasi
- Memori\Byte yang Tersedia
- Permintaan ASP.NET/Detik
- Pengecualian .NET Common Language Runtime (CLR) Dilemparkan / dtk
- 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 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.
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
.Buka
ApplicationInsights.config
.Jika Anda menambahkan Application Insights ke aplikasi Anda selama pengembangan:
- Edit
ApplicationInsights.config
di proyek Anda. - Sebarkan ulang ke server Anda.
- Edit
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 menangkap penghitung standar dan penghitung yang 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()/-_ \.]+
.
Jika Anda menentukan instans, instans tersebut menjadi 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 PerformanceCollectorModule
WebApplication.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();
Jumlah ASP.NET dan Application Insights
Bagian berikutnya membahas jumlah ASP.NET dan Application Insights.
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 penghitung peristiwa.
Kueri Log Analytics
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 melihat penghitung untuk aplikasi tersebut. Misalnya, untuk melihat penghitung yang tersedia:
performanceCounters | summarize count(), avg(value) by category, instance, counter
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:
performanceCounters | where counter == "Available Bytes" | summarize avg(value), min(value) by bin(timestamp, 1h) | render timechart
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:
performanceCounters | where counter == "% Processor Time" and instance == "SendMetrics" | summarize avg(value) by cloud_RoleInstance, bin(timestamp, 1d)
Peringatan
Seperti metrik lain, Anda dapat mengatur pemberitahuan untuk memperingatkan jika penghitung berada di luar batas yang ditentukan.
Untuk mengatur pemberitahuan, buka panel Pemberitahuan dan pilih Tambahkan Pemberitahuan.
Tanya jawab umum
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 menghitung laporan yangTrackException
diterima oleh portal dalam interval pengambilan sampel bagan. Ini hanya mencakup pengecualian yang ditangani tempat Anda menulisTrackException
panggilan dalam kode Anda. Ini tidak termasuk semua pengecualian yang tidak tertangani.