De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.


Gráficos de Consumo de Rede em Tempo Real

Colaboração: Kadu Langoni

Data de Publicação: 26 de outubro de 2011

Vou explicar em detalhes, nas linhas abaixo, como montar alguns gráficos de consumo de rede em tempo real. O principal objetivo é, como administrador de redes, ter uma visualização melhor do que acontece de tráfego, mas de forma simples, sem ter que acessar ao servidor e usar o iptraf ou sem ter que esperar o tempo médio de 5 muitos do cacti/MRTG. Sem mais demoras vamos lá!

Motivação

Há mais ou menos três anos atrás tive a oportunidade de trabalhar com equipamentos de rádio Nanostation da Ubitiqui e um detalhe sempre me chamou a atenção; o monitoramento de tráfego. Ele traça um gráfico simples, com duas linhas, que apresentam o consumo de rede de cada interface.

Procurei no google, nestes últimos anos, uma forma semelhante de fazer, algum sistema pronto, e nada. Chegou o dia de colocar a mão na massa!

Primeiro eu tentei com RRD[1], o resultado ficou bom, mas bem aquem das minhas expectativas, eu queria fazer exatamente como no nano, o gráfico na tela, atualizando os pontos a cada X segundos, e não o reload de uma imagem a cada X segundos.

Resolvi então, através da engenharia reversa, criar um sistema semelhante.

Depois de alguns dias entendendo melhor javascript, jquery, flotr e outras coisinhas mais, consegui gerar um código funcional que permite fazer o gráfico de duas maneiras: usando o /proc/net/dev e usando regras do iptables.

Funcionamento

A ideia é bem simples, ler um contador e marcar pontos em um gráfico.

O download do código pode ser feito aqui.[2]

Você precisará de um servidor web com suporte a php.

O arquivo, após descompactado, irá criar o diretório monitor, que deve ser colocado onde possa ser acessado via navegador.

O sistema funciona com dois conjuntos de arquivos:

  • index.php e status.php - responsável por criar os gráficos da interface de rede
  • index2.php e status2.php - responsável por criar os gráficos baseado em regras do iptables.

index.php, no começo do arquivo tem a variável iface[]. Ajuste-a para as interfaces que deseja monitorar. Está com eth1 e eth2 comentado (// no começo). Depois no arquivo status.php você ajusta a variável path com o caminho onde ele vai encontrar o script get_net_info.sh, que está na raiz do diretório monitor.

No index2.php você ajusta a variável $serie_nome de modo a informar quantas são e quais são as origens de dados. No status2.php você ajusta as variáveis de captura do iptables

No iptables crie duas chains personalizadas chamadas YLOG e YJUMP (o nome é sugestivo, basta apenas modificar o status2.php de acordo com os nomes que vc criar. Eu fiz a seguinte adição de regras

  $IPT -t filter -N YLOG
  $IPT -t filter -N YJUMP
  #WEB
  iptables -t filter -A YLOG -m multiport -p tcp --sport 80,443 -j YJUMP
  iptables -t filter -A YLOG -m multiport -p tcp --dport 80,443 -j YJUMP
  #SMTP
  iptables -t filter -A YLOG -m multiport -p tcp --sport 25,587 -j YJUMP
  #POP/IMAP
  iptables -t filter -A YLOG -m multiport -p tcp --sport 110,143,993,995 -j
  YJUMP
  
  iptables -t filter -I INPUT -j YLOG
  iptables -t filter -I OUTPUT -j YLOG
  iptables -t filter -I FORWARD -j YLOG

A segunda chain personalizada foi utilizada apenas para evitar o uso do jump LOG, que encheu meu HD de um dia para o outro, desta modo a contagem ainda funciona e não gera nenhuma interferência nas regras do firewall.

É MANDATÓRIO que estas regras sejam as primeiras de cada uma das chains da tabela filter.

Foi tudo preparado no fim de semana e pode conter bugs e código mal escrito. Quem quiser contribuir com modificações e sugestões deve se sentir a vontade!

Em [3] encontra-se a documentação da API que desenha os gráficos, você pode utilizá-la para personalizar a visualização dos gráficos.

Abraços a todos!

  1. http://oss.oetiker.ch/rrdtool/
  2. http://www.kadu.langoni.net/net_monitor-1.0.tgz cópia local
  3. http://flot.googlecode.com/svn/trunk/API.txt
Kadu Langoni é usuário de Linux desde 1998, participante ativo da comunidade. Desde 2000 trabalha com administração de servidores Linux em data centers e provedores de internet, de São Paulo e Espírito Santo, onde desenvolveu aplicações com firewall e ferramentas de gerenciamento para os principais serviços.Como instrutor ministrou cursos de introdução ao Linux, cursos de Linux para Administradores, e treinamentos específicos nas implantações realizadas nas empresas em que trabalha.

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


Veja a relação completa dos artigos de Kadu Langoni