Configurando MRTG sem usar SNMP no Slackware 10.1

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

[ Hits: 20.206 ]

 


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

Baixar e Instalar o pacote printconf usando o Synaptic no Debian 5.07

Atualização do Ubuntu passando por proxy

Usando terminal do Xfce no Geany

Configuração de rede Debian - Erro: "Não Gerenciável" [Resolvido]

Corrigindo a tecla END no Eterm

  

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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts