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.

Screenshot of request trigger sample

Penginstalan

Langkah-langkah berikut memandu Anda mengaktifkan komponen pembuatan profil pada agen dan mengonfigurasi batas sumber daya yang memicu profil jika dilanggar.

  1. Konfigurasikan ambang sumber daya yang menyebabkan profil dikumpulkan:

    1. Telusuri ke bagian Performa -> Profiler dari instans Application Insights. Screenshot of the link to open performance pane.Screenshot of the Profiler button from the Performance pane.

    2. Pilih “Pemicu"

    3. Konfigurasikan pemicu CPU, Memori, atau Permintaan yang diperlukan (jika diaktifkan) dan pilih Terapkan. Screenshot of trigger settings

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).

Screenshot of profiler page features and settings.

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 konfigurasi profile.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 jfc profile.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 jfc profile.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.