Perbandingan API Metrik
Saat menambahkan instrumentasi metrik baru ke aplikasi atau pustaka .NET, ada berbagai API berbeda untuk dipilih. Artikel ini akan membantu Anda memahami opsi.
API .NET
System.Diagnostics.Metrics
API System.Diagnostics.Metrics adalah API lintas platform terbaru, dan dirancang dalam kolaborasi erat dengan proyek OpenTelemetry . Jika Anda tidak memiliki alasan khusus untuk menggunakan salah satu API lama yang tercakup di bawah ini, System.Diagnostics.Metrics adalah pilihan default yang baik untuk pekerjaan baru. Ini tersedia dengan menargetkan .NET 6+, atau di aplikasi .NET Core dan .NET Framework yang lebih lama dengan menambahkan referensi ke paket NuGet .NET System.Diagnostics.DiagnosticsSource 6.0+. Selain bertujuan untuk kompatibilitas luas, API ini menambahkan dukungan untuk banyak hal yang kurang dari API sebelumnya, seperti:
- Histogram dan persentil
- Metrik multidimensi
- API pendengar berkinerja tinggi yang ditik dengan kuat
- Beberapa pendengar simultan
- Akses pendengar ke pengukuran yang tidak diagregasi
Meskipun API ini dirancang untuk bekerja dengan baik dengan OpenTelemetry dan ekosistem pustaka integrasi vendor yang dapat dicolokkan, aplikasi juga memiliki opsi untuk menggunakan API pendengar bawaan .NET secara langsung. Dengan opsi ini, Anda dapat membuat alat metrik kustom tanpa mengambil dependensi pustaka eksternal apa pun.
PerformanceCounter
System.Diagnostics.PerformanceCounter API adalah API metrik .NET tertua. Mereka hanya didukung di Windows dan menyediakan pembungkus terkelola untuk teknologi Penghitung Kinerja OS Windows. Mereka tersedia di semua versi .NET yang didukung.
API ini disediakan terutama untuk kompatibilitas; tim .NET menganggap ini area stabil yang tidak mungkin menerima peningkatan lebih lanjut selain perbaikan bug. API ini tidak disarankan untuk proyek pengembangan baru kecuali proyek hanya Windows dan Anda memiliki keinginan untuk menggunakan alat Penghitung Kinerja Windows.
Untuk informasi selengkapnya, lihat Penghitung kinerja di .NET Framework.
EventCounters
EventCounters adalah API .NET pertama yang mendukung pengalaman metrik lintas platform. API tersedia dengan menargetkan .NET Core 3.1+, dan subset kecil tersedia di .NET Framework 4.7.1 dan yang lebih baru. API ini didukung sepenuhnya dan masih digunakan oleh pustaka .NET utama, tetapi memiliki fungsionalitas yang lebih sedikit daripada API yang lebih System.Diagnostics.Metrics baru. EventCounters dapat melaporkan tingkat perubahan dan rata-rata, tetapi tidak mendukung histogram dan persentil. Juga tidak ada dukungan untuk metrik multi-dimensi. Alat kustom dimungkinkan melalui EventListener API, meskipun tidak ditik dengan kuat, hanya memberikan akses ke nilai agregat, dan memiliki batasan saat menggunakan lebih dari satu pendengar secara bersamaan. EventCounters didukung langsung oleh Visual Studio, Application Insights, penghitung dotnet, dan dotnet-monitor. Untuk dukungan alat pihak ketiga, periksa vendor atau dokumentasi proyek untuk melihat apakah tersedia.
Tim .NET tidak berharap untuk melakukan investasi baru pada API ini ke depannya, tetapi seperti PerformanceCounters
halnya , API tetap didukung untuk semua pengguna saat ini dan di masa mendatang.
API pihak ketiga
Sebagian besar vendor pemantauan performa aplikasi (APM) seperti AppDynamics, Application Insights, DataDog, DynaTrace, dan NewRelic menyertakan API metrik sebagai bagian dari pustaka instrumentasi mereka. Prometheus dan AppMetrics juga merupakan proyek .NET OSS yang populer. Untuk mempelajari selengkapnya tentang proyek-proyek ini, periksa berbagai situs web proyek.