Pular para o conteúdo

Integração MRTG e RRDTool

Quem já utilizou o MRTG em larga escala sabe que há degradação de performance quando monitoramos muitos equipamentos. Neste artigo veremos como aliar o MRTG ao RRDTool, outra poderosa ferramenta para monitoração de tráfego, que reduz sensivelmente a carga gerada pela monitoração.
Júlio Henrique jhenrique
Hits: 127.131 Categoria: Linux Subcategoria: Miscelânea
  • Indicar
  • Impressora
  • Denunciar

Parte 5: Colocando para funcionar

Com o arquivo de configuração pronto, é hora de colocar o MRTG para monitorar o equipamento. Isso é relativamente fácil. No prompt, basta entrar com o comando:

# mrtg /etc/mrtg/switch.cfg

Essa linha de comando iniciará o MRTG como root. Aí você tem duas opções: ou configura o parâmetro RunAsDaemon no arquivo .cfg, e não é necessário fazer mais nada (O MRTG irá coletar as estatísticas no equipamento a cada cinco minutos, ou conforme o parâmetro Interval); ou, ainda, você pode criar um agendamento via cron para rodar a mesma linha de comando acima.

Porém, se você optou pelo parâmetro RunAsDaemon, será necessário digitar esta linha de comando sempre que a máquina for reinicializada. Além disso, será necessário digitar uma linha de comando para cada arquivo de configuração (caso tenha optado por criar um arquivo por equipamento). Para automatizar a tarefa, pode-se criar um script de inicialização, adicioná-lo ao /etc/init.d e criar os links simbólicos para os runlevels que serão utilizados. Também é recomendável a criação de um usuário para rodar o MRTG.

No artigo anterior, utilizei o script abaixo, simples e eficiente:

#!/bin/sh
/usr/bin/mrtg --user=mrtg-user /etc/mrtg/switch.cfg

Lembrando que deve ser adicionada uma linha para cada arquivo CFG, se forem arquivos separados por equipamentos.

Mas, como minha capacidade de criar scripts desenvolveu-se muito (graças a apostila de Shell do Aurélio - dêem uma olhada em http://www.aurelio.net/shell), desta vez, vamos utilizar um script bem mais elaborado.

#!/bin/sh
# mrtgd - Script para iniciar e parar monitoração via MRTG
# 26/03/2005 - Júlio Henrique
# Email: julio.henrique@gmail.com
#
# Divulgo este script NO ESTADO, sem nenhuma garantia, implícita
# ou explícita; e o mesmo pode ser utilizado, copiado, distribuído
# e modificado, conforme a licença GPL.
# Sugestões e/ou melhorias são muito bem-vindas.
#
#

# Variáveis

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

#################################
# 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 chamaremos de mrtgd) e atribuída permissão de execução (chmod +x /etc/init.d/mrtgd), também será necessário criar os links para os runlevels apropriados. Isso pode ser feito de duas maneiras.

A primeira, com a dica dada pelo Fábio, no artigo anterior. Mais uma vez, agradeço o Gigabyte de contribuição.

# /usr/sbin/update-rc.d mrtgd defaults

Já a segunda maneira, mais visual, foi contribuição do Aldefax G. Kuhn (AGK) ao artigo anterior, que também agradeço. Uma vez criado o script em /etc/init.d, basta executar o comando rcconf (que deve estar instalado na máquina - caso não esteja, APT-GET nele!!), e será exibida a lista de serviços do sistema. Basta selecionar o script recém-criado, e os links simbólicos serão criados nos respectivos Runlevels.

Para iniciar o MRTG, considerando que estamos utilizando o script acima, basta digitar:

# /etc/init.d/mrtgd start

Se não ocorreu nenhum erro, o MRTG está no ar.

Se forem exibidas mensagens de erro na criação de alguns arquivos, verifique as permissões nas pastas /etc/mrtg (caso tenha sido criada) e /var/lock/mrtg. Recomendo que seja atribuída a propriedade destas pastas ao usuário do mrtg.

Para testar, vamos supor que o servidor do MRTG possua o endereço 192.168.1.100 (e que o apache esteja configurado com a porta 80 padrão); então, aponte o seu navegador para:

http://192.168.1.100/cgi-bin/mrtg-rrd.cgi

Serão exibidas, em uma única página, todas as interfaces de todos os equipamentos que estão sendo monitorados. Pode-se criar páginas personalizadas, que apontam para os respectivos links HTTP de cada interface.

   1. Introdução
   2. Instalação
   3. Configuração
   4. Ajustes finais
   5. Colocando para funcionar
   6. Conclusão e referências

Futuro do software livre após as eleições

Abrindo arquivos TNEF

Monitoração de tráfego com MRTG

Ripando DVDs com Ubuntu Dapper Drake (AcidRip + MEncoder + Xvid)

MenuetOS - O extraordinário mini-sistema operacional

Utilizando o CUPS com estações Windows XP

Montando um Media Server com o MediaTomb

Tunning do KDM theme

#1 Comentário enviado por Wavancini em 25/04/2005 - 14:11h
Parabéns! Belo trabalho! soluções como esta fazem a diferença!
#2 Comentário enviado por jhenrique em 27/04/2005 - 12:11h
William, agradeço pelo apoio; afinal foi você quem me apresentou ao MRTG... :-)

Bom, postei o script para inicialização / finalização do MRTG em http://www.vivaolinux.com.br/scripts/verScript.php?codigo=975
#3 Comentário enviado por fecuba em 18/09/2007 - 23:00h
Olá segui o passo-a-passo porém não esta mostrando o gráfico. quando as imagens não estão aparecendo, porém quando clico no link aparece o erro abaixo:
Error: RRDs::graph failed, opening '/var/www/mrtg/10.7.127.227_4.rrd': No such file or directory

#4 Comentário enviado por gunter em 30/01/2008 - 16:01h
Excelente o seu artigo...estou pensando em criar um artigo com exemplos de usos do Rrdtool e seu artigo esta contribuindo.
#5 Comentário enviado por mlgrassi em 02/07/2010 - 10:31h
Olá eu tenho uma dúvida. Na empresa em que trabalho, utilizamos um software que se baseia no RRDtools. Mas ele é um pouco mais sofisticado sendo que não são necessárias tantas configurações manuais. O nome dele é Munin e monitora da mesma maneira que o RRDtools.

Mas ele tem 2 desvantagens que o RRDtools também tem e desejo saber a solução para estes problemas.
1)O que ocorre: ambos RRDtools e Munin, monitoram o sistema e atualizam de 5 em 5 minutos certo ? Este é o primeiro problema: quero reduzir este tempo para 1 minuto.

2) No momento em que a máquina que está sendo monitorada é desligada, e suponhamos que ela fique 1 dia desligada, ao ligá-la novamente, quando iremos verificar o gráfico do Munin ou RRDtools, será exibida uma "brecha" em branco no gráfico que representa o tempo que a máquina ficou desligada. Eu desejo eliminar esta brecha dos gráficos porque no momento de analisar um gráfico de 1 mês por exemplo, as brechas atrapalham o diagnóstico total, impedindo uma visualização mais precisa do desempenho do sistema. Como corrigir isso? Alguém daqui ou o autor do artigo saberia responder?
#6 Comentário enviado por navegador_x11 em 07/10/2010 - 18:03h
Bom Artigo, só faltou no meu ponto de vista, mostrar links com o resultado dos gráficos, pois assim nos deixa com água na boca....

No mais ficou legal!
#7 Comentário enviado por marcelohcm em 26/11/2015 - 16:39h
não tem como os gráficos ficarem em tempo real?

Contribuir com comentário

Entre na sua conta para comentar.