Java Profiler untuk Application Insights pada Azure Monitor
Catatan
Fitur Java Profiler sedang dalam pratinjau, mulai dari 3.4.0.
Java Profiler untuk Application Insights menyediakan sistem untuk:
- Membuat profil JDK Flight Recorder (JFR) sesuai permintaan dari Java Virtual Machine (JVM).
- Membuat profil JFR secara otomatis ketika kondisi pemicu tertentu terpenuhi dari JVM, seperti CPU atau memori yang melanggar ambang batas yang dikonfigurasi.
Gambaran Umum
Profiler Java untuk Application Insights menggunakan profiler JFR yang disediakan oleh JVM untuk merekam data profil, sehingga pengguna dapat mengunduh rekaman JFR di lain waktu dan menganalisisnya untuk mengidentifikasi penyebab masalah performa.
Data ini dikumpulkan sesuai permintaan saat kondisi pemicu terpenuhi. Pemicu yang tersedia adalah ambang batas atas penggunaan CPU, Konsumsi memori, dan Permintaan (pemicu perjanjian tingkat layanan). Pemicu permintaan memantau Rentang yang dihasilkan oleh OpenTelemetry dan memungkinkan pengguna untuk mengonfigurasi persyaratan perjanjian tingkat layanan (SLA) selama rentang tersebut.
Ketika ambang batas tercapai, profil dari jenis dan durasi yang dikonfigurasi dikumpulkan dan diunggah. Profil ini kemudian terlihat dalam panel performa UI Portal Application Insights terkait.
Peringatan
Profiler JFR secara default menjalankan profil "profile-without-env-data". File JFR adalah serangkaian peristiwa yang dipancarkan oleh JVM. Konfigurasi "profile-without-env-data", serupa dengan konfigurasi "profil" yang dikirimkan bersama JVM, namun membuat beberapa peristiwa menjadi nonaktif yang berpotensi berisi informasi penyebaran sensitif seperti variabel lingkungan, argumen yang diberikan ke JVM dan proses yang berjalan pada sistem.
Bendera yang tidak lagi tersedia adalah:
- jdk.JVMInformation
- jdk.InitialSystemProperty
- jdk.OSInformation
- jdk.InitialEnvironmentVariable
- jdk.SystemProcess
Namun, Anda harus meninjau semua bendera yang diaktifkan untuk memastikan bahwa profil tidak berisi data sensitif.
Lihat Mengonfigurasi Konten Profil tentang pengaturan konfigurasi profiler kustom.
Prasyarat
- JVM dengan kemampuan Java Flight Recorder (JFR)
- Pembaruan Java 8 262+
- Java 11+
Peringatan
OpenJ9 JVM tidak didukung
Penggunaan
Pemicu
Untuk deskripsi lebih terperinci tentang berbagai pemicu yang tersedia, lihat gambaran umum profiler.
Agen Java ApplicationInsights memantau durasi CPU, memori, dan permintaan seperti transaksi bisnis. Jika melanggar ambang batas yang dikonfigurasi, profil akan dipicu.
Profil Sekarang
Tombol Profil sekarang terletak di antarmuka pengguna profiler (lihat pengaturan profiler). Memilih tombol ini segera meminta profil di semua agen yang dilampirkan ke instans Application Insights. Durasi pembuatan profil default adalah dua menit. Anda dapat mengubahnya dengan mengambil alih periodicRecordingDurationSeconds
(lihat File konfigurasi).
Peringatan
Memanggil Profil sekarang akan mengaktifkan fitur profiler, dan Application Insights akan menerapkan pemicu CPU dan memori SLA default. Ketika aplikasi Anda melanggar SLA tersebut, Application Insights akan mengumpulkan profil Java. Jika Anda ingin menonaktifkan pembuatan profil nanti, Anda dapat melakukannya dalam menu pemicu yang ditampilkan di Penginstalan.
CPU
Ambang CPU adalah persentase penggunaan semua inti yang tersedia pada sistem.
Sebagai contoh, jika satu inti dari delapan mesin inti bersifat jenuh, persentase CPU akan dianggap 12,5%.
Memori
Persentase memori adalah okupansi wilayah memori Bertenor (OldGen) saat ini dibandingkan dengan ukuran wilayah maksimum yang memungkinkan.
Hunian dievaluasi setelah pengumpulan yang disewa dilakukan. Ukuran maksimum wilayah yang disewa adalah ukurannya jika timbunan Java Virtual Machine (JVM) tumbuh hingga ukuran maksimumnya.
Misalnya, ambil skenario berikut:
- Timbunan Java bisa tumbuh maksimal 1.024 mb.
- Generasi Bertenor bisa tumbuh hingga 90% tumpukan.
- Ukuran maksimum yang mungkin dari tenured adalah 922 mb.
- Ambang batas Anda ditetapkan melalui antarmuka pengguna ke 75%, oleh karena itu ambang batas Anda akan menjadi 75% dari 922 mb, 691 mb.
Dalam skenario ini, profil terjadi dalam keadaan berikut:
- Pengumpulan sampah penuh dijalankan
- Okupansi wilayah bertenor di atas 691 mb setelah pengumpulan
Minta
Pemicu SLA didasarkan pada OpenTelemetry, dan mereka memulai profil jika kriteria tertentu terpenuhi.
Setiap konfigurasi pemicu individu dibentuk sebagai berikut:
Name
- Pengidentifikasi unik untuk pemicu.Filter
- Memfilter permintaan yang menarik untuk pemicu.Aggregation
- Menghitung rasio permintaan yang melanggar ambang batas tertentu.Threshold
- Nilai minimum (dalam milidetik) di mana pelanggaran permintaan ditentukan untuk terjadi.Minimum samples
- Jumlah minimum sampel yang harus dikumpulkan agar agregasi menghasilkan data, pengaturan ini untuk mencegah pemicu dari ukuran sampel kecil.Window
- Jendela waktu bergulir (dalam milidetik).
Threshold
- Nilai ambang batas (persentase) diterapkan ke output agregasi. Jika nilai ini terlampaui, profil dimulai.
Misalnya, skenario berikut akan memicu profil jika: lebih dari 75% permintaan ke titik akhir tertentu (/users/.*) membutuhkan waktu lebih dari 30 md dalam jendela 60 detik, ketika setidaknya 100 sampel dikumpulkan.
Penginstalan
Langkah-langkah berikut memandu Anda mengaktifkan komponen pembuatan profil pada agen dan mengonfigurasi batas sumber daya yang memicu profil jika dilanggar.
Konfigurasikan ambang sumber daya yang menyebabkan profil dikumpulkan:
Peringatan
Profiler Java tidak mendukung pemicu "Pengambilan Sampel". Tindakan mengonfigurasi ini tidak akan berpengaruh.
Setelah langkah-langkah ini selesai, agen akan memantau penggunaan sumber daya proses Anda dan memicu profil ketika ambang batas terlampaui. Saat profil dipicu dan diselesaikan, profil dapat dilihat dari instans Application Insights dalam bagian Performa -> Profiler. Dari layar tersebut profil dapat diunduh, setelah mengunduh file rekaman JFR dapat dibuka dan dianalisis dalam alat yang Anda pilih, misalnya Oracle JDK Mission Control (JMC).
Konfigurasi
Konfigurasi pengaturan pemicu profiler, seperti ambang batas dan periode pembuatan profil, diatur dalam UI ApplicationInsights di bawah UI Performa, Profiler, dan Pemicu seperti yang dijelaskan dalam Penginstalan.
Selain itu, banyak parameter dapat dikonfigurasi menggunakan variabel lingkungan dan file konfigurasi applicationinsights.json
.
Mengonfigurasi Konten Profil
Jika Anda ingin menyediakan konfigurasi profil kustom, ubah memoryTriggeredSettings
, dan cpuTriggeredSettings
untuk menyediakan jalur ke file .jfc
dengan konfigurasi yang diperlukan.
Profil dapat dihasilkan/diedit di antarmuka pengguna JDK Mission Control (JMC) di bawah menu Window->Flight Recording Template Manager
dan kontrol atas bendera individual ditemukan di dalam Edit->Advanced
pada antarmuka pengguna ini.
Variabel lingkungan
APPLICATIONINSIGHTS_PREVIEW_PROFILER_ENABLED
: boolean (default:true
) Mengaktifkan/menonaktifkan fitur pembuatan profil. Secara default, fitur diaktifkan dalam agen (karena agen 3.4.9). Namun, meskipun fitur ini diaktifkan dalam agen, profil tidak dikumpulkan kecuali diaktifkan dalam Portal seperti yang dijelaskan dalam Penginstalan.
File konfigurasi
Konfigurasi contoh:
{
"preview": {
"profiler": {
"enabled": true,
"cpuTriggeredSettings": "profile-without-env-data",
"memoryTriggeredSettings": "profile-without-env-data",
"manualTriggeredSettings": "profile-without-env-data",
"enableRequestTriggering": true,
"periodicRecordingDurationSeconds": 60
}
}
}
memoryTriggeredSettings
Konfigurasi ini digunakan jika profil memori diminta. Nilai ini bisa jadi adalah salah satu dari:
profile-without-env-data
(nilai default). Profil dengan peristiwa sensitif tertentu dinonaktifkan, lihat Bagian peringatan untuk detailnya.profile
. Menggunakan konfigurasiprofile.jfc
yang dikirim dengan JFR.- Jalur ke file konfigurasi jfc kustom pada sistem file, misalnya,
/tmp/myconfig.jfc
.
cpuTriggeredSettings
Konfigurasi ini digunakan jika profil cpu diminta.
Nilai ini bisa jadi adalah salah satu dari:
profile-without-env-data
(nilai default). Profil dengan peristiwa sensitif tertentu dinonaktifkan, lihat Bagian peringatan untuk detailnya.profile
. Menggunakan konfigurasi jfcprofile.jfc
yang dikirim dengan JFR.- Jalur ke file konfigurasi jfc kustom pada sistem file, misalnya,
/tmp/myconfig.jfc
.
manualTriggeredSettings
Konfigurasi ini digunakan jika profil manual diminta.
Nilai ini bisa jadi adalah salah satu dari:
profile-without-env-data
(nilai default). Profil dengan peristiwa sensitif tertentu dinonaktifkan, lihat Bagian peringatan untuk detailnya.profile
. Menggunakan konfigurasi jfcprofile.jfc
yang dikirim dengan JFR.- Jalur ke file konfigurasi jfc kustom pada sistem file, misalnya,
/tmp/myconfig.jfc
.
enableRequestTriggering
Apakah pembuatan profil JFR harus dipicu berdasarkan konfigurasi permintaan.
Nilai ini bisa jadi adalah salah satu dari:
true
Pembuatan profil dipicu jika ambang pemicu permintaan dilanggar.false
(nilai default). Konfigurasi permintaan tidak memicu pembuatan profil.
periodicRecordingDurationSeconds
Durasi perekaman pembuatan profil dalam hitung detik saat sesi pembuatan profil dimulai dengan menggunakan tombol Profil sekarang . Nilai defaultnya adalah 120
.
Tanya jawab umum
Apa itu Java Profiling untuk Application Insights pada Azure Monitor?
Profiler Java untuk Application Insights pada Azure Monitor menggunakan Java Flight Recorder (JFR) untuk membuat profil aplikasi Anda menggunakan konfigurasi yang disesuaikan.
Apa itu Java Flight Recorder?
Java Flight Recorder (JFR) adalah alat untuk mengumpulkan data pembuatan profil aplikasi Java yang sedang berjalan. JFR diintegrasikan ke dalam Java Virtual Machine (JVM) dan digunakan untuk memecahkan masalah performa. Pelajari selengkapnya tentang Java SE JFR Runtime.
Apa implikasi harga dan/atau biaya lisensi untuk mengaktifkan Java Profiling pada App Insights?
Java Profiling adalah fitur gratis dengan Application Insights. Harga Application Insights pada Azure Monitor didasarkan pada biaya penyerapan.
Informasi Java Profiling mana yang dikumpulkan?
Data pembuatan profil yang dikumpulkan oleh JFR meliputi: data pembuatan profil metode dan eksekusi, data pengumpulan sampah, dan profil kunci.
Bagaimana cara menggunakan Java Profiling pada App Insights dan memvisualisasikan data?
Perekaman JFR dapat dilihat dan dianalisis dengan alat pilihan Anda, misalnya Java Mission Control (JMC).
Apakah diagnosis performa dan rekomendasi perbaikan diberikan pada Java Profiling pada App Insights?
'Diagnostik dan rekomendasi performa' adalah fitur baru yang segera tersedia setelah Diagnostik Java Application Insights. Anda dapat mendaftar untuk melihat pratinjau fitur ini. Rekaman JFR dapat dilihat pada Java Mission Control (JMC).
Apa perbedaan antara Java Profiling sesuai permintaan dan otomatis di App Insights?
Sesuai permintaan adalah profil yang dipicu pengguna secara real-time sedangkan profil otomatis berada pada pemicu yang telah dikonfigurasi sebelumnya.
Gunakan Profil Sekarang untuk opsi pembuatan profil sesuai permintaan. Profil Sekarang segera memprofilkan semua agen yang dilampirkan ke instans Application Insights.
Pembuatan profil otomatis dipicu pelanggaran dalam ambang batas sumber daya.
Pemicu Java Profiling mana yang dapat saya konfigurasi?
Java Agent pada Application Insights saat ini mendukung pemantauan konsumsi CPU dan memori. Ambang CPU dikonfigurasi sebagai persentase dari semua inti yang tersedia pada komputer. Memori adalah okupansi wilayah memori Bertenor (OldGen) saat ini dibandingkan dengan ukuran wilayah maksimum yang memungkinkan.
Apa saja prasyarat yang diperlukan untuk mengaktifkan Java Profiling?
Tinjau Prasyarat di bagian atas artikel ini.
Dapatkah saya menggunakan Java Profiling untuk aplikasi layanan mikro?
Ya, Anda dapat membuat profil JVM yang menjalankan layanan mikro menggunakan JFR.