GNU/Linux
 
 
MRTG
(com shell scripts)

O MRTG (Multi Router Traffic Grapher) é uma ferramenta para monitorar, através de gráficos, os recursos computacionais como memória, processador, rede, conexões, temperatura, espaço em disco e etc de equipamentos. Devido a importância dessa ferramenta para o administrador de rede, a seguir é exposto como instalar, configurar e testar o MRTG. Vale ressaltar que em todas as configurações foram usados scripts para a coleta de dados, em vez de usar o protocolo SNMP (Simple Network Managment Protocol). Esta ferramenta, também, tem a característica de capturar os dados a cada 5 minutos, valores menores não é possível com o MRTG. A intenção deste artigo é que se possa visualizar gráficos como este:


Instalação do MRTG
# apt-get update ; apt-get install mrtg psmisc -y (será perguntado se o /etc/mrtg.cfg terá somente a permissão de leitura para o usuário MRTG, responda que sim)
Obs: a instalação do pacote "psmisc" tem objetivo de inserir o comando "killall" no sistema;

Acessar o arquivo de configuração
# vi /etc/mrtg.cfg (verifique se já existem por padrão as linhas: "WorkDir: /var/www/mrtg" e "WriteExpires: Yes". Senão, acrescente-as sem as aspas. Depois, acrescente as linhas abaixo)
RunAsDaemon: Yes (roda como daemon em background a cada 5 minutos)
Language: brazilian (liguagem padrão)

Não saia do arquivo de configuração, pois agora serão inseridas as linhas para análise do processador
Target[cpu]: `/etc/mrtg/mrtg-cpu.sh`(caminho do script que captura os dados)
Title[cpu]: Uso do Processador (Nome que aparecerá na barra de título)
PageTop[cpu]: Uso do Processador (Título no início da página)
Options[cpu]: gauge, growright, noinfo (opções que especificam como as informações serão manuseadas)
MaxBytes[cpu]: 100 (indica o maior valor que poderá ser alcançado, não importando se é bytes, RPM, voltagem, Celsius etc. No exemplo o processador, poderá alcançar no máximo 100% de sua utilização)
YLegend[cpu]: Porcentagem (legenta vertical)
ShortLegend[cpu]: % (unidade de medição)
LegendI[cpu]: CPU-1 (sigla do primeiro recurso que será monitorado)
LegendO[cpu]: CPU-2 (sigla do segundo recurso que será monitorado)
Legend1[cpu]: CPU-1 utilizada (descrição do primeiro recurso que será monitorado)
Legend2[cpu]: CPU-2 utilizada (descrição do segundo recurso que será monitorado)
Obs: apesar das linhas acima especificarem CPU-1 e CPU-2, o shell script adotado analizará, caso se tenha um processador com 2 núcleos ou placa-mãe com 2 processadores, a média de processamento dos processadores. Então, teremos neste caso um único parâmento sendo analisado, a media dos processamentos. O gráfico ficará equivalente a figura abaixo:


Não saia do arquivo de configuração, pois agora serão inseridas as linhas para análise das conexões
Target[connections]: `/etc/mrtg/mrtg-connections.sh`(caminho do script que captura os dados)
Title[connections]: Situação das Conexões (Nome que aparecerá na barra de título)
PageTop[connections]: Situação das Conexões (Título no início da página)
Options[connections]: gauge, growright, noinfo (opções que especificam como as informações serão manuseadas)
MaxBytes[connections]: 10000 (indica o maior valor que poderá ser alcançado, não importando se é bytes, RPM, voltagem, Celsius etc. No exemplo as conexões, poderão alcançar no máximo 1000 unidade)
YLegend[connections]: TCP (legenta vertical)
ShortLegend[connections]: qte (unidade de medição)
LegendI[connections]: Estabelecidas (sigla do primeiro recurso que será monitorado)
LegendO[connections]: SYN enviados (sigla do segundo recurso que será monitorado)
Legend1[connections]: Conexões estabelecidas (descrição do primeiro recurso que será monitorado)
Legend2[connections]: Segmentos com SYN enviado (descrição do segundo recurso que será monitorado)

Caso se queira comentar alguma linha, basta inserir "#". Agora, já pode salvar e sair do arquivo. Vamos, neste exato momento criar os scripts. Começaremos pelo script do processador
# mkdir /etc/mrtg (cria um diretório para o armazenar os scripts)
# vi /etc/mrtg/mrtg-cpu.sh (shell script para a coleta de dados do processador. A seguir, o conteúdo que deve ser inserido)
#!/bin/bash (processador de comandos)
echo 0 (mostra o caractere zero)
uptime | cut -d"," -f4 | tr -d '.' (média do processamento nos útimos 5 minutos)
Obs: o shell script acima pode ser usado para um processador com um ou mais núcleos, pois ele trará a média de todo o processamento realizado

Já pode salvar e sair do arquivo. Vamos criar agora o shell script para as conexões
# vi /etc/mrtg/mrtg-connections.sh (shell script para a coleta de dados das conexões. A seguir, o conteúdo que deve ser inserido)
#!/bin/bash (processador de comandos)
netstat -tn | grep -c ESTAB ; netstat -tn | grep -c SYN_SENT (traz as conexões estabelecidas e os segmentos TCP SYN enviados sem reposta. Para saber sobre os segmentos TCP recebidos, basta trocar o "SENT" por "REC")

Salvar e sair do arquivo. Vamos mudar as permissões dos shell scripts para que se possa executá-los
# chmod 755 /etc/mrtg/mrtg-cpu.sh (torna o arquivo executável)
# chmod 755 /etc/mrtg/mrtg-connections.sh (torna o arquivo executável)

Rodando o MRTG
# killall mrtg (mata o processo mrtg)
# env LANG=C /usr/bin/mrtg /etc/mrtg.cfg (roda o "mrtg" especificando o seu diretório e de seu respectivo arquivo de configuração. Algumas menssagens de aviso aparecerão, mas isso é característica da própria ferramenta. Depois de 15 minutos elas não aparecerão mais. Poderia se digitar simplesmente "env LANG=C mrtg")

Antes de visualizar os gráficos, digite o comando a seguir para verificar se o MRTG criou os arquivos
# ls /var/www/mrtg
Obs: com o comando acima, devem aparecer vários arquivos com a extensão ".png", ".meta", ".html" e ".log". Caso não apareçam, deve-se verificar todos os passos novamente. Caso apareçam, é um bom sinal e se deve continuar com as configurações a seguir)

Para visualizar os gráficos gerados, existem 3 possíbilidades: instalar um servidor de página (Apache ou thttpd), instalar um browser de modo texto que visualiza imagens (w3m-img) ou acessá-los via browser em um ambiente gráfico (xorg). A seguir serão vistas estas 3 possibilidadesi, mas de ante-mão digo que a primeira possibilidade é a melhor:



Primeira Possibilidade
(Servidor de Páginas THTTPD)

A primeira possibilidade para visualizar os gráficos gerados pelo MRTG é através de um servidor de página como o "thttpd". Também, poderia-se usar o "Apache", mas o "thttpd" tem a vantagem de ser pequeno e rápido, ideal para trabalhar com o MRTG. A instalação de um servidor de páginas é a mais comum e versátil, mas só se deve usá-la quando o equipamento monitorado somente tiver o modo texto, se não tiver problema de adicionar mais um serviço e necessitar de versatilidade (acesso remoto etc). Se esse for o caso, então vamos lá:

Instalação do pacote "thttpd"
# apt-get update ; apt-get install thttpd -y (instalação de um servidor de páginas web)
OU
# apt-get update ; apt-get install apache2 -y (instalação de um servidor de páginas web)

Agora é só acessar um outro computador na rede, abrir um browser (konqueror, firefox, iceaweasel etc) e digitar na URL:
# http://IP_servidor/mrtg (deverão aparecer vários aquivos, clique nos ".html". Se visualizar os gráficos, então tudo está certo)



Segunda Possibilidade
(Browser em modo texto "w3m-img")

Não é necessário instalar um servidor de página como o APACHE ou THTTPD, pois o pacote "w3m-img" é um browser em modo texto que pode visualizar imagens. Assim, os gráficos gerados pelo MRTG podem ser visto via linha de comando. Isso, é ideal para servidores que não se pode colocar mais um serviço ar (problemas de segurança etc) e que só tenham o modo texto. A desvantagem é que os gráficos só poderão ser visualizados localmente (salvo em casos de compartilhamento de arquivos)--> clique aqui

Instalação do pacote "w3m-img"
# apt-get update ; apt-get install w3m w3m-img -y

Mudando a quantidade de cores e resolução do modo texto
# vi /boot/grub/menu.lst (arquivo de configuração do grub. Necessário, pois o "w3m-img" exige configurações mínimas de vídeo)
kernel /boot/vmlinuz-2.6.22-3-amd64 root=/dev/sda6 ro quiet (linha que indica a localização do kernel. Esta linha é especifica para cada caso. Então deve-se procurar pela linha correspondente usada para inicializar o computador. A seguir é colocada a modificação necessária)
kernel /boot/vmlinuz-2.6.22-3-amd64 root=/dev/sda6 ro quiet vga=0x0317 (como a linha do kernel deve ficar. O parâmetro "vga=0x0317" indica que o modo texto deve trabalhar com uma resolução de 800x600 e 16 bits de cores)

Salve, sai do arquivo e reinicie o equipamento
# init 6 (reinicialização)

Depois de reiniciado o computador, digite:
# w3m -F /var/www/mrtg/cpu.html (gráficos do processador)
# w3m -F /var/www/mrtg/connections.html (gráficos da conexões)
Obs: dentro do browser w3m, aperte "INSERT" para aparecer a lista de opções com "quit", "back" etc. A tecla "TAB" faz navegar entre os links)



Terceira Possibilidade
(Browser em modo gráfico)

Caso a máquina que está sendo monitorada pelo MRTG possua um ambiente gráfico (xorg + kde, gnome etc), então se pode usar o browser como Konqueror, Firefox etc, para visualizar os graficos gerados pelo MRTG.

Abra um browser de seu ambiente gráfico e digite na URL:
/var/www/mrtg (deverão aparecer vários aquivos. Clique nos ".html" para visualizar os gráficos)



EXPERIÊNCIA

Caso a máquina com o MRTG seja reiniciada ou desligada com ou sem os procedimetos normais, é necessário restatar o MRTG, pois alguns gráficos não serão mais atualizados (ficando sem modificação) como os que envolvem o tráfego de rede. Se isto acontecer, digite os comando abaixo:

# killall mrtg (mata o processo mrtg)
# env LANG=C /usr/bin/mrtg /etc/mrtg.cfg(executa o MRTG novamente)

Para automatizar o processo, ou seja, toda vez que o equipamento for reiniciado executar os comandos acima, faça os procedimentos a seguir:

# vi /etc/rc.local
killall mrtg (acrescente esta linha)
env LANG=C /usr/bin/mrtg /etc/mrtg.cfg(acrescente esta linha)
exit 0 (este parâmetro já existe por padrão e deve ficar no final do arquivo)
Salve e Saia do arquivo



Extra
RRDTool + MRTG (aumenta a funcionalidades do MRTG)


Referências Bibliográgicas
MOTA FILHO, J. E. Descobrindo o linux: entenda o sistema operacional GNU/Linux. 2. ed. São Paulo: Novatec, 2007.
 
 




ETI - Especialista em Tecnologia
da Informação