Conexão micrômetro para aplicativo da web Java

O micrômetro é usado para coletar métricas de aplicativos da JVM e permite exportar dados para vários sistemas de monitoramento. Neste artigo, mostrarei como conectar o micrômetro para aplicativos Web da primavera e exportar dados para o Prometheus (um bom post sobre isso ). Como meu aplicativo está escrito no Spring 3, não há possibilidade de usar a inicialização do Spring sem uma atualização. Portanto, você tem que trabalhar com as mãos.

Primeiro, precisamos das dependências do Prometheus, do próprio cliente e do servlet para exportar dados:

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> 


Em seguida, inclua o servlet de exportação do metlet em web.xml e especifique o caminho em que as métricas estarão disponíveis:

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

Não se esqueça de adicionar uma política de acesso, se necessário:

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

Agora, as estatísticas estarão disponíveis no localhost: 8080 / metrics, mas, por enquanto, esta é uma página em branco. Para que os dados apareçam nele, é necessário registrar a coleção de métricas do aplicativo.

Para usar o micrômetro, adicione dependências:

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> 


Em seguida, você precisa registrar os coletores de métricas necessários:

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

Feito, agora, se mudarmos para localhost: 8080 / metrics, obteremos dados na JVM.

Parece algo como isto:



O Prometheus possui sua própria biblioteca para estatísticas da JVM de aplicativos simpleclient_hotspot , configuradas chamando DefaultExports.initialize (); no método de inicialização do ouvinte da web.

Para configurar a coleção de métricas no prometheus.yml, adicione um destino:

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

As métricas coletadas no Prometheus podem ser visualizadas usando uma linguagem especial PromQL. A vantagem do Micrometr é que você não pode escrever nada, mas usar plug-ins prontos para sistemas de visualização métrica.


Exibir métricas de aplicativo no Grafana, plugin 4683

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


All Articles