Observabilidade no Spring Boot utilizando o Actuator, Prometheus e Grafana

Valdenir Santana
4 min readJun 24, 2022

--

Spring Boot Actuator + Prometheus + Grafana

Observabilidade é um tema impressíndivel que auxilia na obtenção de informações que auxiliam no processo de monitoramento dos serviços.

Neste artigo/tutorial vamos construir uma aplicação em Java com spring boot e utilizar do módulo spring boot actuator para expor métricas que serão consumidas e armazenadas pelo Prometheus para serem visualizadas posteriormente através do Grafana.

O que é spring boot actuator, prometheus e grafana?

Primeiramente vamos entender o papel de cada uma das tecnologias utilizadas nesse tutorial:

  • Spring Boot Actuator: O Spring Boot é um framework que facilita a criação de aplicações Spring com Java, fazendo com que o seu projeto rode o mais rápido possível e sem complicação. O Spring boot actuator é usado principalmente para expor informações operacionais sobre o aplicativo ou serviço em execução, integridade, métricas, informações, dump, env, etc. Ele apresentas as informações através de endpoints HTTP ou beans JMX.
  • Prometheus: O Prometheus é um sistema de monitoramento de aplicações e serviços no formato TSDB(Time Series Database). Suas principais funcionalidades são a coleta de métricas de aplicações e serviços em determinados intervalos de tempo, avaliação de expressões de regras, exibição de resultados das métricas coletadas e possíveis alertas.
  • Grafana: O Grafana é uma plataforma que permite visualizar e analisar métricas por meio de dashboards e gráficos. Ele consegue se conectar em vários tipos de bancos de dados e os usuários finais podem criar painéis de monitoramento personalizados conforme necessidade.

Resumidamente, utilizaremos o Spring Boot Actuator para expor métricas da aplicação, que serão consumidas e armazenadas pelo Prometheus e posteriormente serão exibidas pelo Grafana.

Agora que aprendemos os conceitos, bora codar?

LET’S CODE!!!!

Criando a aplicação Spring boot

Criaremos a aplicação através do https://start.spring.io/, utilizando as dependências Spring Web, Spring Boot Actuator e Prometheus:

Clicando em "GENERATE", baixamos o código que será importado na IDE. O primeiro passo é renomear o arquivo application.properties para application.yml para facilitar as configurações. Vamos colocar nesse arquivo as configurações de quais métricas serão expostas pelo actuator:

application.yml

No arquivo pom.xml adicionaremos a dependência de registro de métricas do micrometer:

pom.xml

Criaremos um arquivo prometheus.yml nos resources e colar as configs:

prometheus.yml

Para executar o prometheus e o grafana vamos utilizar o docker-compose:

docker-compose.yml

Ficando com a seguinte estrutura:

Testando nosso projeto

No terminal, na raiz do projeto, executamos o comando docker-compose up que irá subir o prometheus e o grafana de forma conteinerizada.

Para acessar o grafana, acessaremos a URL: http://localhost:3000 e efetuaremos o login com o user e senha "admin", "admin", conforme abaixo:

localhost:3000

Ao acessarmos o grafana, primeiramente precisaremos configurar o datasource que é a nossa fonte de dados, acessando a opção destacada abaixo:

Na tela a seguir selecionaremos o tipo de datasource, que será Prometheus:

Na URL preenchemos com o nome do container e a porta, que no nosso caso será: http://prometheus:9090 conforme abaixo:

Logo após clicaremos em Save & test, e logo após vamos clicar na opção de importar um dashboard, conforme imagem abaixo:

Na tela a seguir colocaremos o identificador do nosso dashboard que será 4701, porém podemos utilizar a importação de um Json com as configurações ou algum outro identificador de dashboard que podemos buscar no repositório colaborativo: https://grafana.com/grafana/dashboards/.

Após digitar o código, clicaremos em "Load"

Nessa tela selecionaremos o datasource que acabamos de criar, que foi o Prometheus:

E na próxima tela podemos configurar o frame de tempo que queremos visualizar as métricas, no caso abaixo configurei os últimos 5 minutos e consegui visualizar em real time os dados da aplicação que estão sendo exportados para o prometheus e consumidos pelo grafana:

Resumo

Para concluir, nesse artigo/tutorial mostramos como é possível utilizar o spring boot actuator para expor métricas que serão consumidas pelo prometheus e apresentadas através do grafana. Podemos utilizar uma série de dashboards para apresentar os dados, e também podemos customizar cada um deles de acordo com a nossa necessidade.

Link do repositório no GitHub.

Se isso foi útil de alguma forma para você, deixe seu Clap abaixo ❤

--

--