Introdução ao Monitoramento de Rede com Grafana
O monitoramento de infraestrutura moderna exige visibilidade em tempo real, métricas precisas e capacidade de correlacionar dados provenientes de múltiplas fontes. O Grafana consolidou-se como a ferramenta padrão da indústria para visualização de dados de séries temporais, oferecendo uma interface flexível que se integra perfeitamente com diversos backends de armazenamento, sendo o Prometheus o mais comum.
No contexto de redes, o desafio não é apenas saber se um dispositivo está online, mas entender o tráfego fluindo através dele, identificar anomalias de segurança e prever gargalos de capacidade. Neste tutorial, exploraremos como configurar um ecossistema robusto de monitoramento de rede utilizando Grafana em conjunto com ferramentas especializadas como Akvorado para telemetria de fluxo, Wazuh para segurança e detecção de intrusões, Uptime Kuma para monitoramento de disponibilidade e FastNetMon para mitigação de ataques DDoS.
Arquitetura da Solução
Antes de prosseguir com a instalação, é fundamental compreender como os componentes se comunicam. O Grafana atua como a camada de apresentação (frontend), enquanto as ferramentas listadas abaixo atuam como provedores de dados ou fontes de inteligência.
- Prometheus: Coleta e armazena métricas em formato de séries temporais. Serve como o backend principal para a maioria dos dashboards de infraestrutura.
- Akvorado: Um coletor de telemetria de rede baseado em Go, focado em fluxos NetFlow/IPFIX e sFlow. Ele processa dados de roteadores e switches, expondo métricas detalhadas de tráfego para o Prometheus.
- Wazuh: Plataforma de segurança unificada que coleta logs e integra-se ao Elastic Stack ou Loki, permitindo correlacionar eventos de rede com alertas de segurança.
- Uptime Kuma: Ferramenta leve e auto-hospedada para monitoramento de "uptime" (tempo ativo) de serviços via HTTP, TCP, ICMP e DNS.
- FastNetMon: Sistema de detecção e mitigação de DDoS que pode exportar métricas de tráfego anômalo para o Prometheus.
Etapa 1: Instalação do Grafana e Prometheus
A base da nossa solução consiste em instalar o servidor de visualização e o banco de dados de séries temporais. Utilizaremos Docker Compose para facilitar a orquestração, mas os comandos podem ser adaptados para instalações nativas.
Crie um arquivo chamado docker-compose.yml na raiz do seu projeto de monitoramento:
version: '3.8'
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
volumes:
- ./prometheus/config:/etc/prometheus
- prometheus_data:/prometheus
ports:
- "9090:9090"
restart: unless-stopped
grafana:
image: grafana/grafana:latest
container_name: grafana
volumes:
- grafana_data:/var/lib/grafana
- ./grafana/provisioning:/etc/grafana/provisioning
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin123
depends_on:
- prometheus
restart: unless-stopped
volumes:
prometheus_data:
grafana_data:
Após salvar o arquivo, inicie os containers com o comando:
docker-compose up -d
Acesse http://seu-servidor-ip:3000 no navegador. O login padrão é admin e a senha definida na variável de ambiente (neste exemplo, admin123). Recomenda-se alterar a senha imediatamente após o primeiro login.
Etapa 2: Configuração do Prometheus para Coleta de Métricas de Rede
O Prometheus precisa saber onde buscar os dados. Crie a estrutura de diretórios para configuração:
mkdir -p prometheus/config
touch prometheus/config/prometheus.yml
Edite o arquivo prometheus.yml para incluir os endpoints dos seus serviços de rede. Abaixo, um exemplo básico que aponta para o Akvorado e o Uptime Kuma:
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'akvorado'
static_configs:
- targets: ['akvorado-service:8080'] # Substitua pelo IP/hostname do Akvorado
- job_name: 'uptime-kuma'
static_configs:
- targets: ['uptime-kuma-service:3001'] # Endpoint de métricas do Kuma
- job_name: 'fastnetmon'
static_configs:
- targets: ['fastnetmon-service:9090']
Reinicie o Prometheus para aplicar as mudanças:
docker-compose restart prometheus
Etapa 3: Integração do Akvorado para Telemetria de Fluxos
O Akvorado é essencial para entender quem está conversando com quem na sua rede. Ele captura pacotes ou fluxos NetFlow dos seus equipamentos de borda e os exporta para o Prometheus.
Instale o Akvorado seguindo a documentação oficial, garantindo que ele tenha acesso aos espelhos de porta (SPAN ports) ou configurado para exportar NetFlow dos roteadores. No arquivo de configuração do Akvorado (akvorado.yml), certifique-se de habilitar a saída Prometheus:
exporters:
prometheus:
endpoint: "0.0.0.0:8080"
metrics:
- flow_count
- bytes_transferred
- packets_transferred
Com isso, o Prometheus começará a coletar métricas como akvorado_flow_bytes_total. Você poderá criar consultas PromQL no Grafana para visualizar o top talkers da sua rede.
Etapa 4: Monitoramento de Disponibilidade com Uptime Kuma
O Uptime Kuma oferece uma visão simplificada, porém poderosa, do status dos seus serviços críticos. Instale-o via Docker:
docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:latest
No painel do Uptime Kuma, adicione seus monitores (HTTP, TCP, Ping). Para integrar ao Grafana, ative a opção "Prometheus Metrics" nas configurações de cada monitor ou globalmente. Isso expõe um endpoint /api/metrics que o Prometheus pode raspar.
No Grafana, adicione uma nova variável para listar os monitores do Kuma, permitindo filtrar dashboards por serviço específico.
Etapa 5: Segurança e Logs com Wazuh
A segurança da rede é tão crítica quanto a performance. O Wazuh coleta logs de firewalls, IDS/IPS e endpoints. Para visualizar esses dados no Grafana, você tem duas opções principais:
- Integração via Elastic Stack: Se você já usa Elasticsearch para armazenar os logs do Wazuh, o Grafana pode se conectar diretamente ao Elasticsearch como fonte de dados.
- Wazuh-Exporters: Utilize exportadores personalizados que convertem alertas do Wazuh em métricas Prometheus.
Para a primeira opção, adicione o datasource Elasticsearch no Grafana. Crie dashboards para visualizar a frequência de alertas por severidade (Low, Medium, High, Critical) e por tipo de regra (ex: SSH brute force, port scan).
Exemplo de consulta para contar alertas críticos nas últimas 24h:
{__name__=~"wazuh_alerts_.*", severity="critical"} | count_over_time[1d]
Etapa 6: Detecção de Ataques com FastNetMon
O FastNetMon monitora o tráfego em tempo real e dispara alertas quando detecta padrões anômalos, como ataques DDoS. Configure-o para exportar métricas de status (ataque ativo ou inativo) e volume de tráfego suspeito.
No Grafana, crie um painel dedicado ao FastNetMon com:
- Gauge: Para mostrar o volume de tráfego em Gbps.
- Stat Panel: Com ícone vermelho/verde para indicar se um ataque está em andamento.
Configure alertas no Grafana usando a API do Prometheus. Se fastnetmon_attack_detected == 1, envie uma notificação via Slack, Email ou Telegram.
Etapa 7: Criação de Dashboards Personalizados
Agora que as fontes de dados estão configuradas, vamos criar um dashboard unificado. No Grafana, clique em + Create Dashboard.
Painel 1: Visão Geral de Tráfego
Adicione um gráfico do tipo "Time series". Use a fonte Prometheus e a consulta:
sum(rate(akvorado_flow_bytes_total[5m])) by (dst_ip)
Isso mostrará o throughput de rede dos últimos 5 minutos, agrupado pelo endereço IP de destino.
Painel 2: Status dos Serviços
Adicione um painel "Stat" ou "Singlestat". Selecione a fonte de dados do Uptime Kuma. Consulte a métrica kuma_up, onde 1 significa online e 0 offline.
Painel 3: Alertas de Segurança
Adicione uma tabela conectada ao Elasticsearch (Wazuh). Configure colunas para "Timestamp", "Rule ID", "Source IP" e "Description". Filtre apenas alertas de severidade alta nas últimas horas.
Etapa 8: Otimização e Boas Práticas
Para garantir que sua solução de monitoramento escale adequadamente, siga estas diretrizes:
- Rotação de Dados no Prometheus: Configure o
--storage.tsdb.retention.timepara limitar a retenção de dados históricos (ex: 15 dias), economizando disco. - Agregação de Métricas: No Akvorado, agregue fluxos por sub-rede ou VLAN antes de enviar ao Prometheus se você tiver milhões de flows por segundo. Isso reduz a cardinalidade e melhora a performance.
- Alertas Inteligentes: Não configure alertas para cada métrica individualmente. Use o Grafana Alerting para criar regras baseadas em tendências (ex: "tráfego aumentou 20% em relação à média da semana").
- Segurança das Credenciais: Armazene as senhas do Prometheus e das fontes de dados usando variáveis de ambiente ou segredos gerenciados, nunca no arquivo
grafana.ini.
Conclusão
A combinação de Grafana com ferramentas especializadas como Akvorado, Wazuh, Uptime Kuma e FastNetMon oferece uma visão 360 graus da sua infraestrutura de rede. Você não apenas monitora a disponibilidade, mas entende o comportamento do tráfego, detecta ameaças em tempo real e mitiga ataques antes que impactem os usuários finais.
A chave para o sucesso deste projeto é a iteração contínua. Comece com os dashboards básicos de uptime e performance, e gradualmente adicione camadas de telemetria detalhada e inteligência de segurança. Com essa abordagem, sua equipe de TI terá a visibilidade necessária para manter a rede rápida, segura e confiável.
Lembre-se de documentar suas consultas PromQL e dashboards exportados em formato JSON para facilitar a replicação em ambientes de teste ou produção. A padronização é fundamental para a governança de infraestrutura.