Home Tutoriais Redes 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 a este protocolo. Apesar de ser possível 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 instalação e configuração do MRTG na distribuição CentOS.

Instalação

Para instalar e utilizar o MRTG no CentOS, você precisa de uma versão do Perl instalada no equipamento. Na maioria das instalações
padrão, o Perl já se encontra disponível. Caso não esteja, o utilitário de 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ém
fazer a instalação de um webserver nesta máquina. Por ser o mais
utilizado, 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 a
atualização do pacote do MRTG (e, conseqüentemente, de suas
dependê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 serem
monitorados. Particularmente, eu prefiro criar um arquivo de
configuração do MRTG para cada host. Veremos agora como criar os
arquivos 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 o MRTG deve estar corretamente configurado com o(s) nome(s) do(s) servidor(es) DNS (arquivo /etc/resolv.conf); além disso, é necessário registro no servidor DNS para o host, associando-o com o respectivo endereço IP. Também pode ser utilizada uma entrada para o mesmo no arquivo /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 gerados os gráficos. Porém, existem alguns parâmetros que podem ser configurados no arquivo para melhor visualização. Estes parâmetros são definidos 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 onde serão salvos os arquivos gerados pelo MRTG (logs, arquivos HTML e PNG etc.). É recomendável criar uma subpasta para cada máquina.

  Options[_]: growright, bits

São duas opções em uma (mas podem ser configuradas separadamente): growright faz com que o gráfico “caminhe” da direita para a esquerda, fazendo com que o horário atual fique à direita no gráfico; já o parâmetro bits define que o gráfico trará as informações em bits (por padrão, as informaçõ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 que serã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 veremos mais adiante) não tente utilizar este arquivo de configuração (que estará vazio), e o segundo para que o cron não tente iniciar o MRTG com este mesmo arquivo de configuração a cada cinco minutos.

Colocando para funcionar

Com o arquivo (ou arquivos) de configuração pronto(s), é hora de colocar o MRTG para monitorar os seus hosts. Isso é relativamente
fá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 a máquina for reiniciada. Além disso, será necessário digitar uma linha de comando para cada arquivo de configuração (caso você tenha optado por criar um arquivo por host). Para automatizar a tarefa, pode-se criar 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çãon"
    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çãotCFG: $cfgtProcesso: $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ço do servidor web, através do browser. Supondo que este seja
192.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 Apache estiver com as configurações padrão, o acesso é liberado somente ao localhost (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áfico referente a um host específico, deve-se procurar o respectivo arquivo HTML.

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.

Fonte: http://imasters.com.br/artigo/13115/linux/monitoramento-de-trafego-no-centos-com-mrtg

   

Leave a Reply

This blog is kept spam free by WP-SpamFree.