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