4.11 Prometheus
Nesta seção iremos instalar e executar o Prometheus e explorar suas funcionalidades básicas. O objetivo deste primeiro contato não é monitorar todo o nosso ambiente ainda, mas entender como uma ferramenta de monitoramento coleta, armazena e exibe métricas.
Ao final desta seção você será capaz de:
executar o Prometheus em um contêiner Docker;
acessar sua interface web;
entender o conceito de scraping de métricas;
explorar as métricas internas do próprio Prometheus;
visualizar gráficos simples;
executar consultas personalizadas.
Todo o processo pode ser realizado apenas com Docker, sem a necessidade de instalar nada diretamente no sistema operacional.
1. Executando o Prometheus com Docker
Primeiramente, vamos executar o Prometheus utilizando uma imagem oficial disponível no Docker Hub.
Execute o seguinte comando no terminal:
docker run --rm -p 9090:9090 prom/prometheusEsse comando realiza várias ações importantes:
faz o download da imagem oficial do Prometheus (caso ainda não esteja no seu computador);
cria um contêiner a partir dessa imagem;
publica a porta 9090 do contêiner para o host.
A porta 9090 é a porta padrão utilizada pelo Prometheus para sua interface web.
Se tudo ocorrer corretamente, o terminal começará a exibir mensagens de inicialização semelhantes às seguintes:
Essas mensagens indicam que o servidor de monitoramento está em execução.
Observação: ao encerrar o contêiner, todas as métricas armazenadas serão perdidas, pois não estamos utilizando volumes persistentes.
2. Acessando a Interface Web
Abra seu navegador e acesse o seguinte endereço:
A interface principal do Prometheus será exibida.
Ela contém alguns menus importantes:
Graph
Permite executar consultas sobre métricas e visualizar gráficos.
Status
Exibe informações internas do Prometheus, incluindo os serviços que estão sendo monitorados.
Alerts
Apresenta alertas configurados no sistema.
Targets
Mostra quais serviços o Prometheus está monitorando no momento.
Como estamos executando apenas o próprio Prometheus, veremos inicialmente apenas um alvo monitorado: o próprio servidor Prometheus.
3. Verificando os Targets Monitorados
Clique em:
A página exibirá uma tabela com os serviços monitorados.
Nesse momento você verá algo parecido com:
prometheus:9090
UP
Isso significa que o Prometheus está coletando métricas dele próprio.
4. Entendendo o Conceito de Scrape
O Prometheus utiliza um mecanismo chamado scraping para coletar métricas.
Em vez de os serviços enviarem dados para o servidor de monitoramento, o Prometheus consulta periodicamente os serviços monitorados.
O processo funciona da seguinte forma:
Ou seja:
o serviço expõe um endpoint HTTP chamado
/metrics;o Prometheus consulta esse endpoint periodicamente;
os valores retornados são armazenados como séries temporais.
Esse modelo é conhecido como pull-based monitoring, pois o monitoramento ocorre através da coleta ativa das métricas pelo servidor.
Isso difere de sistemas baseados em push, onde os serviços enviam métricas. No Prometheus, o controle da coleta está centralizado.
5. Explorando Métricas Internas
Mesmo sem monitorar nenhum sistema externo, o Prometheus já disponibiliza diversas métricas sobre seu próprio funcionamento.
Vamos visualizar algumas delas.
Clique no menu Graph.
Na caixa de consulta, digite:
Clique em Execute.
Depois clique em Graph para visualizar o gráfico.
Essa métrica representa o tempo total de CPU utilizado pelo processo do Prometheus.
6. Visualizando Outras Métricas
Experimente executar algumas consultas adicionais.
Uso de memória do processo:
Essa métrica mostra a quantidade de memória utilizada pelo processo do Prometheus.
Número de requisições HTTP recebidas:
Essa métrica representa o número total de requisições HTTP recebidas pelo servidor Prometheus.
Número de séries temporais armazenadas:
Essa métrica indica quantas séries temporais estão armazenadas na memória do Prometheus.
7. Visualizando o Endpoint de Métricas
Agora vamos observar diretamente o endpoint que fornece essas métricas.
Abra o seguinte endereço no navegador:
Você verá uma longa lista de métricas em formato texto, semelhante ao exemplo abaixo:
Cada linha representa uma métrica coletada pelo Prometheus.
A estrutura geral é:
Os labels permitem diferenciar valores da mesma métrica. Por exemplo:
Essa expressão representa uma métrica chamada http_requests_total, que indica o número total de requisições HTTP registradas. Os elementos entre chaves ({method="GET", status="200"}) são chamados de labels e servem para filtrar ou identificar dimensões específicas dessa métrica — neste caso, apenas requisições do tipo GET que retornaram status 200 (sucesso). O valor 1027 indica que, até aquele momento, foram registradas 1027 requisições com essas características.
8. Criando Consultas Simples
O Prometheus utiliza uma linguagem de consulta chamada PromQL (Prometheus Query Language).
Essa linguagem permite consultar e manipular métricas armazenadas no sistema.
Vamos experimentar algumas consultas simples.
Taxa de crescimento de uma métrica
Digite no campo de consulta:
Em PromQL, expressões como [1m] indicam um intervalo de tempo (range), permitindo calcular variações ao longo do tempo. Neste caso, a consulta calcula a taxa de crescimento da métrica no último minuto.
Valor médio de uma métrica
Outra consulta possível seria:
Essa consulta calcula o valor médio da métrica.
9. Parando o Prometheus
Quando quiser encerrar o Prometheus, volte ao terminal onde o contêiner está rodando e pressione:
O contêiner será interrompido, removido, e o servidor de monitoramento será encerrado.
Conclusão
Nesta seção realizamos o primeiro contato com o Prometheus. Aprendemos como:
executar o servidor de monitoramento em um contêiner Docker;
acessar sua interface web;
entender o mecanismo de coleta de métricas (scraping);
explorar métricas internas do sistema;
visualizar gráficos simples;
executar consultas básicas utilizando PromQL.
Nas próximas seções iremos integrar o Prometheus com outras ferramentas de visualização e monitorar diferentes componentes do ambiente de produção construído nos capítulos anteriores.
Nota sobre o desenvolvimento do material
O conteúdo desta seção contou com o apoio do ChatGPT como ferramenta auxiliar na estruturação de explicações, revisão de conceitos e refinamento técnico. Todas as decisões de conteúdo, exemplos e direcionamento didático foram conduzidas pelo autor.
Atualizado