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.

[ Hits: 124.025 ]

Por: Júlio Henrique em 19/04/2005


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.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Instalação
   3. Configuração
   4. Ajustes finais
   5. Colocando para funcionar
   6. Conclusão e referências
Outros artigos deste autor

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

Abrindo arquivos TNEF

Monitoração de tráfego com MRTG

Leitura recomendada

Como executar tarefas a cada 5, 10 ou 15 minutos

GNU/Linux, um projeto de sucesso (parte 1)

Experimentando o Looking Glass

Participe da revista Viva o Linux

Escrevendo scripts no GIMP, pintando a cobra

  
Comentários
[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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts