Akvorado: Coleta de Fluxos NetFlow e IPFIX para Monitoramento

10 min de leitura Monitoramento de Redes
Akvorado: Coleta de Fluxos NetFlow e IPFIX para Monitoramento

Akvorado é uma ferramenta de código aberto projetada para coletar, armazenar e visualizar fluxos de rede (NetFlow v9, IPFIX, sFlow). Diferente de soluções tradicionais que dependem de bancos de dados relacionais pesados ou sistemas proprietários, o Akvorado utiliza o Prometheus como motor de armazenamento e o Grafana para visualização. Essa arquitetura moderna torna a solução extremamente escalável, leve e ideal para profissionais de TI que já operam em ambientes DevOps ou SRE (Site Reliability Engineering).

Neste tutorial, você aprenderá a instalar e configurar o Akvorado em um ambiente Linux, integrando-o com Grafana para criar dashboards de monitoramento de rede. O foco é garantir visibilidade completa sobre o tráfego da sua infraestrutura, identificando gargalos, uso excessivo de banda e comportamentos anômalos.

Pré-requisitos e Arquitetura

Antes de iniciar a instalação, certifique-se de que você possui acesso root ou sudo ao servidor onde o Akvorado será instalado. O sistema operacional recomendado é uma distribuição Linux recente, como Ubuntu 22.04 LTS ou Debian 12.

A arquitetura do Akvorado consiste em três componentes principais:

  • Akvorado Collector: Processo responsável por receber os pacotes de fluxo via UDP das interfaces de rede.
  • Prometheus: Banco de dados de séries temporais que armazena as métricas extraídas dos fluxos.
  • Grafana: Interface web para visualização e análise dos dados armazenados no Prometheus.

Esta abordagem elimina a necessidade de bancos de dados SQL complexos, permitindo que você consulte petabytes de dados de fluxo com latência sub-segundo. Além disso, ao usar Prometheus, você ganha compatibilidade nativa com o ecossistema CNCF, podendo integrar facilmente alertas e correlacionar dados de rede com métricas de aplicações.

Passo 1: Instalação do Akvorado

O Akvorado é distribuído como um binário único em linguagem Go, o que simplifica drasticamente a instalação. Não há dependências externas complexas, exceto pelo Prometheus e Grafana, que instalaremos separadamente.

Acesse a página de releases do repositório oficial no GitHub ou utilize o comando abaixo para baixar a versão mais recente estável. Verifique sempre a última versão disponível na documentação oficial para garantir compatibilidade com suas versões de NetFlow/IPFIX.

# Crie um diretório dedicado para os binários
sudo mkdir -p /opt/akvorado

# Baixe o binário do Akvorado (ajuste a URL conforme a versão mais recente)
wget https://github.com/akhilgkrishnan/akvorado/releases/latest/download/akvorado-linux-amd64.gz

# Descompacte o binário
gunzip akvorado-linux-amd64.gz

# Mova para o diretório criado e adicione permissão de execução
sudo mv akvorado-linux-amd64 /opt/akvorado/akvorado
sudo chmod +x /opt/akvorado/akvorado

Com o binário instalado, você precisa configurar onde os dados serão armazenados e como o serviço será exposto. Crie um arquivo de configuração YAML simples para testar a funcionalidade básica.

sudo nano /etc/akvorado/config.yaml

Insira a seguinte configuração padrão, que direciona os dados para um banco de dados local em disco:

database:
  type: tsdb
  tsdb:
    dir: /var/lib/akvorado/tsdb

collector:
  listen: ":2055"
  format: netflow9

Nesta configuração, o Akvorado ouvirá na porta :2055 (porta padrão para NetFlow v9 e IPFIX) e usará o formato de dados nativo do Prometheus no backend.

Passo 2: Instalação e Configuração do Prometheus

O Akvorado não armazena os dados brutos; ele escreve métricas no formato Prometheus Remote Write. Portanto, você precisa de uma instância do Prometheus configurada para receber esses dados.

Instale o Prometheus usando o gerenciador de pacotes da sua distribuição ou baixe o binário diretamente. Para ambientes de produção, recomenda-se usar containers Docker, mas aqui utilizaremos a instalação nativa para fins didáticos.

sudo apt-get update
sudo apt-get install prometheus

Após a instalação, edite o arquivo de configuração do Prometheus em /etc/prometheus/prometheus.yml. Você deve adicionar uma seção remote_write para apontar para o endpoint do Akvorado.

global:
  scrape_interval: 15s

storage:
  tsdb:
    retention.size: 10GB # Ajuste conforme sua necessidade de armazenamento

remote_write:
  - url: "http://localhost:9464/api/v1/write"
    remote_timeout: 30s

Reinicie o serviço do Prometheus para aplicar as alterações:

sudo systemctl restart prometheus
sudo systemctl enable prometheus

Passo 3: Instalação e Configuração do Grafana

O Grafana é a camada de visualização. Ele se conectará ao Prometheus para ler as métricas escritas pelo Akvorado.

sudo apt-get install -y apt-transport-https software-properties-common
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
sudo apt-get update
sudo apt-get install grafana

Inicie o serviço do Grafana:

sudo systemctl start grafana-server
sudo systemctl enable grafana-server

Acesse a interface web do Grafana em http://SEU_IP:3000. O login padrão é geralmente admin/admin (será solicitado alterar a senha no primeiro acesso).

No menu lateral, vá em Configuration > Data Sources e adicione uma nova fonte de dados do tipo Prometheus. No campo URL, insira http://localhost:9090. Clique em "Save & Test". Se a conexão for bem-sucedida, o Grafana está pronto para consumir os dados do Akvorado.

Passo 4: Configurando o Coletor como Serviço Systemd

Agora que todos os componentes estão instalados, precisamos gerenciar o processo do Akvorado de forma robusta. Crie um arquivo de unidade systemd para manter o serviço em execução e reiniciá-lo automaticamente em caso de falhas.

sudo nano /etc/systemd/system/akvorado.service

Insira a seguinte configuração:

[Unit]
Description=Akvorado NetFlow/IPFIX Collector
After=network.target prometheus.service

[Service]
Type=simple
User=root
ExecStart=/opt/akvorado/akvorado --config /etc/akvorado/config.yaml
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target

Habilite e inicie o serviço:

sudo systemctl daemon-reload
sudo systemctl enable akvorado
sudo systemctl start akvorado

Verifique o status do serviço para garantir que não há erros de inicialização:

sudo systemctl status akvorado

Passo 5: Configurando os Dispositivos de Rede (Roteadores/Switches)

O Akvorado está pronto para receber fluxos, mas seus dispositivos de rede ainda não sabem enviar os dados para ele. Você precisa configurar o NetFlow ou IPFIX nos seus roteadores e switches para apontar para o IP do servidor onde o Akvorado está rodando.

A configuração varia conforme o fornecedor (Cisco, Juniper, MikroTik, etc.), mas a lógica é universal: especifique o protocolo, a versão (geralmente v9 ou IPFIX) e o destino (seu servidor).

Exemplo para um switch Cisco IOS:

interface GigabitEthernet0/1
 ip flow ingress
 ip flow egress

ip flow-export version 9
ip flow-export destination SEU_IP_SERVIDOR 2055

Para equipamentos MikroTik, a configuração seria similar via terminal:

/system router
set netflow-target=SEU_IP_SERVIDOR
/interface ethernet set [find] netflow-target=SEU_IP_SERVIDOR

Após aplicar as configurações nos dispositivos, aguarde alguns minutos para que os pacotes de fluxo comecem a chegar no servidor.

Passo 6: Visualização e Dashboards no Grafana

Agora vem a parte mais recompensadora. Com o tráfego fluindo, você pode criar dashboards personalizados. O Akvorado expõe métricas específicas que permitem análises profundas.

No Grafana, crie um novo dashboard e adicione um painel. Utilize a query builder do Prometheus para explorar as métricas disponíveis. Algumas métricas comuns exportadas pelo Akvorado incluem:

  • akvorado_netflow_bytes_total: Volume total de bytes por fluxo.
  • akvorado_netflow_packets_total: Contagem de pacotes.
  • akvorado_netflow_src_addr e akvorado_netflow_dst_addr: Endereços IP de origem e destino.

Você pode criar gráficos de área para visualizar o uso de banda ao longo do tempo, filtrando por IP de origem ou porta. Por exemplo, para ver o tráfego total de bytes nos últimos 24 horas:

sum(irate(akvorado_netflow_bytes_total[5m])) by (instance)

O Akvorado também oferece dashboards pré-configurados que podem ser importados. Verifique a documentação oficial para IDs de dashboard prontos para uso, o que economiza tempo na configuração inicial.

Integração com Outras Ferramentas de Monitoramento

Uma das grandes vantagens do Akvorado é sua interoperabilidade. Ele não vive isolado. Aqui estão algumas sugestões de como integrá-lo ao seu ecossistema existente:

Wazuh e Segurança

Você pode enviar os logs ou métricas do Akvorado para o Wazuh para detecção de ameaças. Por exemplo, configurar regras que alertem quando um único IP gerar um volume anormal de tráfego, indicando possível DDoS ou varredura de portas.

Uptime Kuma e Health Checks

O Uptime Kuma pode monitorar a disponibilidade do serviço do Akvorado. Configure um monitoramento HTTP ou TCP na porta 2055 para garantir que o coletor está respondendo. Se o coletor cair, você perde visibilidade de rede.

FastNetMon e Detecção de Anomalias

Embora o Akvorado seja focado em coleta e visualização, ele pode alimentar ferramentas como FastNetMon (agora parte do ecossistema NetData ou integrado via APIs) para bloqueio automático de tráfego malicioso em tempo real. O fluxo de dados é: Dispositivo -> Akvorado -> Prometheus -> FastNetMon (via API) -> Firewall.

Prometheus e Alertmanager

Utilize o Prometheus Alertmanager para criar alertas sofisticados. Defina regras que disparem notificações no Slack, Email ou PagerDuty quando o uso de banda ultrapassar certos limites. Por exemplo:

ALERT HighBandwidthUsage
  IF sum(rate(akvorado_netflow_bytes_total[5m])) > 1000000000
  FOR 2m
  LABELS { severity="warning" }
  ANNOTATIONS { summary="Alto uso de banda detectado", description="{{ $labels.instance }} está usando mais de 1GB/s." }

Considerações Finais e Boas Práticas

O Akvorado é uma ferramenta poderosa que moderniza a gestão de redes. No entanto, há pontos de atenção importantes:

  1. Capacidade de Armazenamento: O Prometheus armazena dados em disco. Monitore o uso de espaço em /var/lib/prometheus. Defina políticas de retenção adequadas para evitar que o disco encha.
  2. Performance da CPU: A coleta de fluxos é intensiva em CPU, especialmente em links de alta velocidade (10Gbps+). Se você notar gargalos no coletor, considere escalar horizontalmente ou usar balanceamento de carga entre múltiplos coletores Akvorado.
  3. Segurança: A porta 2055 é exposta para receber fluxos. Certifique-se de que apenas redes confiáveis possam enviar dados para essa porta usando firewall (iptables/nftables).

Ao combinar o Akvorado com Grafana, você obtém uma visão unificada e poderosa da sua rede. A flexibilidade do Prometheus permite que você vá além do básico, integrando dados de rede com métricas de aplicações, criando um panorama completo da saúde da sua infraestrutura digital.

Para dúvidas específicas sobre configurações avançadas ou integração com provedores de nuvem, consulte a documentação oficial do projeto e a comunidade ativa no GitHub. A manutenção proativa de seu monitoramento é essencial para garantir a disponibilidade e performance dos seus serviços.

Compartilhar: Link copiado!
Esse tutorial foi útil?

Comentários (0)

Seja o primeiro a comentar.

Deixe seu comentário

Seu comentário será analisado antes de ser publicado.

0/2000