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.

Event counters reported in Application Insights Metric Explorer

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

Event counters reported in Application Insights Analytics

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

Chat of a single counter in Application Insights

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.

Langkah berikutnya