Conexión de micrómetro para aplicación web Java

Micrometer se utiliza para recopilar métricas de aplicaciones JVM y le permite exportar datos a varios sistemas de monitoreo. En este artículo, le diré cómo conectar Micrometer para aplicaciones web de primavera y exportar datos a Prometheus (una buena publicación al respecto ). Como mi aplicación está escrita en Spring 3, no hay forma de usar Spring boot sin una actualización. Por lo tanto, tienes que trabajar con tus manos.

En primer lugar, necesitamos las dependencias de Prometheus, el propio cliente y el servlet para exportar datos:

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> 


A continuación, agregue el servlet de exportación de metlet a web.xml y especifique la ruta donde estarán disponibles las métricas:

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

No olvide agregar una política de acceso si es necesario:

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

Ahora las estadísticas estarán disponibles en localhost: 8080 / metrics, pero por ahora esta es una página en blanco. Para que los datos aparezcan en él, debe registrar la colección de métricas de la aplicación.

Para usar Micrometer agregue dependencias:

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> 


A continuación, debe registrar los recopiladores métricos necesarios:

 @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) { } } 

Hecho, ahora si cambiamos a localhost: 8080 / metrics, obtendremos datos sobre la JVM.

Se parece a esto:



Prometheus tiene su propia biblioteca para estadísticas JVM de aplicaciones simpleclient_hotspot , que se configura llamando a DefaultExports.initialize (); en el método de inicialización de escucha web.

Para configurar la recopilación de métricas en prometheus.yml, agregue un objetivo:

 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'] 

Las métricas recopiladas en Prometheus se pueden ver utilizando un lenguaje especial PromQL. La ventaja de Micrometr es que no puede escribir nada, sino utilizar complementos ya preparados para los sistemas de visualización métrica.


Mostrar métricas de aplicaciones en Grafana, complemento 4683

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


All Articles