br-linux

Artigos br-linux.org
Artigos sobre Linux em bom português, originais e com qualidade

O texto abaixo foi publicado no BR-Linux antes de 2005, e está mantido aqui por razões históricas. Veja o material atualizado diariamente do BR-Linux em http://br-linux.org
MRTG sem SNMP: monitoramento simplificado
Publicado em 10 de janeiro de 2004
 

Esta é uma atualização do meu artigo original sobre o assunto, publicado em março de 2000 no br-linux.org. A idéia é mostrar como é fácil monitorar qualquer variável numérica do seu sistema (exemplos: uso de banda de rede, uso do disco, quantidade de usuários conectados a um servidor) usando o MRTG em conjunto com pequenos scripts de aquisição de dados - dispensando o protocolo SNMP e alterações de configuração. Claro que o SNMP tem seus usos, mas não há porque ativá-lo onde não há necessidade...

MRTG sem SNMP: monitoramento simplificado

Augusto C. Campos - brain@matrix.com.br

Nota: esta é uma atualização feita no início de 2004 do meu artigo original sobre o assunto, publicado em março de 2000 no br-linux.org.

MRTG

exemplo de gráfico do MRTG O MRTG (www.mrtg.org) é um software livre que facilita enormemente a tarefa de acompanhar o funcionamento do seu sistema. Embora o seu foco seja o acompanhamento de componentes de rede através do protocolo SNMP, você pode muito bem utilizar este software para verificar o funcionamento do seu computador doméstico ou estação de trabalho mesmo sem instalar o suporte a SNMP - basta usar a sua interface com scripts shell.

A imagem que você vê ao lado é do conjunto de gráficos default gerados para uma interface de rede local (no exemplo, um modem - ppp0) mostrando a quantidade de bytes transmitida e recebida nas últimas 24 horas, na última semana, no último mês e no último ano.

O site do MRTG tem muitos exemplos de como monitorar roteadores e outros equipamentos de rede com suporte a SNMP, mas muita gente procura informações sobre a interface do MRTG com programas externos, sem precisar de protocolos especializados em monitoramento nem de alterações na configuração de seus equipamentos. E isso se explica pela simplicidade com que é possível construir um script de monitoramento de qualquer coisa (uso de banda de rede, uso do disco, quantidade de usuários conectados a um sistema, etc.) e integrá-lo ao MRTG.

Nesta dica demonstrarei como utilizar o MRTG para gerar um gráfico do uso de sua CPU, ocupação da memória e tráfego de dados em uma conexão PPP. As explicações sobre o funcionamento do software ficam para outra ocasião, ou para o site oficial do MRTG (www.mrtg.org). Se você tem alguma noção de programação shell, não terá dificuldade em extrapolar os exemplos e monitorar o que quiser e puder.

Para completar, montaremos uma página HTML bastante interessante, incluindo os gráficos gerados pelo MRTG, para deixar como abertura do seu navegador.


Mãos à obra

Em primeiro lugar, é preciso ter o pacote MRTG instalado (todas as distribuições comerciais de Linux o incluem), e o seu kernel deve ter suporte ao pseudo-filesystem /proc habilitado e em operação (todas as distribuições de Linux habilitam por default), pois iremos coletar dados diretamente de seus componentes.

Nossos arquivos de exemplo serão instalados no diretório /home/brain/mrtg, mude de acordo com a sua conveniência.

Os scripts de aquisição de dados

Os scripts para interface com o MRTG se caracterizam por sempre retornarem dois valores na saída padrão, um em cada linha, a cada vez que são executados. Estes valores correspondem às variáveis (sempre duas)
monitoradas pelo script.

O script abaixo, bastante simples, extrai dados sobre o tráfego na interface passada como parâmetro no momento de sua execução (exemplo: ppp0, eth0...). Grave-o com o nome de mrtgstats-net.sh, e torne-o executável com o comando chmod 755 /home/brain/mrtg/mrtgstats-net.sh


#!/bin/sh
# mrtgstats-net.sh - Augusto Campos 2004
awk '
/'$1':/ {
$0=substr($0,index($0,":")+1);
print $1;print $9
}
' /proc/net/dev


Este segundo script extrai informações sobre a carga da CPU e o uso da memória, transforma em percentual e repassa ao MRTG. Grave-o com o nome de mrtgstats-cpu.sh, e torne-o executável com o comando chmod 755 /home/brain/mrtg/mrtgstats-cpu.sh


#!/bin/sh
unset LANG
mem=$(/usr/bin/free|grep ^-)
load=$(cat /proc/loadavg)
/bin/awk -v load="$load" -v mem="$mem" '
BEGIN {
split(load,loadstats)
print int(100*loadstats[2])
split(mem,memstats);
print int(100*memstats[3]/(memstats[3]+\
memstats[4]));
}'


Agora, trate de criar um arquivo de configuração para o MRTG, e grave-o com o nome de mrtg.conf:


WorkDir: /home/brain/mrtg

Target[ppp0]: `/home/brain/mrtg/mrtgstats-net.sh ppp0`
Title[ppp0]:"Tráfego no modem - ppp0"
MaxBytes[ppp0]:75000
PageTop[ppp0]: <h1>Tráfego de dados no modem local</h1>
Options[ppp0]: growright,bits,noinfo

Target[eth0]: `/home/brain/mrtg/mrtgstats-net.sh eth0`
Title[eth0]:"Tráfego na placa de rede - eth0"
MaxBytes[eth0]:1400000
PageTop[eth0]: <h1>Tráfego de dados na placa de rede</h1>
Options[eth0]: growright,bits,noinfo

Target[perf]:`/home/brain/mrtg/mrtgstats-cpu.sh`
Title[perf]:"Carga da CPU e Uso da Memória"
PageTop[perf]:"<h1>Carga da CPU e Uso da Memória</h1>"
Options[perf]: growright,noinfo,gauge
YLegend[perf]: Percentual
ShortLegend[perf]: %
MaxBytes[perf]: 100
Legend1[perf]: Carga da CPU
Legend2[perf]: Uso da memória real
LegendI[perf]: Carga
LegendO[perf]: Mem

Para testar o MRTG manualmente, basta executá-lo passando como parâmetro o caminho completo do seu arquivo de configuração, assim: mrtg /home/brain/mrtg/mrtg.conf

Nos dois primeiros testes é normal a exibição de mensagens relativas ao fato de os arquivos de dados ainda estarem vazios. A partir da terceira execução o programa deve passar a ser "silencioso".

Tudo está pronto! Agora inclua na sua crontab a linha para executar o MRTG a cada 5 minutos, passando como parâmetro o nome do arquivo de configuração que você criou, conforme o exemplo:


*/5 * * * * /usr/bin/mrtg /home/brain/mrtg/mrtg.conf


Após 5 minutos você poderá ver o início dos seus gráficos se formando nos arquivos em formato html que serão criados no diretório /home/brain/mrtg. Antes de 5 minutos, os dados aparecerão zerados, mesmo que você execute várias vezes o mrtg manualmente - isto é uma consequência do modo como ele calcula suas estatísticas.


Usando em uma página de abertura do seu navegador


No ano 2000, quando escrevi a primeira versão deste tutorial, minha página de abertura do navegador web era
o arquivo HTML copiado abaixo (com o nome de abertura.html), contendo um formulário para pesquisa rápida no Google, link para os sites que eu visitava com mais frequência, e inclusão de duas imagens geradas automaticamente pelo MRTG. Para usar o meu arquivo, tudo o que você tem que fazer é colá-lo em um arquivo abertura.html no seu diretório do mrtg, e depois editá-lo até ficar a seu gosto.


Veja a listagem do abertura.html:

    <head> <title>Augusto C. Campos</title> </head>
    <body bgcolor=black text=yellow link=white
    vlink=white>

    <h1 align=center>Augusto César Campos</h1> <table
    border=0 width=100%> <tr><td>

    <form action=http://www.google.com/search
    method=get name=f> <table><tr><td> <input
    type=text value="" framewidth=4 name=q size=55
    maxlength=256> <font size=-1
    face=arial,sans-serif> <br><center><input
    type=radio name=lr value="" checked>Pesquisar na
    Web <input type=radio name=lr value=lang_pt
    >Pesquisar páginas em Português</center> </font>
    </td><td> <input name=btnG type=submit
    value="Pesquisa Google"> <br><input name=btnI
    type=submit value="Busca Direta"><input name=hl
    type=hidden value=pt> </td></tr></table> </form>

    </td><td> <a
    href=http://br-linux.org/>br-linux.org</a> <br><a
    href=http://forum.br-linux.org>Fórum</a>
    href=http://slashdot.org/>Slashdot</a>
    <br><a href=http://pontobr.org/>PontoBR</a>
    <br><a href=http://linuxtoday.com/>LinuxToday</a>
    <br><a href=http://freshmeat.net/>Freshmeat</a>
    </td></tr>

    <tr><td colspan=2><center> <p><h1>Uso da CPU e
    memória nas últimas 24 horas</h1> <img
    src=perf-day.png> <br>(em verde: CPU ocupada. Em
    azul: memória ocupada) <h1>Uso do modem nas
    últimas 24 horas</h1> <img src=ppp0-day.png>
    <br>(em verde: tráfego recebido. Em azul: tráfego
    enviado) </center></td></tr> </table>

    </body>


Conclusão

Com estes exemplos você poderá monitorar alguns aspectos importantes do seu sistema, e quem sabe se inspirar para criar scripts que monitorem outros itens. Para saber mais detalhes sobre o MRTG, não deixe de vistar o site oficial da ferramenta.

Postado por brain em janeiro 10, 2004 10:18 PM


Comentários para "MRTG sem SNMP: monitoramento simplificado"

» Postado por: Carlos Alan Peres em janeiro 16, 2004 03:20 PM, 200.165.187:

    Olá,

    Usei este seu script para monitorar a eth0 de meu servidor. Só que nada está sendo plotado. O arquivo de logs está sendo gerado. O que poderia estar acontecendo?

    []s
    Alan

 

» Postado por: Nelson em janeiro 23, 2004 10:30 AM, 200.225.77.:

    eu sei o que está acontecendo, voce é burro. se fosse inteligente o script estaria funcionando.

 

» Postado por: Fabio Silva em fevereiro 7, 2004 02:13 PM, 200.175.25.:

    Cara, parabéns.

    Fiz soh os ajustes necessários para as minhas interfaces e funcionou.

    Bem mais prático.

    Valeu.

 

» Postado por: edu em fevereiro 9, 2004 12:01 PM, 200.171.73.:

    esse nelson eh um idiota.

 

» Postado por: Daniel em fevereiro 11, 2004 12:58 AM, 200.180.119:

    Ola...

    estou tentado monitorar o meu cpu mas quando eu vejo o uso pelo top, esta em 97,9% idle, mas quando eu vejo pelo grafico gerado polo mrtg esta em 55%, quando au uso de memoria esta ok, mas o uso do processador esta muito fora do que deveria ser.

    att

    Daniel

 

» Postado por: Marcel em fevereiro 20, 2004 05:01 PM, 200.232.197:

    Muito bom este artigo. Instalei o mrtg no meu slack e funcionou numa boa. No comecou eu achei q nao tinha dado certo, pois ele nao mostrou nenhum relatorio. Depois vi que ele armazena em log as estatitiscas por periodo e ele vai mostrando... : )
    Soh uma duvida: o que muda o mrtg com SNMP ? pq complica tanto a vida assim ?
    Lembro-me de ter tentado levantar o servico em um conectiva a 5 anos atras e levei um pau danado por causa disso
    Grato

 

» Postado por: edson em fevereiro 20, 2004 06:56 PM, 200.102.54.:

    achei a matéria excelente, ela é simples, pratica e útil. No entanto o resultado dos log´s estão zerados... alguém sabe o que pode estar errado ?

 

» Postado por: Gilson em fevereiro 23, 2004 10:36 PM, 200.164.14.:

    caro amigos como posso usar o MRTG para monitorar tràfego em determinados IPs de minha rede

 

» Postado por: edson em fevereiro 25, 2004 02:45 PM, 200.102.54.:

    Agora meu MRTG, esta funcionando perfeitamente. Augusto, Obrigado pelo retorno. :)

 

» Postado por: Romulo em março 9, 2004 08:18 PM, 200.144.123:

    Como posso configurar o MRTG com o SNMP?

 

» Postado por: André em março 10, 2004 02:06 PM, 200.206.212:

    Olá eu fiz todo procedimento, mas na hora de fazer o teste, o mrtg me retorna alguns erros:
    WARHING: Running ´/home/mrtg/mrtgstats-net.sh eth0´: Arquivo ou diretório não encontrado
    WARNING: Could not get any data from external command ´/home/mrtg/mrtgstats-net.sh eth0´
    Maybe the external command did not even start. Arquivo ou diretorio não encontrado

    Obs: isso ocorre com todos as opções, seja eth1, perf e etc..... o que pode estar ocorrendo

 

» Postado por: Antenor em março 12, 2004 01:33 PM, 200.170.199:

    Olá. Gostaria de pedir para o Edson ou o Augusto, se possível, registrar a ajuda sobre o MRTG estar com os logs zerados, pois estou enfrentando o mesmo problema.

    Postado por: edson em fevereiro 25, 2004 02:45 PM, 200.102.54.:

    Agora meu MRTG, esta funcionando perfeitamente. Augusto, Obrigado pelo retorno. :)

 

» Postado por: Daniel Freire em abril 8, 2004 09:53 AM, 200.167.251:

    Caríssimos,

    estranhamente os valores dos meus gráficos gerados ficam examente os mesmos, sempre!!

    O uso da CPU em 100% (?!?) e de memória RAM 50%...
    o consumo da banda tb parece ser sempre o mesmo...

    Alguém tem alguma idéia?


 

» Postado por: Daniel Freire em abril 8, 2004 09:56 AM, 200.167.251:

    Ah, esqueci de dizer:

    Poxa, galera... ninguém aqui é burro... senão estaríamos implementando nas empresas produtos M$, com uma imensa preguiça de colocar a mão na massa...

    Olha o respeito com os outros, neh... me ajuda ai, ô tal Nelson...

 

» Postado por: Wagner Quedi em abril 26, 2004 10:26 PM, 200.163.120:

    Amigo, queria verificar o consumo de banda de cada maquina da minha rede, como poderia fazer isso usando o mrtg?

 

» Postado por: cesar augusto fresqui em abril 28, 2004 09:46 AM, 200.144.29.:

    monitorar o uso do hd
    meus 2 centavos ao artigo

    #!/bin/bash
    #este script concorda com os termos da gpl
    #(!c) Cesar Augusto Fresqui - boyhammer@yahoo.com
    #copie para /usr/local/bin/mrtg-hd.sh
    #chmod +x /usr/local/bin/mrtg-hd.sh
    if [ -e $1 ]
    then
    printf "parametro ausente\n"
    else
    total=`df | grep $1 | awk '{print $2}'`
    livre=`df | grep $1 | awk '{print $3}'`
    ocupado=`df | grep $1 | awk '{print $4}'`
    percent_oc=$(($ocupado * 100 / $total))
    percent_li=$((100 - $percent_oc))
    #echo total: $total
    #echo $ocupado
    #echo $livre
    echo "$percent_oc"
    echo "$percent_li"
    fi
    # --cut here --
    no mrtg.cfg

    Target[hd]:`/usr/local/bin/mrtg-hd.sh hda2`
    Title[hd]:"uso do hd"
    PageTop[hd]:"uso do hd"
    Options[hd]: growright,noinfo,gauge
    YLegend[hd]: Percentual
    ShortLegend[hd]: %
    MaxBytes[hd]: 100
    Legend1[hd]: espaco livre
    Legend2[hd]: espaco ocupado
    LegendI[hd]: Livre
    LegendO[hd]: Ocupado

    eh isso!![]'s

 

» Postado por: cesar augusto fresqui em abril 28, 2004 09:50 AM, 200.144.29.:

    wagner, acho que para monitorar o consumo de banda de cada maquina voce poderia usar o bandwidthd
    http://bandwidthd.sourceforge.net/
    alem de monitorar o uso da banda de cada maquina, ele tbem mostra como foi usada a banda
    eh isso!
    []'s

 

» Postado por: Anailson em maio 20, 2004 10:45 PM, 201.2.75.19:

    Olá, como faço esse procedimento no Freebsd 4.7, onde fica o /proc/dev/net no freebsd?
    Aguardo..

 

» Postado por: celio em junho 5, 2004 12:02 PM, 200.141.137:

    quais os parametros do postfix que posso usar no mrtg (total de e-mail enviados e recebidos)

    grato

 

» Postado por: Adriano R Guerreiro Laranjeira em junho 5, 2004 07:14 PM, 200.162.198:

    Realmente,

    parabéns ao editor deste artigo. Minha dúvida era exatamente sobre a necessidade (ou não) do SNMP pelo MRTG. Peguei o script acima e deu tudo certo.

    Tive uma dificuldade devido o KWrite (ou o KDE, não sei) usar o caractere apóstrofo diferente do que está aqui. Depois de alguns erros ao iniciar o MRTG, troquei os apóstrofos do mrtg.cfg pelos daqui da página (copy & paste) e tudo rolou perfeito!

    Parabéns pelo artigo, brain! E os "dois centavos" do Cézar Augusto são na verdade de valia muito maior, parabéns também! :)

    []s
    Adriano!

 

Antes de comentar...

- Preserve a qualidade desta discussão
- Leia os Termos de Uso.
- Este formulário deve ser usado para comentários sobre a notícia. Se você tem dúvidas ou precisa de ajuda, use o Fórum.
- Mantenha o foco nos argumentos e no assunto
- Não faça ataques pessoais.
- Pense 5 vezes antes de entrar em discussões inúteis, como "qual é a melhor distribuição/ambiente gráfico/linguagem de programação/etc.", mesmo se alguém já tiver provocado - um erro não justifica o outro
- Não seja um e-mala ;-)

Envie seu comentário









Lembrar as informações pessoais?


Atenção: Este formulário deve ser usado para comentários sobre a notícia. Se você tem dúvidas ou precisa de ajuda, use o Fórum, onde mais pessoas estarão disponíveis para respondê-lo..






Nota: os comentários pertencem a seus respectivos autores e são de responsabilidade de quem os postou. O restante desta nota está disponível sob a licença GNU FDL, exceto se explicitamente declarado em contrário.