Configurando MRTG sem usar SNMP no Slackware 10.1

Publicado por Luiz Carlos Redes Filho em 18/11/2005

[ Hits: 19.380 ]

 


Configurando MRTG sem usar SNMP no Slackware 10.1



Saudações à todos!

Bom! Resolvi escrever esta dica porque sempre tive muita dificuldade com SNMP. A procura por tutoriais sobre ele quase me deixaram louco. Fuçando pela net à fora encontrei um how-to e uns scripts de como implementar o tão conhecido MRTG sem usar SNMP, pode parecer loucura mas funciona, e muito bem. Trata-se de mais um jeitinho do mundo *NIX para se chegar ao mesmo resultado. :D

Primeiro, vamos instalar primeiro o MRTG, para isso precisamos de seu pacote tgz, que pode ser baixado no link abaixo (ou se preferir no linuxpackages).
OBS: Este pacote foi criado para a versão 10.0 do Slackware, mas estou usando ele na versão 10.1 em um servidor em produção sem problemas.

Bom! Vamos instalar o tal pacote:

# installpkg mrtg-2.10.15-i486-1nec.tgz

Com o MRTG instalado, precisamos agora criar um arquivo de configuração, para padronizar a localização dos arquivos .conf iremos criar um diretório chamado MRTG em /etc:

# mkdir /etc/mrtg # cd /etc/mrtg

Agora chegamos onde realmente interessa, o que nos faz não precisar usar SNMP. Trata-se de alguns shell scripts, que de uma maneira bem simples coletam informações de alguns "pontos chaves" do sistema:

1) Script - Coletor de informação de utilização do HD:

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

2) Script - Coletor de informação da CPU:

#!/bin/sh
#este script concorda com os termos da gpl
#(!c) Cesar Augusto Fresqui - boyhammer@yahoo.com
#copie para /etc/mrtg/mrtg-cpu.sh
#chmod +x /etc/mrtg/mrtg-cpu.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]));
}'

3) Script - Coletor de informação da interface de rede:

#!/bin/sh
#este script concorda com os termos da gpl
#mrtgstats-net.sh - Augusto Campos 2004
#copie para /etc/mrtg/mrtgstats-net.sh
#chmod +x /etc/mrtg/mrtgstats-net.sh
awk '
/'$1':/ {
$0=substr($0,index($0,":")+1);
print $1;print $9
}
' /proc/net/dev

Até aqui beleza, mas só com isso o MRTG não fará nada, criaremos agora o mrtg.conf para se utilizar desses scripts, abaixo segue o exemplo:

WorkDir: /var/log/mrtg

Language: brazilian
RunAsDaemon: yes
Interval: 30

Target[hdboot]:`/etc/mrtg/mrtg-hd.sh sda2 2>> /dev/null`
Title[hdboot]:"Uso do HD de BOOT do Sistema"
PageTop[hdboot]:"Uso do HD de BOOT do Sistema"
Options[hdboot]: growright,noinfo,gauge
YLegend[hdboot]: Percentual
ShortLegend[hdboot]: %
MaxBytes[hdboot]: 100
Legend1[hdboot]: espaco livre
Legend2[hdboot]: espaco ocupado
LegendI[hdboot]: Livre
LegendO[hdboot]: Ocupado

Target[hdservidor]:`/etc/mrtg/mrtg-hd.sh sda3 2>> /dev/null`
Title[hdservidor]:"Uso do HD de Dados do Sistema"
PageTop[hdservidor]:"Uso do HD de Dados do Sistema"
Options[hdservidor]: growright,noinfo,gauge
YLegend[hdservidor]: Percentual
ShortLegend[hdservidor]: %
MaxBytes[hdservidor]: 100
Legend1[hdservidor]: espaco livre
Legend2[hdservidor]: espaco ocupado
LegendI[hdservidor]: Livre
LegendO[hdservidor]: Ocupado

Target[hdbkp]:`/etc/mrtg/mrtg-hd.sh uba1 2>> /dev/null`
Title[hdbkp]:"Uso do HD de Backup do Sistema"
PageTop[hdbkp]:"Uso do HD de Backup do Sistema"
Options[hdbkp]: growright,noinfo,gauge
YLegend[hdbkp]: Percentual
ShortLegend[hdbkp]: %
MaxBytes[hdbkp]: 100
Legend1[hdbkp]: espaco livre
Legend2[hdbkp]: espaco ocupado
LegendI[hdbkp]: Livre
LegendO[hdbkp]: Ocupado

Target[eth0]: `/etc/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]:`/etc/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

Neste exemplo de arquivo de configuração é possível notar como os scripts funcionam, basta passar como argumento, por exemplo: para o script de coleta informações do HD basta colocar o nome do dispositivo, no caso acima /dev/sda2, /dev/sda3 e /dev/uba1.

Complementando, no início deste arquivo, há uma variável "WorkDir:" que aponta onde o MRTG irá salvar seus relatórios. Para quem não sabe o MRTG gera relatórios em HTML, que podem ser abertos com qualquer browser, isto possibilita uma integração com o apache, no caso de um servidor que terá seus logs vistos remotamente pelo administrador.

Os arquivos HTML que serão gerados, tem seus nomes situado entre colchetes. Por exemplo: a sessão abaixo irá gerar um HTML com o nome de hdservidor.html.

Target[hdservidor]:`/etc/mrtg/mrtg-hd.sh sda3 2>> /dev/null`
Title[hdservidor]:"Uso do HD de Dados do Sistema"
PageTop[hdservidor]:"Uso do HD de Dados do Sistema"
Options[hdservidor]: growright,noinfo,gauge
YLegend[hdservidor]: Percentual
ShortLegend[hdservidor]: %
MaxBytes[hdservidor]: 100
Legend1[hdservidor]: espaco livre
Legend2[hdservidor]: espaco ocupado
LegendI[hdservidor]: Livre
LegendO[hdservidor]: Ocupado

Simples não?

Para finalizar a instalação de uma maneira bem profissional, vamos editar alguns arquivos do Slackware para deixarmos o MRTG como um serviço que é iniciado junto ao sistema.

1) Vamos criar o /etc/rc.d/rc.mrtg

#!/bin/sh
# Start/stop/restart mrtg.

# Start mrtg:
mrtg_start() {
  if [ -x /usr/bin/mrtg ]; then
    echo "Starting mrtg daemon: /usr/bin/mrtg --daemon"
    /usr/bin/mrtg /etc/mrtg/mrtg.conf --daemon
  fi
}

# Stop mrtg:
mrtg_stop() {
  echo "Ending mrtg daemon.."
  killall mrtg
}

# Restart mrtg:
mrtg_restart() {
  mrtg_stop
  sleep 1
  mrtg_start
}

case "$1" in
'start')
  mrtg_start
  ;;
'stop')
  mrtg_stop
  ;;
'restart')
  mrtg_restart
  ;;
*)
  echo "usage $0 start|stop|restart"
esac

Para que este script funcione, vc deve dar permissão de execução a ele:

# chmod +x /etc/rc.d/rc.mrtg

2) Vamos editar o arquivo /etc/rc.d/rc.M e adicionar ao final do mesmo as seguintes linhas:

# Start MRTG as daemon
if [ -x /etc/rc.d/rc.mrtg ]; then
  . /etc/rc.d/rc.mrtg start
fi

Prontinho! Agora se quiser executar o MRTG, basta executar o comando abaixo:

# /etc/rc.d/rc.mrtg start

Confira o diretório especificado na variável Workdir, poderá visualizar os primeiros arquivos de relatórios gerados (ainda com os gráficos zerados), a cada 30 minutos os relatórios são feitos, espere algumas horas e confira os gráficos. Acredito que se você seguiu todos os passos tudo vai estar OK.

Acho que é só. Esta dica se baseia em diversas pesquisas na internet, agradeço a todos que compartilharam o seu conhecimento para que eu pudesse escrever esta dica.

t+

Outras dicas deste autor

Samba + Clamav no Slackware 10.1

Leitura recomendada

Instalação do Slackware 13.1 no HP Mini 110

Resolução da tela e consumo de memória de vídeo: como saber?

Configurar teclado ABNT2 no MINIX

Squid - Limitando números de conexões simultâneas

Bagunçou os painéis do MATE? [Resolvido]

  

Comentários
[1] Comentário enviado por gustavo_marcon em 18/11/2005 - 15:29h

Cara, tenho o mrtg funcionando no slackware já, mas ele ñ gera a página index mostrando somente o gráfico diário e com link sobre a imagem para a página com detalhes, ele está gerando só as páginas individuais de cada script. Tu sabes me dizer como faço pra gerar o index.html?

[2] Comentário enviado por luizredes em 18/11/2005 - 17:33h

Gustavo, pelo que sei o MRTG só gera os htmls com os nomes que estão na flag target[]. Para gerar um único index.html para unir todos num menu centralizado vc que deve elaborar esse index.html manualmente, já q os targets não mudam, os htmls q o mrtg gera tb não vão mudar de nome e vc nem vai precisar alterar mais o index.html que vc fez....
Espero ter ajudado...
t+

[3] Comentário enviado por luizredes em 18/11/2005 - 17:39h

Uma pequena observação e agradecimentos, relativos a esta dica.
Eu tentei aki descrever minha experiência pessoal e tentei tb complementar o conteúdo da comunidade com mais um tema sobre Linux/MRTG mas os méritos pela elaboração do conceito desta dica se deve a Augusto C. Campos da comunidade br-linux.org, o artigo dele original, na íntegra pode ser acessado no seguinte link:

http://br-linux.org/tutoriais/001627.html#001627

Obrigado!

[4] Comentário enviado por claudiocordeiro em 09/01/2006 - 14:41h

Para gerar o index.html use o comando:
# indexmaker /etc/mrtg/mrtg.conf > /var/log/mrtg/index.html

Espero ter ajudado....

Claudio Cordeiro

[5] Comentário enviado por brunosilva em 08/06/2007 - 16:53h

Prezado, com esse esquema na minha distribuição slackware com tudo instalado certinho aparece essa menssagem quando executo start:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_COLLATE = "C",
LANG = "en_US"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Daemonizing MRTG ...

[6] Comentário enviado por beroso em 29/12/2008 - 15:20h

eu uso o slackware 11, gera as paginas html e tudo mas nao mostra grafico nenhum e da esse erro,

root@servidor:/etc/mrtg# Rateup WARNING: /usr/bin/rateup Can't remove hdboot.old updating log file
Rateup WARNING: /usr/bin/rateup could not read the primary log file for eth0
Rateup WARNING: /usr/bin/rateup The backup log file for eth0 was invalid as well
Rateup WARNING: /usr/bin/rateup Can't remove eth0.old updating log file
Rateup WARNING: /usr/bin/rateup Can't rename eth0.log to eth0.old updating log file




Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts