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.
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á!
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.
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!
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.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários