Koneksi mikrometer untuk aplikasi web Java

Mikrometer digunakan untuk mengumpulkan metrik aplikasi JVM dan memungkinkan Anda untuk mengekspor data ke berbagai sistem pemantauan. Pada artikel ini saya akan memberitahu Anda bagaimana menghubungkan Micrometer untuk aplikasi web musim semi dan mengekspor data ke Prometheus ( posting yang bagus tentang itu ). Karena aplikasi saya ditulis di Spring 3, tidak ada kemungkinan untuk menggunakan boot Spring tanpa upgrade. Karena itu, Anda harus bekerja dengan tangan Anda.

Pertama-tama, kita membutuhkan dependensi Prometheus, klien itu sendiri dan servlet untuk mengekspor data:

pom.xml
<dependency> <groupId>io.prometheus</groupId> <artifactId>simpleclient</artifactId> <version>0.6.0</version> </dependency> <dependency> <groupId>io.prometheus</groupId> <artifactId>simpleclient_servlet</artifactId> <version>0.6.0</version> </dependency> 


Selanjutnya, tambahkan servlet ekspor servlet ke web.xml dan tentukan jalur tempat metrik akan tersedia:

 <servlet> <servlet-name>prometheus</servlet-name> <servlet-class>io.prometheus.client.exporter.MetricsServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>prometheus</servlet-name> <url-pattern>/metrics</url-pattern> </servlet-mapping> 

Jangan lupa untuk menambahkan kebijakan akses jika perlu:

 <http pattern="/metrics" security="none"/> 

Sekarang statistik akan tersedia di localhost: 8080 / metrik, tetapi untuk saat ini ini adalah halaman kosong. Agar data muncul di dalamnya, Anda harus mendaftarkan koleksi metrik aplikasi.

Untuk menggunakan Micrometer, tambahkan dependensi:

pom.xml
 <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-core</artifactId> <version>1.1.3</version> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> <version>1.1.3</version> </dependency> 


Selanjutnya, Anda harus mendaftarkan pengumpul metrik yang diperlukan:

 @WebListener public class PrometheusInitListener implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent sce) { PrometheusMeterRegistry meterRegistry = new PrometheusMeterRegistry(PrometheusConfig.DEFAULT, CollectorRegistry.defaultRegistry, Clock.SYSTEM); new ClassLoaderMetrics().bindTo(meterRegistry); new JvmMemoryMetrics().bindTo(meterRegistry); new JvmGcMetrics().bindTo(meterRegistry); new ProcessorMetrics().bindTo(meterRegistry); new JvmThreadMetrics().bindTo(meterRegistry); } @Override public void contextDestroyed(ServletContextEvent sce) { } } 

Selesai, sekarang jika kita beralih ke localhost: 8080 / metrik, kita akan mendapatkan data di JVM.

Itu terlihat seperti ini:



Prometheus memiliki perpustakaan sendiri untuk statistik JVM dari aplikasi simpleclient_hotspot , yang dikonfigurasi dengan memanggil DefaultExports.initialize (); dalam metode inisialisasi pendengar web.

Untuk mengonfigurasi koleksi metrik di prometheus.yml tambahkan target:

 scrape_configs: - job_name: 'test-server' # Override the global default and scrape targets from this job every 5 seconds. scrape_interval: 5s metrics_path: /metrics static_configs: - targets: ['localhost:8080'] 

Metrik yang dikumpulkan di Prometheus dapat dilihat menggunakan bahasa khusus PromQL. Keuntungan Micrometr adalah Anda tidak dapat menulis apa pun, tetapi gunakan plug-in yang sudah jadi untuk sistem visualisasi metrik.


Tampilkan metrik aplikasi di Grafana, plugin 4683

Source: https://habr.com/ru/post/id442080/


All Articles