Monitorando uma aplicação Spring Boot (2.x) utilizando Actuator, Micrometer, Prometheus e Grafana (2ª Parte — Prometheus e Grafana)

Felipe da Rosa
ProJurisTech
Published in
4 min readMay 1, 2019

Na post anterior, foi possível entender de forma básica o funcionamento do Spring Actuator, e como ele nos dá informações sobre a aplicação.

Só que estas informações ainda não tão estão fáceis de visualizar. Seria interessante termos uma interface gráfica para podermos acompanhar o estado da aplicação.

O Spring boot usa o Micrometer, que é um façade para integrar as métricas com aplicações de monitoramento externo.

O Micrometer suporta vários sistemas de monitoramento, tais como: Atlas, AWS Cloud Watch, Prometheus, dentre outros.

Prometheus

Aqui vamos usar a integração com o Prometheus, adicionando ao projeto a dependência:

<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

Ao acessarmos o endpoint do actuator (http://localhost:8087/actuator), pode-se observar que o prometheus já foi identificado:

Agora, acessando http://localhost:8087/actuator/prometheus podemos ver que as métricas já extão expostas e podem ser acessadas por um servidor prometheus:

Configurando

O primeiro passo é fazer a configuração do arquivo prometheus.yml, que pode ser criado dentro do projeto:

global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'prometheusJob'
scrape_interval: 5s
static_configs:
- targets: ['localhost:9090'] #Servidor prometheus
- job_name: 'spring-monitoring-demo'
scrape_interval: 5s
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['localhost:8087'] #Servidor da minha aplicação

Este é um arquivo de configuração bem básico do prometheus, para detalhes mais avançados é possível consultar a sua documentação .

Interessante observar na configuração acima, que mais jobs poderiam ter sido adicionados no caso de mais aplicações/microserviços.

Executando

Devemos fazer o download do prometheus e por fim, iniciar o serviço com o seguinte comando:

prometheus.exe –config.file =<PATH_DO_ARQUIVO>/prometheus.yml

Lembrando que aqui poderíamos facilmente utilizar o docker para baixar a imagem e rodar o prometheus.

Na imagem abaixo já pode-se ver o serviço do prometheus em funcionamento conforme configuração do arquivo prometheus.yml:

Quantidade de requisições por path
Uso de CPU do sistema

Grafana

O Grafana é uma das ferramentas mais completas para exibição de gráficos de monitoramento, além de ser altamente configurável.

Com o grafana podemos criar diversos dashboards para exibir as métricas de forma totalmente amigável e com uma visualização rápida.

O Grafana é uma excelente solução gratuita e de código aberto para gestão de métricas e indicadores. Ela vem ganhando cada vez mais adoção.

Outra grande vantagem do Grafana é sua comunidade rica e participativa. Seus desenvolvedores fazem questão de documentar bastante coisa, além de serem bem ativos nos fóruns juntamente com milhares de usuários ao redor do mundo.

Fazendo o download e acessando o Grafana

  • O download pode ser feito através deste link
  • Executar o grafana-server.exe
  • Acessar a url http://localhost:3000
  • Utilizar o login e senha padrão: admin e admin

Adicionando o datasource do prometheus no Grafana

  • Clicar no ícone de engrenagem do lado esquerdo e selecionar a opção “data sources”
  • Clicar em “add data source”
  • Escolher “Prometheus”
  • Fazer a configuração conforme abaixo:
  • Adicionar um novo Dashboard, e um Novo painel (neste caso escolhi a opção “add query”.
Escolhenado a opção query
  • Após isso escolho o datasource previamente configurado:
Datasource spring-monitoring-demo
  • Em seguida, é possível montar uma query do prometheus no editor de queries do grafana:
  • Assim, já é possível analisar métricas através do painel

Lembrando que podemos criar vários tipos de gráficos com diferentes métricas para um monitoramento preciso dos dados.

Importando dashboards existentes

É possível também utilizarmos dashboards com vários paineis pré definidos.

Como exemplo utilizei o Spring boot statistics, que pode ser importado com o Id 6756

Na imagem abaixo pode-se ver que para importar um dashboard é muito simples:

Em seguida, podemos selecionar o datasource que vai ser utilizado

Com este dashboard já conseguimos ter uma visualização mais ampla sobre a aplicação:

Dashboard Spring Boot Statistics

O código fonte completo pode ser visualizado neste link.

--

--