Assine a Lista Dicas-L
Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.
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.phpestatus.php- responsável por criar os gráficos da interface de redeindex2.phpestatus2.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!
- http://oss.oetiker.ch/rrdtool/
- http://www.kadu.langoni.net/net_monitor-1.0.tgz cópia local
- 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.
Referências Adicionais
Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.
Avalie esta dica
Opinião dos Leitores
07 Nov 2011, 12:02
27 Out 2011, 11:34
Abraço
Lawrence Linder
27 Out 2011, 10:04
Abraço
27 Out 2011, 09:32
valew!
27 Out 2011, 09:31
Obrigado!
26 Out 2011, 19:20
26 Out 2011, 09:00
Abraço




