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.