Monitorando uma aplicação Spring Boot (2.x) utilizando Actuator, Micrometer, Prometheus e Grafana (2ª Parte — Prometheus e Grafana)
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:
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”.
- Após isso escolho o datasource previamente configurado:
- 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:
O código fonte completo pode ser visualizado neste link.