terça-feira, julho 21, 2009

iMasters - Monitoramento de tráfego no CentOS com MRTG - Linux

Terça-feira, 09/06/2009 - 10:00 - Por Júlio Henrique Conceição
Seções relacionadas:
Monitoramento de tráfego no CentOS com MRTG

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 aeste protocolo. Apesar de ser possível utilizar o MRTG paramonitoramento 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 instalação e configuraçãodo MRTG na distribuição CentOS.

Instalação

Para instalar e utilizar o MRTG no CentOS, você precisa de umaversão do Perl instalada no equipamento. Na maioria das instalaçõespadrão, o Perl já se encontra disponível. Caso não esteja, o utilitáriode obtenção de pacotes da distribuição CentOS, o yum, se encarregará de instalá-lo, uma vez que este analisa as dependências do pacote do MRTG.

É interessante lembrar que, diferente das distribuições Debian e derivadas, nas quais é necessário executar o comando apt-get update para atualização da lista de pacotes instaláveis, o comando yum pode ser executado diretamente, sem a necessidade de executar yum update. Somente para informação, o comando yum update irá atualizar todos os pacotes instalados na máquina.

Da mesma maneira, são necessárias algumas bibliotecas para que o MRTG possa gerar gráficos de estatísticas de tráfego: gd, libpng e zlib, que o yum também se encarrega de instalar, caso não estejam instaladas.

Uma vez instalado o sistema operacional (CentOS), obtém-se acesso de root à máquina, logando-se como tal, ou com o comando su.

Como utilizaremos os gráficos em HTML gerados pelo MRTG, vamos tambémfazer a instalação de um webserver nesta máquina. Por ser o maisutilizado, vamos cobrir o Apache neste artigo. Caso ele não esteja instalado, basta usar o comando:

  # yum install httpd

Isso instalará o Servidor Web Apache. Em seguida, podemos realizar aatualização do pacote do MRTG (e, conseqüentemente, de suasdependências):

  # yum install mrtg

O yum irá instalar o pacote, criar o diretório /etc/mrtg e o arquivo /etc/mrtg/mrtg.conf,no qual devem ser armazenadas as configurações dos hosts a seremmonitorados. Particularmente, eu prefiro criar um arquivo deconfiguração do MRTG para cada host. Veremos agora como criar osarquivos de configuração.

Configuração

Após a instalação dos pacotes, é hora de partir para a criação dos arquivos de configuração dos hosts que o MRTG irá monitorar.

O MRTG possui um utilitário que auxilia na criação dos arquivos de configuração. Trata-se do cfgmaker, que possui a seguinte sintaxe:

  cfgmaker --output /etc/mrtg/router_abc_xyz.cfg community@router.abc.xyz

Onde:

  • o parâmetro --output define o arquivo de configuração que será gerado pelo cfgmaker;
  • community é a comunidade SNMP do host, que é router.abc.xyz.

Atenção: para que o nome do host seja resolvido, o equipamento com oMRTG deve estar corretamente configurado com o(s) nome(s) do(s)servidor(es) DNS (arquivo /etc/resolv.conf); além disso, é necessárioregistro no servidor DNS para o host, associando-o com o respectivoendereço IP. Também pode ser utilizada uma entrada para o mesmo noarquivo /etc/hosts ou, ainda, o endereço IP no lugar do nome.

Exemplo: vamos supor que tenhamos um roteador Cisco 2500 com endereço 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 saída (em /etc/mrtg/).Este arquivo contém as informações necessárias para que sejam geradosos gráficos. Porém, existem alguns parâmetros que podem serconfigurados no arquivo para melhor visualização. Estes parâmetros sãodefinidos nas seções 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 ondeserão salvos os arquivos gerados pelo MRTG (logs, arquivos HTML e PNGetc.). É recomendável criar uma subpasta para cada máquina.

  Options[_]: growright, bits

São duas opções em uma (mas podem ser configuradas separadamente): growrightfaz com que o gráfico "caminhe" da direita para a esquerda, fazendo comque o horário atual fique à direita no gráfico; já o parâmetro bitsdefine que o gráfico trará as informações em bits (por padrão, asinformações são expressas em bytes).

  Refresh: 600

É o intervalo, em segundos, para o navegador atualizar a página. Por padrão, 300 segundos (5 minutos).

  Interval: 10

É o intervalo, em minutos, para o MRTG buscar novas informações estatísticas junto ao host. Por padrão, 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 parâmetro Interval (ou nos 5 minutos padrão).

Ajustes

Iremos criar um usuário para executar o MRTG:

  useradd -d /var/www/mrtg -s /bin/false mrtg

Através dos parâmetros -d e -s definimos, respectivamente, o diretório home e o Shell padrão do usuário mrtg.

Além disso, é necessário atribuir a propriedade dos diretórios /var/www/mrtg e /etc/mrtg para o recém-criado usuário mrtg.

  chown mrtg /var/www/mrtg -Rv
  chown mrtg /etc/mrtg -Rv

Desta forma, este usuário terá permissão para criar os gráficos queserão visualizados via browser, e demais arquivos de controle.

Além disso, também é recomendável 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 veremosmais adiante) não tente utilizar este arquivo de configuração (queestará vazio), e o segundo para que o cron não tente iniciar o MRTG comeste mesmo arquivo de configuração a cada cinco minutos.

Colocando para funcionar

Com o arquivo (ou arquivos) de configuração pronto(s), é hora decolocar o MRTG para monitorar os seus hosts. Isso é relativamentefácil. O MRTG espera que a variável LANG esteja definida como C; caso o sistema tenha a variável configurada de forma diferente, LANG=C deve ser informado antes da execução 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 opção RunAsDaemon, não será necessário fazer mais nada.

Porém, será necessário digitar esta linha de comando sempre que amáquina for reiniciada. Além disso, será necessário digitar uma linhade comando para cada arquivo de configuração (caso você tenha optadopor criar um arquivo por host). Para automatizar a tarefa, pode-secriar um script de inicialização, adicioná-lo ao diretório /etc/init.d/ e criar os links simbólicos para os runlevels que serão utilizados.

O script abaixo irá inicializar todos os arquivos com extensão ,.cfg localizados em /etc/mrtg:

#!/bin/bash
#
# mrtgd Script para iniciar e parar monitoração via MRTG

# Variáveis
export MRTG=/usr/bin/mrtg # Caminho do executável do MRTG
export CFG=/etc/mrtg # Caminho dos arquivos de configuração do MRTG
export MRTGUSER=mrtg # Usuário do MRTG
export LANG=C

#################################
# Declaração das Funções #
#################################

# 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 não exiba mensagem de erro
echo "Finalizado processo `cat $dotpid`"
rm -f $dotpid
done
if [ "$dotpid" = "" ]; then
echo -e "\nErro! MRTG não está em execução\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 não está em execução no momento."
return 0
fi
echo -e "\nMRTG em execução\tCFG: $cfg\tProcesso: $mrtgpid"
done
echo ""
return 0
}

####################################
# Término da declaração de Funções #
####################################

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


# Teste das opções recebidas via linha de comando
while [ "$1" ]; do
case $1 in
status) Status;;
start) Iniciar;;
stop) Parar;;
restart) Parar && Iniciar;;
*) echo ""
echo "ERRO! Opção inválida: $1"; Uso;;
esac
shift
done

Uma vez criado o script em /etc/init.d/ (que eu chamei de mrtgd), também será necessário 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 criação de alguns arquivos, verifique as permissões nos diretórios /etc/mrtg/ e /var/www/mrtg/.

Testando

Para verificar os gráficos gerados pelo MRTG, basta acessar o endereçodo servidor web, através do browser. Supondo que este seja192.168.1.100, basta apontar o browser para:

  http://192.168.1.100/mrtg

É muito provável que você receba um erro 403 no browser. Se o Apacheestiver com as configurações padrão, o acesso é liberado somente aolocalhost (127.0.0.1); além disso, o Apache não permitirá que vocêvisualize a lista de pastas e arquivos em /mrtg.

Neste caso, você deve alterar o arquivo de configuração do Apache para o MRTG, em /etc/httpd/conf.d/mrtg.conf, adicionando as opções 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 endereço do servidor web, iráreceber uma lista de arquivos HTML e figuras. Para visualizar o gráficoreferente a um host específico, deve-se procurar o respectivo arquivoHTML.

Para facilitar a visualização, pode-se criar um arquivo de índice para os gráficos, através do utilitário indexmaker:

  indexmaker --output=/var/www/mrtg/192.168.1.10/index.html /etc/mrtg/192.168.1.10.cfg 

Onde:

  • o parâmetro --output define o arquivo de índice que será gerado pelo indexmaker;

Após gerar o arquivo de índice, basta acessar o endereço no browser:

  http://192.168.1.100/mrtg/192.168.1.10

E visualizar os gráficos.

Conclusão e referências

Com o MRTG é possível realizar o monitoramento de qualquer equipamento que ofereça suporte ao protocolo SNMP.

A documentação do MRTG está no site oficial.


iMasters - Monitoramento de tráfego no CentOS com MRTG - Linux

 



 

Technorati Marcas: : , , , ,

 

 

BlogBlogs Marcas: : , , , ,

 

Nenhum comentário:

Postar um comentário

Aúncio