Continuous Profiler Agent adalah agen Java Alibaba Cloud yang dikembangkan oleh tim JVM Alibaba Cloud untuk mengumpulkan data kinerja. Continuous Profiler Agent telah diuji dalam lingkungan produksi berskala besar dan menawarkan kinerja serta stabilitas tinggi. Anda dapat menggunakan Logtail untuk mengumpulkan data kinerja yang dilaporkan oleh Continuous Profiler Agent dari program Java ke aplikasi Full-stack Observability untuk pemantauan dan analisis visual.
Prasyarat
Sebuah instance Full-stack Observability telah dibuat. Untuk informasi lebih lanjut, lihat Buat Instance.
Batasan
Hanya mendukung Linux Logtail V1.7 atau yang lebih baru.
Distribusi Linux berikut didukung: CentOS, Red Hat, Alibaba Cloud Linux, Ubuntu, dan Debian. Versi kernel harus 2.6.32-431.23.3.el6.x86_64 atau yang lebih baru. GNU C Library dan MUSL Library didukung.
Versi JDK didukung. Tabel berikut menjelaskan detailnya.
Jenis mesin
CPU
Memori
Mesin AUTO
OpenJDK 8u272 dan yang lebih baru, JDK 11, dan JDK 17 didukung.
OracleJDK 11 dan OracleJDK 17 didukung.
OracleJDK 8 tidak didukung.
OpenJDK 8u352 dan yang lebih baru, OpenJDK 11.0.17 dan yang lebih baru, dan OpenJDK 17.0.5 dan yang lebih baru didukung.
OracleJDK 8 tidak didukung.
OracleJDK 11.0.21 dan yang lebih baru, dan OracleJDK 17.0.9 dan yang lebih baru didukung.
Mesin async_profiler
OpenJDK 8, OpenJDK 11, OpenJDK 17, OracleJDK 8, OracleJDK 11, dan OracleJDK 17 didukung.
OpenJDK 8, OpenJDK 11, OpenJDK 17, OracleJDK 8, OracleJDK 11, dan OracleJDK 17 didukung.
Deskripsi konsumsi sumber daya
Dalam sebagian besar skenario, overhead kinerja untuk program Java kurang dari 5%.
Langkah 1: Buat konfigurasi Logtail
Masuk ke konsol Layanan Log Sederhana.
Di bagian Log Application, klik tab Intelligent O&M. Kemudian, klik Full-stack Observability.
Di halaman Simple Log Service Full-stack Observability, klik instance yang ingin Anda kelola.
Di panel navigasi di sebelah kiri, klik Performance Monitoring.
Jika ini pertama kalinya Anda menggunakan Pemantauan Kinerja di instance, klik Enable.
Di pohon navigasi di sebelah kiri, klik Data Import. Di halaman Data Access Configurations, temukan Common Push Import di bagian Pemantauan Kinerja.
Pertama kali Anda membuat konfigurasi Logtail untuk jenis data kinerja ini, nyalakan sakelar untuk pergi ke halaman konfigurasi. Jika Anda telah membuat konfigurasi Logtail, klik ikon
untuk pergi ke halaman konfigurasi.Buat grup mesin.
Jika grup mesin tersedia, klik Use Existing Machine Groups.
Jika tidak ada grup mesin yang tersedia, lakukan langkah-langkah berikut:
Periksa jenis server Anda.
Jika Anda menggunakan instance Elastic Compute Service (ECS) yang termasuk dalam akun Alibaba Cloud yang sama dengan Simple Log Service, klik tab ECS Instances, pilih Manually Select Instances dan instance ECS Anda, lalu klik Create.
Untuk informasi lebih lanjut, lihat Instal Logtail pada Instance ECS.
Jika server Anda adalah instance ECS yang termasuk dalam akun Alibaba Cloud lain, server yang disediakan oleh penyedia layanan cloud pihak ketiga, atau server yang ditempatkan di pusat data yang dikelola sendiri, Anda harus menginstal Linux Logtail V1.7 atau yang lebih baru secara manual di server tersebut. Untuk informasi lebih lanjut, lihat Instal Logtail pada Server Linux.
PentingSetelah Anda menginstal Logtail secara manual, Anda harus mengonfigurasi pengenal pengguna untuk server tersebut. Untuk informasi lebih lanjut, lihat Konfigurasikan Pengenal Pengguna.
Jika Anda menggunakan kluster Kubernetes, instal komponen Logtail dengan mengikuti instruksi di Kumpulkan Data Pemantauan tentang Sumber Daya Kubernetes.
Setelah Logtail terinstal, klik Complete Installation.
Di langkah Create Machine Group, konfigurasikan parameter Name dan klik Next.
Simple Log Service memungkinkan Anda membuat grup mesin berbasis alamat IP dan grup mesin berbasis pengenal kustom. Untuk informasi lebih lanjut, lihat Buat Grup Mesin Berbasis Alamat IP dan Buat Grup Mesin Berbasis Pengenal Kustom.
PentingJika Anda menginstal Logtail di kluster Kubernetes, grup mesin bernama dalam format {instanceId}-{clusterId}-k8s-cluster akan otomatis dibuat. Anda dapat melewati langkah ini.
Di langkah Machine Group Settings, pindahkan server Anda dari bagian Source Server Groups ke bagian Applied Server Groups dan klik Next.
PentingJika Anda mengaktifkan grup mesin segera setelah Anda membuat grup mesin, status detak jantung grup mesin mungkin FAIL. Masalah ini terjadi karena grup mesin belum terhubung ke Simple Log Service. Untuk menyelesaikan masalah ini, Anda dapat klik Automatic Retry. Jika masalah tetap ada, lihat Apa yang harus saya lakukan jika grup mesin Logtail tidak memiliki detak jantung?
Di langkah Specify Data Source, konfigurasikan parameter dan klik Complete. Tabel berikut menjelaskan parameter.
Parameter
Deskripsi
Config Name
Nama konfigurasi Logtail. Anda bisa memasukkan nama kustom.
Cluster
Nama cluster. Anda bisa memasukkan nama kustom.
Setelah Anda mengonfigurasi parameter ini, Simple Log Service menambahkan tag
cluster=<Nama Cluster>ke data kinerja yang dikumpulkan menggunakan konfigurasi Logtail.PentingPastikan bahwa nama cluster unik. Jika tidak, konflik data mungkin terjadi.
Address
Alamat untuk pengumpulan data. Nilai default adalah
http://:4040, di mana 4040 adalah port default Pyroscope. Jika Anda mempertahankan nilai default, server HTTP menggunakan alamat lokal.Jika Anda menggunakan instance ECS, tentukan nilai dalam format berikut:
Alamat IP instance ECS:4040.Jika Anda menggunakan server yang berada di kluster Kubernetes, atur nilainya menjadi
logtail-kubernetes-metrics.sls-monitoring:4040.Jika Anda menggunakan server dari penyedia layanan cloud pihak ketiga atau pusat data, tentukan nilai dalam format berikut:
Alamat IP server:4040.
Endpoint
Titik akhir default Pyroscope. Nilai default:
/ingest.Read Timeout Period
Periode timeout untuk operasi baca data. Nilai default: 10. Satuan: detik.
Maximum Body Size
Ukuran maksimum data yang dapat dikumpulkan.
Setelah Anda mengonfigurasi pengaturan, Simple Log Service secara otomatis membuat aset seperti Metricstores. Untuk informasi lebih lanjut, lihat Aset.
Langkah 2: Unduh agen Java
Wilayah di China
wget https://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/jvm/continuous-profile-collector-agent-1.9.0.jarWilayah di Luar China
wget https://logtail-release-ap-southeast-1.oss-ap-southeast-1.aliyuncs.com/jvm/continuous-profile-collector-agent-1.9.0.jar
Langkah 3: Konfigurasikan program Java untuk mendorong data kinerja
Konfigurasikan Program Java Menggunakan Parameter JVM
java \
-Dprofiling.app.name=your_service_name \
-Dprofiling.agent.upload.server="http://{host}:{port}" \
-Dprofiling.cpu.engine={engine} \
-javaagent:{path for javaagent} \
-jar demo.jarParameter | Deskripsi |
profiling.app.name | Nama layanan. |
profiling.agent.upload.server | Alamat untuk unggah data.
|
profiling.cpu.engine | Mesin yang digunakan untuk pemantauan hotspot CPU. Nilai default: off. Nilai valid: auto, async_profiler, jfr, dan off. Nilai off menunjukkan bahwa pemantauan hotspot CPU dinonaktifkan. Nilai lain menunjukkan bahwa pemantauan hotspot CPU diaktifkan. Kami merekomendasikan Anda mengatur nilai ke auto. |
Konfigurasikan Program Java Menggunakan Variabel Lingkungan
export PROFILING_APP_NAME="your_service_name"
export PROFILING_AGENT_UPLOAD_SERVER="http://{host}:{port}"
export PROFILING_CPU_ENGINE="{engine}"
export PROFILING_ALLOC_ENGINE="{engine}"
Parameter | Deskripsi |
PROFILING_APP_NAME | Nama layanan. |
PROFILING_AGENT_UPLOAD_SERVER | Alamat untuk unggah data.
|
PROFILING_CPU_ENGINE | Mesin yang digunakan untuk pemantauan hotspot CPU. Nilai default: off. Nilai valid: auto, async_profiler, jfr, dan off. Nilai off menunjukkan bahwa pemantauan hotspot CPU dinonaktifkan. Nilai lain menunjukkan bahwa pemantauan hotspot CPU diaktifkan. Kami merekomendasikan Anda mengatur nilai ke auto. |
Jangan mulai alamat dengan http. Sistem secara otomatis menambahkan awalan http ke alamat.
Jangan akhiri alamat dengan garis miring (/). Sistem secara otomatis menambahkan garis miring (/) ke alamat.
none: File tidak dikompresi dan memiliki akhiran .jfr.
gzip: File dikompresi dan memiliki akhiran .jfr.gzip.
Kosong: ""
Thread tunggal: 123
Beberapa thread: 122,123
Catatan
Parameter JVM | Variabel lingkungan | Deskripsi |
profiling.app.name | PROFILING_APP_NAME | Nama aplikasi. |
profiling.agent.upload.server | PROFILING_AGENT_UPLOAD_SERVER | Alamat server tempat file Java Flight Recorder (JFR) diunggah. Nilai default: http://localhost:4040. |
profiling.agent.timeout | PROFILING_AGENT_TIMEOUT | Periode timeout untuk mengunggah file JFR. Nilai default: 10. Satuan: detik. |
profiling.agent.ingest.max.tries | PROFILING_AGENT_INGEST_MAX_TRIES | Jumlah maksimum percobaan ulang yang diizinkan untuk mengunggah file JFR. Nilai default: 2. |
profiling.app.http.headers | PROFILING_APP_HTTP_HEADERS | Header HTTP yang digunakan saat Anda mengunggah file JFR. Parameter ini kosong secara default. Contoh: SESSION_ID=1111;XXX=YYY. |
profiling.app.labels | PROFILING_APP_LABELS | Tag yang ditambahkan ke file JFR saat Anda mengunggah file JFR. Parameter ini kosong secara default. Contoh: |
profiling.agent.log.level | PROFILING_AGENT_LOG_LEVEL | Tingkat log. Nilai default: info. Nilai valid: info, debug, dan error. |
profiling.agent.log.file | PROFILING_AGENT_LOG_FILE | Path ke file log. Anda dapat mengatur nilainya ke /path/to/profiling.log. Secara default, path ditulis ke Java stdout dan stderr. |
profiling.period | PROFILING_PERIOD | Interval pengunggahan data kinerja. Nilai default: 1. Satuan: menit. |
profiling.delay | PROFILING_DELAY | Latensi pemantauan kinerja. Nilai default: 0, yang menunjukkan bahwa pemantauan kinerja dimulai segera setelah mesin pemantauan kinerja diaktifkan. Jika Anda mengatur nilainya ke N, pemantauan kinerja dimulai N detik setelah mesin pemantauan kinerja diaktifkan. |
profiling.start.at.zero.second | PROFILING_START_AT_ZERO_SECOND | Menentukan apakah akan memulai pemantauan kinerja pada detik ke-0 setiap menit. Jika Anda ingin memulai pemantauan kinerja pada detik ke-0 setiap menit, atur nilainya menjadi true. Misalnya, jika nilainya diatur menjadi true dan waktu saat ini adalah detik ke-30 dari menit saat ini, sistem secara otomatis menunggu 30 detik sebelum memulai pemantauan kinerja. Nilai default: false. |
profiling.compression.mode | PROFILING_COMPRESSION_MODE | Mode kompresi. Nilai default: none. Nilai valid: gzip dan none. |
profiling.trigger.mode | PROFILING_TRIGGER_MODE | Mode pemicu. Anda dapat memicu pemantauan kinerja secara berkala atau satu kali. Nilai default: periodic. Nilai valid: periodic dan api. Kami merekomendasikan Anda mengatur nilai ke periodic dalam mode agen. |
profiling.output.format | PROFILING_OUTPUT_FORMAT | Format file. Nilai default: jfr. Nilai valid: jfr dan collapsed. |
profiling.cpu.engine | PROFILING_CPU_ENGINE | Mesin yang digunakan untuk pemantauan hotspot CPU. Nilai default: off. Nilai valid: auto, async_profiler, jfr, dan off. Nilai off menunjukkan bahwa pemantauan hotspot CPU dinonaktifkan. Nilai lain menunjukkan bahwa pemantauan hotspot CPU diaktifkan. Kami merekomendasikan Anda mengatur nilai ke auto. |
profiling.cpu.interval | PROFILING_CPU_INTERVAL | Interval pemantauan hotspot CPU. Nilai kecil meningkatkan overhead. Nilai default: 10. Satuan: milidetik. |
profiling.wallclock.engine | PROFILING_WALLCLOCK_ENGINE | Mesin yang digunakan untuk pemantauan hotspot jam dinding. Nilai default: off. Nilai valid: auto, async_profiler, dan off. Nilai off menunjukkan bahwa pemantauan hotspot jam dinding dinonaktifkan. Nilai lain menunjukkan bahwa pemantauan hotspot jam dinding diaktifkan. Kami merekomendasikan Anda mengatur nilai ke off. |
profiling.wallclock.interval | PROFILING_WALLCLOCK_INTERVAL | Interval pemantauan hotspot jam dinding. Nilai kecil meningkatkan overhead. Nilai default: 20. Satuan: milidetik. |
profiling.wallclock.thread.filter | PROFILING_WALLCLOCK_THREAD_FILTER | Filter thread yang digunakan untuk pemantauan hotspot jam dinding. Nilai default: 0, yang menunjukkan bahwa tidak ada thread yang terlibat. Daftar berikut memberikan contoh cara menentukan nilai: Rentang thread: 122 hingga 134 |
profiling.wallclock.threads.per.tick | PROFILING_WALLCLOCK_THREADS_PER_TICK | Jumlah maksimum thread yang digunakan untuk memantau hotspot jam dinding. Nilai default: 8. |
profiling.alloc.engine | PROFILING_ALLOC_ENGINE | Mesin yang digunakan untuk pemantauan hotspot Alloc. Nilai default: off. Nilai valid: auto, async_profiler, jfr, dan off. Pemantauan hotspot Alloc merujuk pada pemantauan hotspot permintaan memori. Nilai off menunjukkan bahwa pemantauan hotspot Alloc dinonaktifkan. Nilai lain menunjukkan bahwa pemantauan hotspot Alloc diaktifkan. Kami merekomendasikan Anda mengatur nilai ke auto. |
profiling.alloc.interval | PROFILING_ALLOC_INTERVAL | Interval pemantauan hotspot Alloc. Nilai kecil meningkatkan overhead. Nilai default: 256. Satuan: kilo byte. |
profiling.jfr.max.size | PROFILING_JFR_MAX_SIZE | Batas atas ukuran file JFR. Jika ukuran mencapai batas atas, data dalam file secara otomatis dibuang. Nilai default: 64m. Contoh nilai: 256k dan 10m. |
profiling.jfr.max.age | PROFILING_JFR_MAX_AGE | Batas atas usia file JFR. Jika usia mencapai batas atas, data dalam file secara otomatis dibuang. Nilai default: 10m. Contoh nilai: 1m, 1h, dan 1d. |
profiling.jfr.max.stack.depth | PROFILING_JFR_MAX_STACK_DEPTH | Kedalaman tumpukan maksimum yang diizinkan selama sampling JFR. Nilai default: 64. |
Apa yang harus dilakukan selanjutnya
Setelah Anda mengumpulkan data kinerja dari program Java ke Full-stack Observability, Anda dapat menggunakan fitur pemantauan kinerja untuk mendiagnosis masalah kinerja. Untuk informasi lebih lanjut, lihat Kueri Data dan Perbandingan Data.