Monitoramento com Grafana & Prometheus

Michelle Mesquita
4 min readMay 11, 2022

--

Hoje, resolvi escrever esse artigo para podermos conversar um pouco sobre monitoramento, de maneira bem prática.

Antes de mais nada, vale conversarmos sobre Arquitetura de Microsserviços.

O que seria essa arquitetura? São pequenos serviços que rodam diferentes partes de uma aplicação. Por exemplo, se pensamos em e-commerce, podemos ter um serviço separado só do Login, outro só para o ato da compra, outro para análise dos produtos e assim, por diante.

Essa arquitetura está sendo cada vez mais utilizada porque cada uma das funcionalidades funcionam como serviços separados e que se comunicam por meio de APIs. Dessa forma, podemos utilizar diferentes linguagens para comunicar com esses serviços, assim como vemos na imagem abaixo ⬇️

O ponto principal disso? Nos permite termos escalabilidade de uma aplicação. Assim, podemos aumentar o número de usuários que acessam simultaneamente a aplicação. Como também, podemos ter mais recursos nas diferentes máquinas que rodam e mantém a aplicação.

Agora que pensamos em recursos, maior quantidade de acessos e várias requisições, nossa aplicação começa a se tornar complexa para encontrarmos os erros e as possíveis melhorias, também.

Assim, vem o ponto principal: Monitoramento!

Para o que serve Monitoramento? Aqui estão alguns pontos:

  • Saber se tem algo errado
  • Entender onde/como realizar o debug
  • Gerar insights
  • Entender o gargalo/latência da aplicação
  • Encontrar problemas voltados inclusive a segurança 💜

Acredito que a imagem abaixo possa exemplificar como que a visibilidade torna-se limitada numa arquitetura de microsserviço:

Dessa forma, precisamos de uma ferramenta que nos permita monitorar, gerar insights e melhorias para o ciclo de um software.

O Prometheus pode ser essa solução, principalmente, por ajudar a monitorar e gerar logs que podem ajudar numa possível solução!

É uma ferramenta opensource, mas muito poderosa. Principalmente quando o assunto é integração com Dashboards! E nesse caso? O Grafana faz muito bem esse papel e gera ótimos gráficos para o nosso monitoramento.

Trouxe aqui um exemplo, que disponibilizei no Github, para vermos uma aplicação funcionando e os logs gerados por alguns desses endpoints.

Para rodar a aplicação, instale o Docker na máquina de vocês e utilize esse comando:

docker-compose up -d

Subindo esses serviços, conseguimos testar nossa aplicação feita em Flask 😊

Aqui, no Prometheus podemos criar umas visualizações também, mas utilizaremos a integração do mesmo com o Grafana para criarmos alguns Dashboards. Aqui na imagem, podemos observar no Grafana, o banco de dados do Prometheus. Um outro ponto interessante do Grafana é que você pode adicionar diferentes tipos de fontes de dados.

Um outro ponto bem interessante, com as bibliotecas existentes com Flask para integrar com Prometheus, podemos analisar o log aqui, no endpoint /metrics

Na aba principal, temos um arquivo json que disponibilizei para utilizar o Flask.

Podemos analisar aqui as respostas ✨

Vocês podem acessar a requisição manualmente ou podem digitar um comando que possa acelerar isso, como:

ab -m POST -n 10000 -c 100 http://localhost:8080/

Lembre-se, a criatividade é o limite para o que se deseja monitorar.

Espero que tenham gostado 💜

--

--