Pengantar EventCounters
EventCounter
adalah mekanisme .NET/.NET Core untuk menerbitkan dan mengonsumsi penghitung atau statistik. EventCounters didukung di semua platform OS - Windows, Linux, dan macOS. Ia dapat dianggap sebagai setara lintas platform untuk PerformanceCounters yang hanya didukung dalam sistem Windows.
Meskipun pengguna dapat menerbitkan kustom EventCounters
apa pun untuk memenuhi kebutuhan mereka, .NET menerbitkan sekumpulan penghitung ini secara default. Dokumen ini menjelaskan langkah-langkah yang diperlukan untuk mengumpulkan dan melihat EventCounters
(ditentukan sistem atau ditentukan pengguna) di Azure 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.
Menggunakan Application Insights untuk mengumpulkan EventCounters
Application Insights mendukung pengumpulan EventCounters
beserta EventCounterCollectionModule
yang merupakan bagian dari paket NuGet yang baru dirilis Microsoft.ApplicationInsights.EventCounterCollector. EventCounterCollectionModule
diaktifkan secara otomatis saat menggunakan AspNetCore atau WorkerService. EventCounterCollectionModule
mengumpulkan penghitung dengan frekuensi pengumpulan yang tidak dapat dikonfigurasi selama 60 detik. Tidak ada izin khusus yang diperlukan untuk mengumpulkan EventCounters. Untuk aplikasi ASP.NET Core, Anda juga ingin menambahkan paket Microsoft.ApplicationInsights.AspNetCore .
dotnet add package Microsoft.ApplicationInsights.EventCounterCollector
dotnet add package Microsoft.ApplicationInsights.AspNetCore
Penghitung default dikumpulkan
Dimulai dengan versi 2.15.0 SDK AspNetCore atau SDK WorkerService, tidak ada penghitung yang dikumpulkan secara default. Modul itu sendiri diaktifkan, sehingga pengguna dapat menambahkan penghitung yang diinginkan untuk mengumpulkannya.
Untuk mendapatkan daftar penghitung terkenal yang diterbitkan oleh .NET Runtime, lihat Dokumen Penghitung yang Tersedia.
Menyesuaikan penghitung yang akan dikumpulkan
Contoh berikut menunjukkan cara menambahkan/menghapus penghitung. Penyesuaian ini akan dilakukan sebagai bagian dari konfigurasi layanan aplikasi Anda setelah pengumpulan telemetri Application Insights diaktifkan menggunakan AddApplicationInsightsTelemetry()
atau AddApplicationInsightsWorkerService()
. Berikut ini adalah contoh kode dari aplikasi ASP.NET Core. Untuk jenis aplikasi lainnya, lihat dokumen ini.
using Microsoft.ApplicationInsights.Extensibility.EventCounterCollector;
using Microsoft.Extensions.DependencyInjection;
builder.Services.ConfigureTelemetryModule<EventCounterCollectionModule>(
(module, o) =>
{
// Removes all default counters, if any.
module.Counters.Clear();
// Adds a user defined counter "MyCounter" from EventSource named "MyEventSource"
module.Counters.Add(
new EventCounterCollectionRequest("MyEventSource", "MyCounter"));
// Adds the system counter "gen-0-size" from "System.Runtime"
module.Counters.Add(
new EventCounterCollectionRequest("System.Runtime", "gen-0-size"));
}
);
Menonaktifkan modul kumpulan EventCounter
EventCounterCollectionModule
dapat dinonaktifkan dengan menggunakan ApplicationInsightsServiceOptions
.
Contoh berikut menggunakan ASP.NET Core SDK.
using Microsoft.ApplicationInsights.AspNetCore.Extensions;
using Microsoft.Extensions.DependencyInjection;
var applicationInsightsServiceOptions = new ApplicationInsightsServiceOptions();
applicationInsightsServiceOptions.EnableEventCounterCollectionModule = false;
builder.Services.AddApplicationInsightsTelemetry(applicationInsightsServiceOptions);
Pendekatan serupa juga dapat digunakan untuk WorkerService SDK, tetapi namespace harus diubah seperti yang ditunjukkan dalam contoh berikut.
using Microsoft.ApplicationInsights.AspNetCore.Extensions;
using Microsoft.Extensions.DependencyInjection;
var applicationInsightsServiceOptions = new ApplicationInsightsServiceOptions();
applicationInsightsServiceOptions.EnableEventCounterCollectionModule = false;
builder.Services.AddApplicationInsightsTelemetry(applicationInsightsServiceOptions);
Penghitung peristiwa di Metric Explorer
Untuk melihat metrik EventCounter di Metric Explorer, pilih sumber daya Application Insights, dan pilih Metrik berbasis log sebagai namespace metrik. Kemudian metrik EventCounter ditampilkan di bawah kategori Kustom.
Penghitung peristiwa di Analitik
Anda juga dapat mencari dan menampilkan laporan penghitung peristiwa di Analitik, dalam tabel customMetrics.
Misalnya, jalankan kueri berikut untuk melihat penghitung yang dikumpulkan dan tersedia untuk kueri:
customMetrics | summarize avg(value) by name
Untuk mendapatkan bagan penghitung spesifik (misalnya: ThreadPool Completed Work Item Count
) selama periode terakhir, jalankan kueri berikut.
customMetrics
| where name contains "System.Runtime|ThreadPool Completed Work Item Count"
| where timestamp >= ago(1h)
| summarize avg(value) by cloud_RoleInstance, bin(timestamp, 1m)
| render timechart
Seperti telemetri lainnya, customMetrics juga memiliki kolom cloud_RoleInstance
yang menunjukkan identitas instans server host tempat aplikasi Anda dijalankan. Kueri di atas menunjukkan nilai penghitung per instans, dan dapat digunakan untuk membandingkan performa instans server yang berbeda.
Peringatan
Seperti metrik lainnya, Anda dapat mengatur pemberitahuan untuk memperingatkan Anda jika penghitung performa melewati batas yang Anda tentukan. Buka panel Peringatan dan pilih Tambahkan Peringatan.
Pertanyaan yang Sering Ditanyakan
Dapatkah saya melihat EventCounters di Live Metrics?
Metrik Langsung tidak menampilkan EventCounters mulai hari ini. Gunakan Metric Explorer atau Analitik untuk melihat telemetri.
Saya telah mengaktifkan Application Insights dari Portal Aplikasi Web Azure. Mengapa saya tidak dapat melihat EventCounters?
Ekstensi Application Insights untuk ASP.NET Core belum mendukung fitur ini.