Bagikan melalui


Azure Monitor Application Insights Profiler untuk Java

Catatan

Fitur Java Profiler sedang dalam pratinjau, mulai dari 3.4.0.

Java Profiler 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

Java Profiler menggunakan profiler JFR yang disediakan oleh JVM untuk merekam data pembuatan profil, memungkinkan pengguna 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 rinci tentang berbagai pemicu yang tersedia, lihat Aplikasi produksi profil di Azure dengan Application Insights Profiler untuk .NET.

Agen Java ApplicationInsights memantau durasi CPU, memori, dan permintaan seperti transaksi bisnis. Jika melanggar ambang batas yang dikonfigurasi, sebuah profil akan diaktifkan.

Profil Sekarang

Tombol Profil sekarang terletak di antarmuka pengguna profiler (lihat Mengonfigurasi Application Insights Profiler untuk .NET). Memilih tombol ini langsung meminta profil di semua agen yang terhubung ke instans Application Insights. Durasi pembuatan profil default adalah dua menit. Anda dapat mengubahnya dengan mengambil alih periodicRecordingDurationSeconds (lihat File konfigurasi).

Peringatan

Menjalankan 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 (unit pemrosesan pusat)

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 Rentang Panjang (OldGen) saat ini terhadap ukuran maksimum yang mungkin dari wilayah tersebut.

Hunian dievaluasi setelah pengumpulan yang sudah mapan dilakukan. Ukuran maksimum wilayah yang disewa adalah ukurannya jika timbunan Java Virtual Machine (JVM) tumbuh hingga ukuran maksimumnya.

Misalnya, ambil skenario berikut:

  • Heap Java dapat membesar hingga maksimal 1.024 MB.
  • Generasi Berpengalaman bisa tumbuh hingga 90% dari 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 berlaku dalam keadaan berikut:

  • Pengumpulan sampah penuh dijalankan
  • Okupansi wilayah yang telah ditetapkan lebih dari 691 mb setelah pengumpulan data

Permintaan

Pemicu SLA didasarkan pada OpenTelemetry, dan mengaktifkan profil ketika kriteria tertentu terpenuhi.

Setiap konfigurasi pemicu individu dibentuk sebagai berikut:

  • Name - Pengidentifikasi unik untuk pemicu.
  • Filter - Memfilter permintaan yang relevan 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 bertujuan untuk menghindari masalah dengan ukuran sampel kecil.
    • Window - Jendela waktu bergulir (dalam milidetik).
  • Threshold - Nilai ambang batas (persentase) diterapkan ke output agregasi. Jika nilai ini terlampaui, profil akan 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.

Cuplikan layar sampel pemicu permintaan

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:

  1. Telusuri ke bagian Performance ->Profiler dari instans Application Insights.

    Cuplikan layar tautan untuk membuka panel performa. Cuplikan layar tombol Profiler dari panel Performa.

Peringatan

Tombol Jejak Profiler di kanan bawah tidak didukung untuk Java.

  1. Pilih Pemicu

  2. Konfigurasikan pemicu CPU, Memori, atau Permintaan yang diperlukan (jika diaktifkan) dan pilih Terapkan.

    Cuplikan layar pengaturan pemicu.

Peringatan

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

Cuplikan layar fitur dan pengaturan halaman Profiler.

Konfigurasi

Konfigurasi pengaturan pemicu Java Profiler, seperti ambang batas dan periode pembuatan profil, diatur dalam UI Application Insights di bawah Performa>Profiler>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 (bawaan: true)

    Mengaktifkan/menonaktifkan fitur pembuatan profil. Secara bawaan, fitur diaktifkan pada agen (sejak 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 disertakan 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 disertakan 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 disertakan 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.

Langkah selanjutnya

  • Untuk meninjau tanya jawab umum (FAQ), lihat Tanya Jawab Umum Java Profiler