Vous êtes sur la page 1sur 7

Monitoramento de trfego no CentOS com MRTG

09 de junho de 2009 por Jlio Henrique


O MRTG um pacote escrito em Perl que faz a coleta de dados via SNMP.
Por isso, o equipamento a ser monitorado precisar oferecer suporte a
este protocolo. Apesar de ser possvel utilizar o MRTG para
monitoramento de qualquer equipamento que suporte o protocolo SNMP,
este artigo visa o monitoramento de equipamentos de rede, ou seja,
basicamente switches e roteadores, e cobre a instalao e configurao
do MRTG na distribuio CentOS.
Instalao
Para instalar e utilizar o MRTG no CentOS, voc precisa de uma
verso do Perl instalada no equipamento. Na maioria das instalaes
padro, o Perl j se encontra disponvel. Caso no esteja, o utilitrio
de obteno de pacotes da distribuio CentOS, o yum, se encarregar de instal-lo, uma vez que este analisa as
dependncias do pacote do MRTG.
interessante lembrar que, diferente das distribuies Debian e derivadas, nas quais necessrio executar o comando apt-get
update para atualizao da lista de pacotes instalveis, o comando yum pode ser executado diretamente, sem a necessidade
de executar yum update. Somente para informao, o comando yum update ir atualizar todos os pacotes instalados na
mquina.
Da mesma maneira, so necessrias algumas bibliotecas para que o MRTG possa gerar grficos de estatsticas de trfego: gd,
libpng e zlib, que o yum tambm se encarrega de instalar, caso no estejam instaladas.
Uma vez instalado o sistema operacional (CentOS), obtm-se acesso de root mquina, logando-se como tal, ou com o
comando su.
Como utilizaremos os grficos em HTML gerados pelo MRTG, vamos tambm
fazer a instalao de um webserver nesta mquina. Por ser o mais
utilizado, vamos cobrir o Apache neste artigo. Caso ele no esteja instalado, basta usar o comando:
# yum install httpd
Isso instalar o Servidor Web Apache. Em seguida, podemos realizar a
atualizao do pacote do MRTG (e, conseqentemente, de suas
dependncias):
# yum install mrtg
O yum ir instalar o pacote, criar o diretrio /etc/mrtg e o arquivo /etc/mrtg/mrtg.conf,
no qual devem ser armazenadas as configuraes dos hosts a serem
monitorados. Particularmente, eu prefiro criar um arquivo de
configurao do MRTG para cada host. Veremos agora como criar os
arquivos de configurao.
Configurao
Aps a instalao dos pacotes, hora de partir para a criao dos arquivos de configurao dos hosts que o MRTG ir
monitorar.
O MRTG possui um utilitrio que auxilia na criao dos arquivos de configurao. Trata-se do cfgmaker, que possui a seguinte
sintaxe:
cfgmaker --output /etc/mrtg/router_abc_xyz.cfg
community@router.abc.xyz
Onde:
o parmetro output define o arquivo de configurao que ser gerado pelo cfgmaker;
community a comunidade SNMP do host, que router.abc.xyz.
Ateno: para que o nome do host seja resolvido, o equipamento com o
MRTG deve estar corretamente configurado com o(s) nome(s) do(s)
servidor(es) DNS (arquivo /etc/resolv.conf); alm disso, necessrio
registro no servidor DNS para o host, associando-o com o respectivo
endereo IP. Tambm pode ser utilizada uma entrada para o mesmo no
arquivo /etc/hosts ou, ainda, o endereo IP no lugar do nome.
Exemplo: vamos supor que tenhamos um roteador Cisco 2500 com endereo IP 192.168.1.10 e comunidade SNMP public. O
comando cfgmaker ficaria:
cfgmaker --output /etc/mrtg/192.168.1.10.cfg public@192.168.1.10
Ser gerado o arquivo 192.168.1.10.cfg como sada (em /etc/mrtg/).
Este arquivo contm as informaes necessrias para que sejam gerados
os grficos. Porm, existem alguns parmetros que podem ser
configurados no arquivo para melhor visualizao. Estes parmetros so
definidos nas sees Global Config Options e Global Defaults, conforme abaixo:
WorkDir: /var/www/mrtg
Define qual ser a pasta de trabalho do MRTG; ou seja, a pasta onde
sero salvos os arquivos gerados pelo MRTG (logs, arquivos HTML e PNG
etc.). recomendvel criar uma subpasta para cada mquina.
Options[_]: growright, bits
So duas opes em uma (mas podem ser configuradas separadamente): growright
faz com que o grfico caminhe da direita para a esquerda, fazendo com
que o horrio atual fique direita no grfico; j o parmetro bits
define que o grfico trar as informaes em bits (por padro, as
informaes so expressas em bytes).
Refresh: 600
o intervalo, em segundos, para o navegador atualizar a pgina. Por padro, 300 segundos (5 minutos).
Interval: 10
o intervalo, em minutos, para o MRTG buscar novas informaes estatsticas junto ao host. Por padro, 5 minutos.
Language: brazilian
Idioma que ser utilizado nos arquivos HTML gerados pelo MRTG.
RunAsDaemon: Yes
Para rodar o MRTG como daemon. Ou seja, o MRTG ficar carregado, e vai buscar os dados do host conforme o parmetro
Interval (ou nos 5 minutos padro).
Ajustes
Iremos criar um usurio para executar o MRTG:
useradd -d /var/www/mrtg -s /bin/false mrtg
Atravs dos parmetros -d e -s definimos, respectivamente, o diretrio home e o Shell padro do usurio mrtg.
Alm disso, necessrio atribuir a propriedade dos diretrios /var/www/mrtg e /etc/mrtg para o recm-criado usurio mrtg.
chown mrtg /var/www/mrtg -Rv
chown mrtg /etc/mrtg -Rv
Desta forma, este usurio ter permisso para criar os grficos que
sero visualizados via browser, e demais arquivos de controle.
Alm disso, tambm recomendvel mover para outro lugar os arquivos /etc/mrtg/mrtg.cfg e /etc/cron.d/mrtg;
o primeiro, para que o script que ir inicializar o MRTG (que veremos
mais adiante) no tente utilizar este arquivo de configurao (que
estar vazio), e o segundo para que o cron no tente iniciar o MRTG com
este mesmo arquivo de configurao a cada cinco minutos.
Colocando para funcionar
Com o arquivo (ou arquivos) de configurao pronto(s), hora de
colocar o MRTG para monitorar os seus hosts. Isso relativamente
fcil. O MRTG espera que a varivel LANG esteja definida como C; caso o sistema tenha a varivel configurada de forma
diferente, LANG=C deve ser informado antes da execuo do MRTG, conforme abaixo:
env LANG=C mrtg /etc/mrtg/192.168.1.10.cfg
Essa linha de comando iniciar o MRTG como root. Se voc configurou a opo RunAsDaemon, no ser necessrio fazer
mais nada.
Porm, ser necessrio digitar esta linha de comando sempre que a
mquina for reiniciada. Alm disso, ser necessrio digitar uma linha
de comando para cada arquivo de configurao (caso voc tenha optado
por criar um arquivo por host). Para automatizar a tarefa, pode-se
criar um script de inicializao, adicion-lo ao diretrio /etc/init.d/ e criar os links simblicos para os runlevels que sero
utilizados.
O script abaixo ir inicializar todos os arquivos com extenso ,.cfg localizados em /etc/mrtg:
#!/bin/bash
#
# mrtgd Script para iniciar e parar monitorao via MRTG

# Variveis
export MRTG=/usr/bin/mrtg # Caminho do executvel do MRTG
export CFG=/etc/mrtg # Caminho dos arquivos de configurao do
MRTG
export MRTGUSER=mrtg # Usurio do MRTG
export LANG=C

#################################
# Declarao das Funes #
#################################

# Mostra a sintaxe do comando
Uso(){
echo -e "\nUtilize $0 {start|stop|restart|status}\n"
return 0
}

# Inicia o MRTG
Iniciar(){
echo -e "\nIniciando MRTG..."
for cfg in `ls $CFG/*.cfg`; do
$MRTG --user=$MRTGUSER $cfg &> /dev/null
done
echo -e "\nMRTG iniciado!"
return 0
}

# Encerra o MRTG
Parar(){
echo -e "\nParando MRTG..."
for dotpid in `ls $CFG/*.pid 2> /dev/null`; do
kill -9 `cat $dotpid` &> /dev/null # -9 para que o MRTG no
exiba mensagem de erro
echo "Finalizado processo `cat $dotpid`"
rm -f $dotpid
done
if [ "$dotpid" = "" ]; then
echo -e "\nErro! MRTG no est em execuo\n"
else
echo -e "\nMRTG Finalizado!\n"
fi
return 0
}
# Verifica se o MRTG est rodando e devolve o PID
Status(){
for cfg in `ls $CFG/*.cfg`; do
mrtgpid=$(ps ax | grep -v "grep" | grep "$cfg" | tr -s " " | cut -f2 -
d" ")
if [ "$mrtgpid" = "" ]; then
echo -e "\nO MRTG no est em execuo no momento."
return 0
fi
echo -e "\nMRTG em execuo\tCFG: $cfg\tProcesso:
$mrtgpid"
done
echo ""
return 0
}

####################################
# Trmino da declarao de Funes #
####################################

# Verifica se recebeu argumento na linha de comando
if [ "$#" = "0" ]; then
Uso
exit
fi


# Teste das opes recebidas via linha de comando
while [ "$1" ]; do
case $1 in
status) Status;;
start) Iniciar;;
stop) Parar;;
restart) Parar && Iniciar;;
*) echo ""
echo "ERRO! Opo invlida: $1"; Uso;;
esac
shift
done
Uma vez criado o script em /etc/init.d/ (que eu chamei de mrtgd), tambm ser necessrio criar os links para os runlevels
apropriados (no exemplo abaixo, o 3):
ln -s /etc/init.d/mrtgd /etc/rc.d/rc3.d/S99mrtgd
Se forem exibidas mensagens de erro na criao de alguns arquivos, verifique as permisses nos diretrios /etc/mrtg/ e
/var/www/mrtg/.
Testando
Para verificar os grficos gerados pelo MRTG, basta acessar o endereo
do servidor web, atravs do browser. Supondo que este seja
192.168.1.100, basta apontar o browser para:
http://192.168.1.100/mrtg
muito provvel que voc receba um erro 403 no browser. Se o Apache
estiver com as configuraes padro, o acesso liberado somente ao
localhost (127.0.0.1); alm disso, o Apache no permitir que voc
visualize a lista de pastas e arquivos em /mrtg.
Neste caso, voc deve alterar o arquivo de configurao do Apache para o MRTG, em /etc/httpd/conf.d/mrtg.conf, adicionando
as opes assinaladas:
#
# This configuration file maps the mrtg output (generated daily)
# into the URL space. By default these results are only accessible
# from the local host.
#
Alias /mrtg /var/www/mrtg

< Location /mrtg >
Options Indexes <---
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from 192.168.1. <---
Allow from ::1
# Allow from .example.com
< /Location >
Quando tentar abrir novamente o endereo do servidor web, ir
receber uma lista de arquivos HTML e figuras. Para visualizar o grfico
referente a um host especfico, deve-se procurar o respectivo arquivo
HTML.
Para facilitar a visualizao, pode-se criar um arquivo de ndice para os grficos, atravs do utilitrio indexmaker:
indexmaker --output=/var/www/mrtg/192.168.1.10/index.html
/etc/mrtg/192.168.1.10.cfg
Onde:
o parmetro output define o arquivo de ndice que ser gerado pelo indexmaker;
Aps gerar o arquivo de ndice, basta acessar o endereo no browser:
http://192.168.1.100/mrtg/192.168.1.10
E visualizar os grficos.
Concluso e referncias
Com o MRTG possvel realizar o monitoramento de qualquer equipamento que oferea suporte ao protocolo SNMP.
A documentao do MRTG est no site oficial.

Vous aimerez peut-être aussi