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.
Monitoramento do Uso da Rede em Sistemas Unix Like por meio do BandwidthD
Colaboração: José Messias Alves da Silva
Data de Publicação: 18 de Junho de 2006
O BandwidthD é um sistema de monitoramento que rastreia o uso de subredes
TCP/IP e constrói arquivos HTML com gráfico para mostrar a utilização da
rede. Os gráficos são construídos individualmente para cada IP e mostra
sua utilização em vários períodos de tempo. Ele usa uma legenda de cores
para demonstrar o tráfego em diferentes protocolos. Diferentemente do MRTG
(http://people.ee.ethz.ch/~oetiker/webtools/mrtg/), ele varre cada endereço
IP e subredes e não o estado dos links. Há dois modos de configuração, o
modo estático e o modo em banco de dados. O modo estático é rápido e fácil
de configurar e tem poucas dependências. O modo banco de dados suporta
filtragem por subrede, sensores, relatórios customizados e intervalos, e
pode processar milhares de IPs eficientemente. A utlização da rede pode ser
guardada em formato CDF ou em um banco de dados como PostGreSQL. Nesta dica
nos ateremos a configuração em modo estático. BandwidthD pode ser compilado
para várias plataformas operacionais Unix Like:
ix86 |
Solaris 9 |
|
Debian 3.0 |
|
Fedora Core 2 |
|
OpenBSD 3.8 |
|
FreeBSD 5.6 |
|
NetBSD 3.0 |
AMD64 |
Fedora Core 3 |
PPC G4 |
MacOSX 10.2 |
Para instalação e uso do Sistema é necessário que um servidor web esteja
instalado para exibição dos relatórios em HTML, de preferência o Apache . Caso
fosse utilizado modo banco de dados utilizando PostGreSQL seria necessária a
instalação também de PHP4 ou posterior. É também necessário que as seguintes
bibliotecas estejam devidamente instaladas:
Instalação
Todos os passos devem ser efetuados como root e dentro do diretório desse
usuário. Para esta dica foi utilizada a versão 2.0.1 baixada em:
http://ufpr.dl.sourceforge.net/sourceforge/bandwidthd/bandwidthd-2.0.1.tgz
Após baixada a versão, realiza-se os seguintes passos:
# tar -xvzf bandwidthd-2.0.1.tgz
# cd bandwidthd-2.0.1
# ./configure && make install
Após a instalação, passemos para a configuração.
Configuração
O arquivo de configuração do BandwidthD é relativamente pequeno, possuindo
poucas opções de configuração. Deve-se configurar basicamente a rede e subredes
que serão monitoradas e por qual(is) interfaces. O arquivo de configuração
encontra-se em /etc/bandwidthd/bandwidthd.conf . Abaixo um exemplo do arquivo:
####################################################
# Bandwidthd.conf
# Exemplo de Configuração
# Subredes que o sistema irá capturar informações.
# O tráfego que não corresponder a nenhuma dessas redes
# será ignorado.
# A Sintaxe é o IP da Subrede e a máscara
subnet 10.0.0.0 255.0.0.0
subnet 192.168.0.0/24 # Pode ser utilizada
# esse terminologia também
# Interface a ser escutada
# Bandwidthd escuta na primeira que detecta por default.
# Pode-se rodar "bandwidthd -l" para listar os dispostivos
# que ele detectou.
dev "eth0"
###################################################
# As opções abaixo não são frequentemente modificadas
# Mas segue algumas explicações
###################################################
# Intervalo em minutos ele aguarda antes de
# gerar um novo gráfico. Normalmente se utiliza algo
# entre 2.5 e 5.0
#skip_intervals 0
# Aqui é quantidade de kbytes que devem ser transferidos por
um ip antes gerar seu gráfico
#graph_cutoff 1024
# Coloca a interface em modo promíscuo, pegando até mesmo
# pacotes que não são roteados pela máquina
#promiscuous true
# Criar o log das informações em um arquivo
# CDF em htdocs/log.cdf
#output_cdf false
# Ler o arquivo CDF anterior ao iniciar
#recover_cdf false
# Formato da String de Filtro Libpcap usada para controlar
# o que o bandwidthd vasculhará. Normalmente se inclui
# a palavra "ip" dentro da string para evitar problemas
# estranhos. Esta opção é pouco usada. Exemplo: filter
# "ip and host 192.168.0.1"
#filter "ip"
# Desenha os gráficos. O default é true. Normalmente
# só se utiliza false quando se deseja apenas guardar
# os logs cdf em um banco de dados sem gerar gráficos.
# Quando se põe false, o BandwidthD usa muito menos da CPU
# e da memória RAM. graph true
# Ajusta o valor em segundos de META REFRESH, que é
# atualização do gráficos (default 150, use 0 para
# desabilitar).
#meta_refresh 150
Rodando
Após realizada a compilação com sucesso, vamos botar pra rodar.
# ./bandwidthd
Em seguida, verificando se foi carregado corretamente.
# ps ax
Se não ocorrer "bandwidthd <defunct>", signifca que não há nenhum erro
de configuração e o sistema está rodando normalmente. Caso contrário,
verifica-se novamente os detalhes da configuração e tenta-se novamente.
Ajustes
O BandwidthD gera as imagens e o código HTML no diretório
/var/lib/bandwidthd/htdocs/.
Para a exibição das páginas, é necessário que
se crie um link simbólico /var/www/bandwidthd/.
# ln -s /var/lib/bandwidthd/htdocs/ /var/www/bandwidthd/
Para finalizar os logs, normalmente se reinicia o BandwidthD. Pode-se colocar
para realizar isto automaticamente inserindo a seguinte a linha no crontab:
0 0 * * * * /bin/kill -HUP `cat /var/run/bandwidthd.pid`
Posteriormente, pode-se criar um script para organizar os logs e para
inicializar e parar o sistema.
Para finalizar, pode-se testar o sistema acessando o servidor web no diretório
bandwidthd.
http://localhost/bandwidthd/
Considerações Finais
Alguns questionam o fato de o BandwithD consumir muito recursos da
CPU. Entretanto, isso não constitui uma verdade, visto que baseado em
testes realizados, o consumo assemelha-se a de qualquer outro aplicativo
de monitoramento. Pode ser que em versões anteriores isto tenha acontecido,
porém, atualmente, isso com certeza não ocorre. Espera-se que a instalação
desse sistema seja de grande utilidade para Administradores de Redes que
necessitam frequentemente estar averiguando se a rede está sendo utilizada
de forma correta e eficiente.