O monitoramento de infraestrutura moderna exige mais do que apenas coletar dados; é necessário transformá-los em inteligência acionável. Neste tutorial, exploraremos a integração entre Grafana e Prometheus, duas ferramentas fundamentais no ecossistema de observabilidade. Enquanto o Prometheus atua como a fonte de verdade, armazenando métricas temporais, o Grafana brilha na visualização, criando dashboards interativos que facilitam a tomada de decisão para sysadmins e devs.
1. Entendendo a Arquitetura da Solução
Antes de configurar qualquer serviço, é crucial compreender como as peças se encaixam. O Prometheus é um sistema de monitoramento e alertas baseado em eventos. Ele coleta métricas através de um modelo pull (HTTP), onde o servidor consulta os exportadores ou targets configurados. Essas métricas são armazenadas em um banco de dados de séries temporais otimizado para alta compressão e velocidade de leitura.
O Grafana, por sua vez, é uma plataforma de visualização e monitoramento multi-dominio. Ele não armazena os dados por si só; em vez disso, ele se conecta a várias fontes de dados, sendo o Prometheus a mais comum. Ao adicionar o Prometheus como "Data Source" no Grafana, você permite que queries feitas na linguagem PromQL sejam executadas contra os dados históricos e em tempo real.
Embora esta integração seja o padrão da indústria para aplicações cloud-native e microsserviços, é importante notar que outras ferramentas como Akvorado (para telemetria de rede) ou Wazuh (para segurança e compliance) podem ter suas próprias pilhas de visualização. No entanto, a combinação Grafana-Prometheus oferece uma flexibilidade superior para criar um painel unificado de monitoramento, agregando dados de diferentes fontes sob uma única interface.
2. Pré-requisitos e Ambiente
Para este guia, assumiremos que você possui acesso root ou sudo em um servidor Linux (Ubuntu 22.04 ou CentOS 8+). A instalação será feita via pacotes oficiais ou Docker para garantir simplicidade e isolamento. Se você estiver operando em um ambiente de produção crítica, considere o uso de UptimeKuma para monitorar a disponibilidade desses próprios serviços de monitoramento, garantindo que o sistema não fique "cego".
Verifique se as portas 9090 (Prometheus) e 3000 (Grafana) estão disponíveis ou configuradas corretamente no seu firewall. Em ambientes corporativos, recomenda-se o uso de um reverse proxy (como Nginx ou Traefik) para expor essas interfaces via HTTPS e autenticação básica.
3. Instalando o Prometheus
O primeiro passo é instalar o servidor do Prometheus. Vamos utilizar a versão estável mais recente disponível nos repositórios oficiais ou baixar diretamente do site de releases. Para fins didáticos, usaremos o método de download binário direto, que oferece controle total sobre a configuração.
# Crie um diretório dedicado para o Prometheus
sudo mkdir -p /opt/prometheus
cd /opt/prometheus
# Baixe a versão estável (exemplo com v2.47.0)
wget https://github.com/prometheus/prometheus/releases/download/v2.47.0/prometheus-2.47.0.linux-amd64.tar.gz
# Extraia os arquivos
tar -xzf prometheus-2.47.0.linux-amd64.tar.gz
# Mova os binários para o diretório de instalação
sudo cp prometheus-2.47.0.linux-amd64/prometheus /usr/local/bin/
sudo cp prometheus-2.47.0.linux-amd64/promtool /usr/local/bin/
# Crie diretórios de configuração e dados
sudo mkdir -p /etc/prometheus
sudo mkdir -p /var/lib/prometheus
Agora, precisamos mover os arquivos de exemplo de configuração para o local padrão:
sudo cp -r prometheus-2.47.0.linux-amd64/consoles /etc/prometheus
sudo cp -r prometheus-2.47.0.linux-amd64/console_libraries /etc/prometheus
Crie o arquivo de configuração principal /etc/prometheus/prometheus.yml. Este arquivo define onde o Prometheus vai buscar os dados (targets) e como armazená-los.
global:
scrape_interval: 15s # Intervalo padrão de coleta
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
Para facilitar a gestão, crie um arquivo systemd para rodar o Prometheus como um serviço:
[Unit]
Description=Prometheus Monitoring System
Documentation=Prometheus Monitoring System
[Service]
ExecStart=/usr/local/bin/prometheus \
--config.file=/etc/prometheus/prometheus.yml \
--storage.tsdb.path=/var/lib/prometheus \
--web.console.templates=/etc/prometheus/consoles \
--web.console.libraries=/etc/prometheus/console_libraries
[Install]
WantedBy=multi-user.target
Habilite e inicie o serviço:
sudo systemctl daemon-reload
sudo systemctl enable prometheus
sudo systemctl start prometheus
sudo systemctl status prometheus
4. Instalando e Configurando o Grafana
Com o Prometheus rodando, instale o Grafana. A maneira mais simples em sistemas Debian/Ubuntu é usar o repositório oficial.
# Instale dependências necessárias
sudo apt-get install -y apt-transport-https software-properties-common wget
# Importe a chave GPG
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
# Adicione o repositório para versão estável
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
# Atualize e instale
sudo apt-get update
sudo apt-get install grafana
Inicie o serviço do Grafana:
sudo systemctl daemon-reload
sudo systemctl enable grafana-server
sudo systemctl start grafana-server
O Grafana estará disponível na porta 3000. Acesse http://seu-ip:3000. O login padrão é admin/admin. Você será forçado a alterar a senha imediatamente.
5. Conectando o Prometheus ao Grafana
Agora vem a parte mágica: a integração. No menu lateral do Grafana, clique em Connections (ícone de tomada elétrica) e selecione Add your first data source. Escolha Prometheus.
Na configuração da conexão, basta inserir o URL do seu servidor Prometheus. Se estiverem na mesma máquina, use:
http://localhost:9090
Clique em Save & Test. Uma mensagem verde confirmando "Data source is working" indica que a comunicação está estabelecida com sucesso. Isso significa que o Grafana consegue consultar o banco de dados do Prometheus via API HTTP.
6. Criando Dashboards Efetivos
Com a conexão ativa, podemos criar visualizações. Clique em + Create no menu lateral e escolha Dashboards. Adicione um novo painel (Panel) e selecione o query editor.
Aqui, utilizamos a linguagem PromQL. Para visualizar o uso de CPU do próprio servidor onde o Prometheus está rodando (assumindo que você tenha instalado o node_exporter, um exportador padrão para métricas de sistema), use uma query como:
100 - (avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
Se você ainda não instalou o Node Exporter, pode testar com métricas internas do Prometheus. Digite prometheus_http_requests_total no editor e visualize a contagem de requisições HTTP recebidas pelo próprio serviço.
Para profissionais de rede que utilizam soluções como FastNetMon ou Akvorado, a lógica é similar: configure o exportador específico para expor as métricas de tráfego (bytes, pacotes, DDoS events) e use PromQL para filtrar por interface ou origem IP. A vantagem do Grafana aqui é a capacidade de sobrepor camadas de dados, como comparar picos de tráfego com alertas de segurança.
7. Otimização e Boas Práticas
Para garantir que sua infraestrutura de monitoramento seja robusta, considere as seguintes práticas:
- Rotação de Dados: No arquivo
prometheus.yml</strong>, configure os flags <code>--storage.tsdb.retention.timee--storage.tsdb.retention.sizepara evitar que o disco encha. Um valor comum é 15 dias ou 50GB. - Alertas: Use o Alertmanager em conjunto com o Prometheus para enviar notificações (Slack, Email, PagerDuty) quando métricas críticas forem atingidas. O Grafana também pode configurar alertas visuais, mas o Alertmanager é mais adequado para a lógica de disparo.
- Segurança: Nunca exponha o Prometheus ou o Grafana diretamente à internet sem autenticação. Use Nginx com autenticação básica ou integre com OAuth2/SSO corporativo no Grafana.
Se você utiliza ferramentas de segurança como Wazuh, note que elas possuem seus próprios dashboards baseados no Elastic Stack. No entanto, é possível exportar métricas de eventos de segurança para o Prometheus (via Sidecar ou Exporters) e visualizá-las lado a lado com métricas de infraestrutura no Grafana, criando uma visão 360 graus da saúde do sistema.
8. Troubleshooting Comum
Durante a configuração, erros são frequentes. Se o Grafana mostrar "Data source error", verifique:
- O serviço Prometheus está rodando? Use
curl http://localhost:9090/-/healthy. Deve retornar "Prometheus Server is Healthy". - Há bloqueio de firewall? Certifique-se de que a porta 9090 é acessível pelo IP onde o Grafana roda.
- A URL está correta? Lembre-se do protocolo (http vs https) e da porta.
Se as métricas não aparecem no painel, verifique se os targets estão sendo "scraped". Acesse http://localhost:9090/targets no navegador. Se o status estiver "Down", verifique os logs do Prometheus em /var/log/syslog ou através do comando journalctl -u prometheus.
Conclusão
A integração entre Grafana e Prometheus estabelece uma base sólida para o monitoramento moderno. Ela permite que equipes de TI passem de uma postura reativa para proativa, identificando gargalos de performance e anomalias de segurança antes que se tornem incidentes críticos. Ao dominar essa stack, você ganha a flexibilidade necessária para integrar outras ferramentas como UptimeKuma, Akvorado ou Wazuh em um único painel unificado.
Lembre-se: o monitoramento é um ciclo contínuo. Configure, visualize, analise e ajuste suas queries e alertas regularmente para manter sua infraestrutura sob controle total.