Topik ini menjelaskan cara menggunakan Managed Service for Prometheus untuk memantau aplikasi Java yang menggunakan Micrometer.
Prasyarat
Anda telah membuat aplikasi Java.
Langkah 1: Instrumentasi aplikasi Java Anda
Topik ini menggunakan aplikasi Spring Boot 2.x yang populer sebagai contoh.
-
Untuk menambahkan Spring Boot Actuator ke aplikasi Java, tambahkan dependensi Actuator ke file
pom.xmlproyek.<dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> <version>x.y.z</version> </dependency>CatatanAnda dapat menemukan versi terbaru di repositori Alibaba Cloud.
-
Tambahkan properti berikut ke file
application.propertiesuntuk membuka port dan endpoint bagi data pemantauan Prometheus.management.server.port=8080 management.endpoints.web.exposure.include=xxx, prometheus Tambahkan dependensi Micrometer ke file
pom.xmlproyek.<dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> <version>x.y.z</version> </dependency>CatatanTemukan versi terbaru di repositori Alibaba Cloud.
-
Tambahkan dependensi Micrometer JVM Extras ke file
pom.xmlproyek Anda.<dependency> <groupId>io.github.mweirauch</groupId> <artifactId>micrometer-jvm-extras</artifactId> <version>0.2.2</version> </dependency>CatatanAnda dapat menemukan versi terbaru di repositori Alibaba Cloud.
-
Konfigurasikan Micrometer JVM Extras dengan mendefinisikan dua bean Spring berikut untuk mengekspos metrik terkait memori dan thread.
/* Dengan Spring */ @Bean public MeterBinder processMemoryMetrics() { return new ProcessMemoryMetrics(); } @Bean public MeterBinder processThreadMetrics() { return new ProcessThreadMetrics(); } -
Deploy aplikasi Java ke Container Service atau instans ECS.
Deploy aplikasi Java Anda ke Container Service atau instans ECS sesuai skenario bisnis Anda. Setelah aplikasi dideploy, verifikasi bahwa metrik diekspos dengan benar dengan mengakses alamat listening aplikasi di
http://localhost:8080/actuator/prometheus. Port8080ditentukan dalam fileapplication.propertiesAnda. Jika Anda menggunakan port berbeda, sesuaikan URL tersebut.Permintaan yang berhasil akan mengembalikan data metrik dalam format Prometheus, seperti pada contoh berikut:
# HELP jvm_memory_used_bytes The amount of used memory # TYPE jvm_memory_used_bytes gauge jvm_memory_used_bytes{area="heap",id="G1 Survivor Space",} 2964360.0 jvm_memory_used_bytes{area="heap",id="G1 Old Gen",} 1.285324E7 jvm_memory_used_bytes{area="nonheap",id="Metaspace",} 3.6128128E7 jvm_memory_used_bytes{area="nonheap",id="CodeCache",} 9673088.0 jvm_memory_used_bytes{area="heap",id="G1 Eden Space",} 6.7108864E7 jvm_memory_used_bytes{area="nonheap",id="Compressed Class Space",} 4999168.0 # HELP jvm_threads_live_threads The current number of live threads including both daemon and non-daemon threads # TYPE jvm_threads_live_threads gauge jvm_threads_live_threads 28.0 # HELP jvm_memory_committed_bytes The amount of memory in bytes that is committed for the Java virtual machine to use # TYPE jvm_memory_committed_bytes gauge jvm_memory_committed_bytes{area="heap",id="G1 Survivor Space",} 4194304.0 jvm_memory_committed_bytes{area="heap",id="G1 Old Gen",} 5.8720256E7 jvm_memory_committed_bytes{area="nonheap",id="Metaspace",} 3.6569088E7 jvm_memory_committed_bytes{area="nonheap",id="CodeCache",} 1.0682368E7 jvm_memory_committed_bytes{area="heap",id="G1 Eden Space",} 9.646899E7 jvm_memory_committed_bytes{area="nonheap",id="Compressed Class Space",} 5177344.0 # HELP executor_pool_max_threads The maximum allowed number of threads in the pool # TYPE executor_pool_max_threads gauge executor_pool_max_threads{name="applicationTaskExecutor",} 2.147483647E9 ... # TYPE jvm_buffer_count_buffers gauge jvm_buffer_count_buffers{id="mapped - 'non-volatile memory'",} 0.0 jvm_buffer_count_buffers{id="mapped",} 0.0 jvm_buffer_count_buffers{id="direct",} 7.0 # HELP jvm_buffer_total_capacity_bytes An estimate of the total capacity of the buffers in this pool # TYPE jvm_buffer_total_capacity_bytes gauge jvm_buffer_total_capacity_bytes{id="mapped - 'non-volatile memory'",} 0.0 jvm_buffer_total_capacity_bytes{id="mapped",} 0.0 jvm_buffer_total_capacity_bytes{id="direct",} 57344.0 # HELP jvm_threads_peak_threads The peak live thread count since the Java virtual machine started or peak was reset # TYPE jvm_threads_peak_threads gauge jvm_threads_peak_threads 30.0 # HELP jvm_threads_states_threads The current number of threads # TYPE jvm_threads_states_threads gauge jvm_threads_states_threads{state="runnable",} 11.0 jvm_threads_states_threads{state="blocked",} 0.0
Langkah 2: Integrasi Micrometer
-
Di panel navigasi kiri, pilih Integration Center. Lalu, cari dan klik Micrometer.
-
Di tab Configuration panel Micrometer, pilih Environment Type, konfigurasikan pengaturan yang diperlukan, lalu klik OK.
Parameter
Description
Select environment type
Lingkungan tempat aplikasi Anda dideploy.
-
Container Service environment
-
ECS (VPC)
Select cluster
Kluster tempat aplikasi Anda dideploy.
Pod label
Label Pod unik untuk mengidentifikasi layanan Micrometer Anda.
Service port
Port layanan dari aplikasi Java. Nilai default dimasukkan secara otomatis.
Metrics path
Jalur tempat Micrometer mengekspos metrik. Jalur default dimasukkan secara otomatis.
Scrape over HTTPS
Aktifkan opsi ini untuk mengambil metrik melalui HTTPS. Secara default, metrik diambil melalui HTTP.
Metric scrape interval (seconds)
Interval pengambilan data metrik oleh Managed Service for Prometheus. Nilai default adalah 30 detik.
-
Langkah 3: Lihat dasbor Micrometer
-
Di panel navigasi kiri, klik Integration Center. Di halaman Integration Center, pada tab Installed, pilih lingkungan target dan klik namanya untuk membuka halaman detail lingkungan kontainer.
-
Di tab Components, pada bagian Component Type, klik Micrometer, lalu klik tab Dashboards untuk melihat daftar semua dasbor.
Daftar dasbor mencakup dasbor JVM Micrometer, yang diberi tag
java,jvm, danmicrometer. -
Klik nama dasbor untuk melihat dasbor Grafana yang sesuai.
Dasbor JVM Micrometer ditampilkan. Dasbor ini mencakup filter drop-down untuk job dan Instance, sakelar Restart Detection, bagian Quick Facts (Uptime dan Start time), serta bagian I/O Overview (Rate dan Errors). Pilih instans target untuk melihat data pemantauan JVM-nya.
Langkah 4: Konfigurasikan alert untuk Micrometer
-
Di tab Components, pada bagian Component Type, klik Micrometer, lalu klik tab Alert untuk melihat aturan alert default.
Aturan alert default mencakup JVM CPU Usage Alert, JVM Memory Usage Alert, JVM Restart Alert, Logback Error Count Alert, dan Major GC Time Ratio Alert. Semua aturan aktif dan memiliki prioritas P2.
-
Anda juga dapat menambahkan aturan alert kustom. Untuk informasi selengkapnya tentang cara membuat alert rule Prometheus, lihat Buat aturan alert untuk instans Prometheus.