All Products
Search
Document Center

Application Real-Time Monitoring Service:Pemantauan instans untuk aplikasi Java

Last Updated:Aug 21, 2026

Saat aplikasi Java Anda berjalan di beberapa instans, menentukan instans mana yang menyebabkan penurunan performa atau tekanan memori memerlukan visibilitas tingkat instans. Setelah Anda menginstal Agen ARMS, ARMS secara otomatis mengumpulkan metrik infrastruktur, pengumpulan sampah (GC), dan memori JVM per instans. Gunakan halaman Instance Monitoring untuk membandingkan kesehatan instans, mengidentifikasi bottleneck, dan mendiagnosis masalah memori tanpa perlu beralih antar alat.

Prasyarat

Agen ARMS telah diinstal untuk aplikasi tersebut.

Penting

Pemantauan Aplikasi menyediakan halaman detail aplikasi baru bagi pengguna yang telah mengaktifkan mode penagihan baru. Jika Anda belum mengaktifkan mode tersebut, klik Switch to New Version pada halaman Application List untuk mengakses halaman detail aplikasi baru.

Buka halaman Instance Monitoring

  1. Masuk ke Konsol ARMS. Di panel navigasi kiri, pilih Application Monitoring > Application List.

  2. Pilih wilayah di bagian atas halaman, lalu klik nama aplikasi.

  3. Di bilah navigasi atas, klik Instance Monitoring.

Catatan

Ikon pada kolom Language menunjukkan metode integrasi:

  • Java图标 Aplikasi Java yang terintegrasi dengan Pemantauan Aplikasi

  • image Aplikasi Golang yang terintegrasi dengan Pemantauan Aplikasi

  • image Aplikasi Python yang terintegrasi dengan Pemantauan Aplikasi

  • - Aplikasi yang terintegrasi dengan Managed Service for OpenTelemetry

Tata letak Dasbor

Dasbor Instance Monitoring menyesuaikan diri dengan lingkungan penerapan Anda (ECS atau Kontainer) dan mengelompokkan informasi ke dalam tiga area:

AreaDeskripsi
Filter cepat (1)Filter grafik dan daftar instans berdasarkan alamat host (dan berdasarkan kluster di lingkungan kontainer dengan Managed Service for Prometheus).
Grafik tren (2)Lihat grafik deret waktu untuk metrik infrastruktur, GC, dan memori JVM.
Daftar instans (3)Lihat metrik per instans serta akses detail instans atau jejak.

Metrik berdasarkan lingkungan

Metrik yang tersedia berbeda tergantung pada apakah aplikasi Anda berjalan di ECS atau di kontainer, serta apakah lingkungan kontainer terintegrasi dengan Managed Service for Prometheus.

Metrik grafik tren

Kategori metrikECSKontainer (Prometheus)Kontainer (ARMS self-collection)
Penggunaan CPUYaYaYa
Penggunaan memoriYaYaYa
Penggunaan diskYaTidakTidak
Full GC dan Young GCYaYaYa
Memori heap dan non-heapYaYaYa

Untuk lingkungan ECS, gunakan daftar drop-down di samping judul setiap grafik infrastruktur untuk beralih antara nilai rata-rata dan maksimum.

Untuk grafik GC, beralihlah antara jumlah GC dan durasi rata-rata GC. Untuk grafik memori JVM, beralihlah antara tampilan memori heap dan non-heap.

Kolom daftar instans

KolomECSKontainer (Prometheus)Kontainer (ARMS self-collection)
IP InstansYaYaYa
Utilisasi CPUYaYa (+ request, limit)Ya (hanya untuk penggunaan)
Utilisasi memoriYaYa (+ request, limit)Ya (hanya usage)
Utilisasi diskYaYa (+ limit)Tidak
LoadYaYaYa
Jumlah Full GCYaYaYa
Jumlah Young GCYaYaYa
Penggunaan memori heapYaYaYa
Penggunaan memori non-heapYaYaYa
Metrik RED (permintaan, error, waktu respons rata-rata)YaYaYa

Di lingkungan Kontainer (Prometheus), utilisasi CPU, memori, dan disk menampilkan - ketika tidak ada limit yang ditetapkan untuk resource tersebut.

Persyaratan lingkungan kontainer

  • Dengan Managed Service for Prometheus: Metrik kontainer berasal dari Managed Service for Prometheus. Untuk menyiapkan integrasi, lihat Container Observability.

  • Tanpa Managed Service for Prometheus: Tingkatkan probe Pemantauan Aplikasi ke versi 4.1.0 atau lebih baru. Versi probe sebelumnya tidak melaporkan metrik dasar kontainer. Untuk detail versi probe, lihat Panduan versi Probe (Java Agent).

Interaksi grafik

Setiap grafik tren mendukung dua aksi:

  • Klik statistics untuk melihat statistik metrik dalam rentang waktu tertentu atau membandingkan rentang waktu yang sama di tanggal berbeda.

  • Klik toggle untuk beralih antara grafik kolom dan grafik tren.

Aksi daftar instans

  • Klik IP instans (atau Details di kolom Actions untuk lingkungan kontainer) untuk membuka detail instans.

  • Klik Trace di kolom Actions untuk melihat detail jejak. Untuk informasi lebih lanjut, lihat Analisis jejak.

Catatan

ARMS mengumpulkan metrik JVM melalui JMX. Wilayah memori non-heap yang dilaporkan oleh ARMS lebih sedikit dibandingkan yang ada di proses Java sesungguhnya. Akibatnya, jumlah total memori heap dan non-heap di ARMS mungkin berbeda dari nilai RES yang ditampilkan oleh perintah top. Untuk detailnya, lihat Detail memori pemantauan JVM.

Detail instans

Klik IP instans untuk membuka halaman detail, yang berisi tab-tab berikut.

Ikhtisar

Tab Overview menampilkan jumlah permintaan, jumlah error, waktu respons rata-rata, dan informasi panggilan lambat untuk antarmuka yang dipilih.

Host List di sisi kiri memungkinkan Anda beralih antar host untuk melihat data pemantauan. Kartu ringkasan menunjukkan perubahan persentase hari-ke-hari. Di bawah kartu, grafik tren deret waktu menampilkan Requests/1m, Errors/1m, dan Response Time/1m dengan granularitas per menit. Halaman ini juga mencakup tab JVM Monitoring, Host Monitoring, dan Trace Analysis.

Pemantauan JVM

Tab JVM Monitoring menampilkan metrik GC, memori, thread, dan deskriptor file untuk instans yang dipilih.

Bagian GC berisi grafik Full GC Count/1m, Young GC Count/1m, Full GC Trigger Reason/1m, dan Young GC Trigger Reason/1m. Bagian memori berisi grafik Memory Usage Distribution/1m, Heap Memory/1m, Heap Memory (used)/1m, dan lainnya. Panel kiri memungkinkan Anda memilih instans aplikasi tertentu untuk melihat data pemantauannya.

Pemantauan kolam thread

Pemantauan kolam thread melacak konfigurasi thread inti, status thread aktif, dan metrik eksekusi tugas. Filter kolam thread berdasarkan jenis dan nama di bagian atas tab.

Versi probe 4.1.x atau lebih baru

Framework yang didukung

Kelas frameworkPenggunaan umum
java.util.ThreadPoolExecutorTomcat 8 hingga 9.1, Dubbo, HSF, Vert.x, kolam thread kustom
org.apache.tomcat.util.threads.ThreadPoolExecutorTomcat 9.1 dan lebih baru
org.eclipse.jetty.util.thread.QueuedThreadPoolJetty
org.xnio.XnioWorkerUndertow

Metrik yang dikumpulkan

MetrikThreadPoolExecutor (JDK)ThreadPoolExecutor (Tomcat 9.1+)QueuedThreadPoolXnioWorker
arms_thread_pool_core_pool_sizeYaYaYaYa
arms_thread_pool_max_pool_sizeYaYaYaYa
arms_thread_pool_active_thread_countYaYaYaYa
arms_thread_pool_current_thread_countYaYaYa--
arms_thread_pool_max_thread_countYaYa----
arms_thread_pool_scheduled_task_countYaYa----
arms_thread_pool_completed_task_countYaYa----
arms_thread_pool_rejected_task_countYaYaYa--
arms_thread_pool_queue_sizeYaYaYaYa

Versi probe sebelum 4.1.x

Framework yang didukung: Tomcat, HSF, Dubbo, Vert.x, dan Undertow. Versi agen 3.1.x dan sebelumnya hanya mendukung Undertow 1.x hingga 2.0.x. Versi agen 3.2.x dan lebih baru mendukung semua versi Undertow.

MetrikDeskripsi
arms_threadpool_core_sizeJumlah thread inti
arms_threadpool_max_sizeJumlah maksimum thread
arms_threadpool_active_sizeJumlah thread aktif
arms_threadpool_queue_sizeUkuran antrian
arms_threadpool_current_sizeUkuran pool saat ini

Kolam thread SchedulerX hanya melaporkan arms_threadpool_active_size.

Pemantauan kolam koneksi

Pemantauan kolam koneksi melacak konfigurasi inisialisasi dan status koneksi waktu proses. Filter kolam koneksi berdasarkan jenis di bagian atas tab.

Versi probe 4.1.x atau lebih baru

Framework yang didukung: DBCP (>2.0), Vibur DBCP (>11.0), c3p0 (>0.9.2), Druid, HikariCP (>3.0), Jedis (>3.0), Lettuce (>5.0), Redisson (>3.0), tomcat-dbcp (>8.0), tomcat-jdbc (>8.0).

Metrik yang dikumpulkan

MetrikDeskripsiFramework yang didukung
arms_connection_pool_connection_countJumlah koneksi (aktif vs. idle berdasarkan status)DBCP, c3p0, Vibur DBCP, Druid, HikariCP, Jedis, Lettuce, Redisson, tomcat-dbcp, tomcat-jdbc
arms_connection_pool_connection_min_idle_countKoneksi idle minimum (konfigurasi statis)DBCP, Jedis, Druid, HikariCP, Lettuce, tomcat-dbcp, tomcat-jdbc
arms_connection_pool_connection_max_idle_countKoneksi idle maksimum (konfigurasi statis)DBCP, Jedis, Druid, Lettuce, tomcat-dbcp, tomcat-jdbc
arms_connection_pool_connection_max_countKoneksi maksimum (konfigurasi statis)DBCP, Druid, Vibur DBCP, HikariCP, tomcat-dbcp, tomcat-jdbc
arms_connection_pool_pending_request_countPermintaan koneksi yang diblokirc3p0, HikariCP, Jedis, tomcat-dbcp, tomcat-jdbc

Versi probe sebelum 4.1.x

FrameworkMetrik yang dikumpulkan
okHttp2 / okHttp3arms_threadpool_active_size, arms_threadpool_current_size
Apache HttpClientarms_threadpool_current_size, arms_threadpool_max_size, arms_threadpool_queue_size
Druidarms_threadpool_active_size, arms_threadpool_max_size
HikariCParms_threadpool_active_size, arms_threadpool_max_size

Pemantauan host

Tab Host Monitoring menampilkan metrik CPU, memori, disk, load, traffic jaringan, dan paket jaringan.

Host monitoring

Pemantauan kontainer

Tab Container Monitoring menampilkan metrik resource tingkat kontainer. Metrik yang tersedia bergantung pada metode integrasi Anda:

IntegrasiMetrikPengaturan
Managed Service for PrometheusCPU, memori, disk, load, network traffic, paket jaringanLihat Instans Prometheus untuk Container Service
ARMS self-collection (probe 4.1.0+)CPU, memori, network trafficTingkatkan probe ke versi 4.1.0 atau lebih baru. Lihat Panduan versi Probe (Java Agent)

Tab Container Monitoring menampilkan area Ikhtisar dengan metrik ringkasan Namespace, Kluster, serta CPU (core) dan Memori avg/max/last/Limit. Di bawahnya, area Resource berisi empat grafik garis berikut:

  • Memory/Limit(%)

  • Memory Usage

  • CPU Usage(%)

  • CPU Usage By Cores (dengan kurva user/system/total)

Analisis jejak

Analisis jejak melakukan kueri data jejak yang tersimpan secara real-time. Gabungkan filter dan dimensi agregasi untuk mendiagnosis masalah performa di berbagai skenario. Untuk detailnya, lihat Analisis jejak.

Di konsol Tracing, masukkan kriteria pencarian seperti serviceName: "mall-gateway" untuk melakukan kueri data jejak. Halaman ini berisi:

  • Panel filter cepat di sisi kiri: filter berdasarkan Status, Durasi (rentang slider 0 ns–5 s), Nama Antarmuka, dan Alamat Host.

  • Grafik statistik atas: histogram Jumlah Panggilan, histogram Error/Error HTTP, grafik garis Durasi Rata-Rata.

  • Tabel data Span bawah: kolom mencakup TraceId, Nama Antarmuka, Nama Aplikasi, Durasi, Status, Waktu Mulai, Alamat Host. Klik Details atau Logs untuk melihat detail jejak.

  • Panel Slow Trace Analysis di sisi kanan: menampilkan spanNames teratas berdasarkan kontribusi durasi.

Agregasi metrik tingkat aplikasi vs. tingkat instans

Saat ARMS mengagregasi metrik tingkat instans menjadi nilai tingkat aplikasi, metode yang digunakan berbeda-beda tergantung jenis metrik:

Jenis metrikMetode agregasi
RED: jumlah permintaan, jumlah panggilan lambat, jumlah kode status HTTPJumlah
RED: waktu responsRata-rata
JVM: jumlah GC, durasi GCJumlah
JVM: memori heap, jumlah threadMaksimum
Kolam thread dan kolam koneksi: semua metrikRata-rata
Metrik sistem: semua metrikMaksimum
SQL dan NoSQL: jumlah panggilanJumlah
SQL dan NoSQL: metrik lainnyaRata-rata
Exception: semua metrikJumlah

Referensi

Untuk daftar lengkap metrik Pemantauan Aplikasi, lihat Referensi metrik Pemantauan Aplikasi.

FAQ

Mengapa traffic tidak merata di seluruh instans?

Pada versi probe 3.x, mengaktifkan optimasi memori dapat menyebabkan beberapa metrik terlewat. Tingkatkan ke versi probe 4.x.

Mengapa satu permintaan Undertow dihitung dua kali?

Pada versi probe sebelum 3.2.x, instrumentasi DeferredResult menyebabkan satu panggilan direkam dua kali. Tingkatkan ke versi probe 3.2.x atau lebih baru.

Mengapa kuota CPU atau memori di Pemantauan Kontainer tidak sesuai dengan pengaturan Pod?

Periksa apakah Pod mendefinisikan beberapa kontainer. Metrik ini merupakan jumlah kuota dari semua kontainer dalam Pod tersebut.

Mengapa beberapa metrik sistem hilang, tidak akurat, atau menunjukkan penggunaan CPU 100%?

Versi probe sebelum 4.x tidak mengumpulkan metrik sistem di Windows. Tingkatkan ke versi probe 4.x atau lebih baru.

Mengapa Full GC terjadi tepat setelah startup aplikasi?

Ukuran metaspace default sekitar 20 MB. Selama startup, ekspansi metaspace memicu Full GC. Tetapkan ukuran awal dan maksimum metaspace menggunakan parameter -XX:MetaspaceSize dan -XX:MaxMetaspaceSize.

Bagaimana VM Stack dihitung?

VM Stack dihitung sebagai jumlah thread aktif dikalikan 1 MB (ukuran stack thread default). Jika Anda menetapkan ukuran stack berbeda dengan -Xss, metrik ini mungkin tidak sesuai dengan nilai aktual.

Catatan

state=live mencakup status berikut: live, blocked, new, runnable, timed-wait, dan wait.

Bagaimana metrik JVM dikumpulkan?

ARMS mengambil metrik JVM menggunakan antarmuka JDK standar.

Metrik memori:

  • ManagementFactory.getMemoryPoolMXBeans

  • java.lang.management.MemoryPoolMXBean#getUsage

Metrik GC (probe sebelum 4.4.0):

  • ManagementFactory.getGarbageCollectorMXBeans

  • GarbageCollectorMXBean#getCollectionCount

  • GarbageCollectorMXBean#getCollectionTime

Metrik GC (probe 4.4.0 atau lebih baru):

Diambil dengan berlangganan event GarbageCollectionNotificationInfo dari GarbageCollectorMXBean.

Mengapa nilai maksimum memori heap JVM adalah -1?

Nilai -1 berarti ukuran maksimum heap tidak dikonfigurasi. Tetapkan menggunakan parameter -Xmx.

Mengapa penggunaan memori heap JVM tidak sama dengan ukuran maksimum memori heap?

Parameter -Xms menetapkan ukuran heap awal. JVM memperluas heap sesuai kebutuhan, hingga batas maksimum yang ditetapkan oleh -Xmx. Ketidaksesuaian berarti heap belum sepenuhnya diperluas.

Mengapa frekuensi GC JVM meningkat secara bertahap?

Hal ini biasanya terjadi dengan ParallelGC, algoritma GC default di JDK 8. ParallelGC mengaktifkan -XX:+UseAdaptiveSizePolicy secara default, yang secara dinamis menyesuaikan ukuran heap. Saat Young GC berjalan sering, ruang survivor mungkin menyusut, menyebabkan objek dipromosikan ke generasi lama lebih cepat. Ini mempercepat pertumbuhan generasi lama dan memicu Full GC lebih sering. Untuk detailnya, lihat dokumentasi Java GC Ergonomics.

Mengapa tidak ada data untuk pemantauan kolam thread atau kolam koneksi?

  1. Di halaman Custom Configuration, di bawah Advanced Settings, pastikan pemantauan kolam thread dan kolam koneksi diaktifkan.

  2. Verifikasi bahwa framework-nya didukung. Lihat Pemantauan kolam thread dan kolam koneksi.

Mengapa jumlah koneksi maksimum HikariCP tidak sesuai ekspektasi?

Versi probe sebelum 3.2.x salah mengambil jumlah koneksi maksimum. Tingkatkan ke versi probe 3.2.x atau lebih baru.

Mengapa metrik pemantauan pooling ditampilkan sebagai nilai desimal?

Probe mengumpulkan data setiap 15 detik. Konsol menampilkan rata-rata dalam rentang waktu yang dipilih. Misalnya, jika empat titik data dalam satu menit adalah 0, 0, 1, dan 0, nilai yang ditampilkan adalah 0,25.

Mengapa kolam thread atau kolam koneksi penuh, tetapi pemantauan tidak menunjukkan perubahan?

ARMS mengumpulkan metrik kolam thread dan kolam koneksi setiap 15 detik. Lonjakan singkat dalam interval ini mungkin tidak tertangkap.

Mengapa jumlah maksimum thread kolam thread tidak sesuai ekspektasi atau menunjukkan angka 2,1 miliar?

ARMS membaca jumlah maksimum thread langsung dari objek kolam thread. Nilai 2,1 miliar biasanya menunjukkan kolam thread terjadwal, yang secara default menggunakan Integer.MAX_VALUE.

/**
 * Creates a new ScheduledThreadPoolExecutor with the given core pool size.
 * @param corePoolSize the number of threads to keep in the pool, even if they are idle,
 *        unless allowCoreThreadTimeOut is set
 * @throws IllegalArgumentException if corePoolSize < 0
 */
public ScheduledThreadPoolExecutor(int corePoolSize) {
    super(corePoolSize, Integer.MAX_VALUE, 0, NANOSECONDS,
            new DelayedWorkQueue());
}

/**
 * Creates a new ScheduledThreadPoolExecutor with the given initial parameters.
 * @param corePoolSize the number of threads to keep in the pool, even if they are idle,
 *        unless allowCoreThreadTimeOut is set
 * @param threadFactory the factory to use when the executor creates a new thread
 * @throws IllegalArgumentException if corePoolSize < 0
 * @throws NullPointerException if threadFactory is null
 */
public ScheduledThreadPoolExecutor(int corePoolSize,
                        ThreadFactory threadFactory) {
    super(corePoolSize, Integer.MAX_VALUE, 0, NANOSECONDS,
            new DelayedWorkQueue(), threadFactory);
}

Mengapa metrik kolam thread Tomcat tidak sesuai ekspektasi?

Jika beberapa metrik (jumlah maksimum thread, jumlah thread aktif, jumlah thread inti) semuanya berbeda dari nilai yang diharapkan, periksa apakah aplikasi mengekspos layanan Tomcat di beberapa port. Misalnya, Spring Actuator membuka port tambahan untuk metrik. Dalam kasus ini, ARMS mungkin menggabungkan metrik dari beberapa kolam thread karena konvergensi dimensi.

Untuk memperbaikinya, tingkatkan ke versi probe 4.1.10 atau lebih baru. Lalu buka Application Configuration > Custom Configuration > Pooling Monitoring Configuration, dan atur Thread Pool Thread Name Pattern Extraction Strategy menjadi Replace trailing digits with *.

Mengapa tidak ada data untuk kolam thread atau kolam koneksi sebelum waktu tertentu?

Hal ini terjadi ketika tugas terjadwal membuat kolam tersebut. Data muncul hanya setelah tugas menginisialisasi kolam. Metrik berbasis traffic, seperti jumlah permintaan API, bersifat serupa.

Mengapa tidak ada data untuk kolam koneksi HttpClient?

Mulai dari versi probe ARMS 4.x, pemantauan kolam koneksi untuk OkHttp3 dan Apache HttpClient tidak lagi didukung. Framework ini membuat kolam koneksi terpisah untuk setiap domain eksternal. Ketika banyak domain terlibat, hal ini menyebabkan overhead berlebihan dan risiko stabilitas.

Mengapa tidak ada data pemantauan kontainer setelah mengintegrasikan aplikasi ACK?

ARMS hanya menampilkan data pemantauan kontainer untuk resource yang berada di bawah Akun Alibaba Cloud yang sama. Verifikasi bahwa akun yang digunakan untuk membuat kluster ACK sesuai dengan akun yang digunakan untuk integrasi ARMS.

Mengapa laju buka file handle tidak nol, tetapi jumlah file handle nol?

Hal ini terjadi pada JDK 9 atau lebih baru saat menggunakan versi probe ARMS 3.x. Tingkatkan ke versi probe 4.2.2 atau lebih baru. Lihat Tingkatkan agen ARMS.

Mengapa penggunaan memori fisik proses JVM berbeda signifikan dari penggunaan memori heap pemantauan JVM?

Proses JVM kemungkinan besar menggunakan banyak memori off-heap, yang tidak sepenuhnya dipantau oleh ARMS. Untuk detail area memori JVM yang dicakup ARMS, lihat Detail memori pemantauan JVM.

Mengapa Druid menunjukkan lebih banyak koneksi idle daripada pengaturan koneksi idle maksimum?

Parameter MaxIdle di Druid hanya ada untuk kompatibilitas migrasi DBCP. Parameter ini tidak memiliki efek fungsional.

Mengapa tidak ada data setelah meningkatkan beberapa instans ke versi probe terbaru?

Saat meningkatkan dari versi probe sebelum 4.1.x, semua instans harus ditingkatkan. Halaman akan menyesuaikan diri secara otomatis setelah semua instans menjalankan versi yang sama.