RRDTool + MRTG

Pré-requisito
MRTG (antes de prosseguir é necessário instalar e configurar o MRTG)

O RRDTool (Round Robin Database Tool) tem a função de aumentar as caracteríscas de ferramentas como o MRTG. No caso do MRTG, os gráficos ficarão muito mais detalhados e será possível sobrepor a limitação do MRTG em relação ao intervalo de tempo para a coleta de dados que é de 5 minutos e passará a ser de 1 minuto. Devido a isso, a precisão dos gráficos serão maiores. Veja no figura a seguir:

Uma outra vantagem do RRDTool é que os gráficos (/var/www/mrtg/*.png) serão gerados sob demanda, ou seja, somente serão criados no momento em que forem acessados através de um browser (scripts cgi). Diferentemente do que acontece com o MRTG que os criam a cada 5 minutos na configuração padrão. Uma desvantagem é que o RRDTool exige um servidor de páginas que aceite scripts cgi (ex: APACHE).

Fiz questão de colocar este artigo no site, pois encontrei muita dificuldade para achar bons materiais (dois) que expliquem como fazer o RRDTool funcionar com o MRTG. Apesar de ser bem rápida a integração, existem alguns detalhes que se não forem feitos, os gráficos não aparecerem. Então mãos a obra:

Remover e instalar os seguintes pacotes
# apt-get remove –purge thttpd -y (removendo o thttpd, pois por padrão não funciona com o RRDTool – scripts cgi)
# apt-get update ; apt-get install rrdtool mrtg-rrd librrds-perl apache2 -y

Entrar no arquivo de configuração do MRTG e editá-lo
# vi /etc/mrtg.cfg (entra no arquivo de configuração do MRTG. Abaixo estão as linhas que precisam ser acrescentadas)
#Title[^]: Traffic Analysis for (comente esta linha)
LogFormat: rrdtool (especifica que o formato usado será do “rrdtool”)
Interval: 1 (a coleta de dados ocorrerá a cada minuto)

Salve e saia do arquivo de configuranção. Mundando o script da coleta de dados do processador
# vi /etc/mrtg/mrtg-cpu.sh (entra no script que captura os dados sobre o processamento. A seguir tem-se a linha que precisa ser modificada)
uptime | cut -d”,” -f4 | tr -d ‘.’ (comando original. Este é ideal para trabalhar somente com o MRTG, pois captura a média do processamento que acontece a cada 5 minutos)
uptime | cut -d” ” -f12 | tr -d ‘.’ | tr -d ‘,’ (já este é o comando para trabalhar com o RRTool+MRTG, pois captura a média do processamento que acontece a cada minuto)
Obs: a mudança é necessária, pois o script original para o MRTG captura a média a cada 5 minutos, mas com o RRDTool+MRTG é necessário colher a média a cada minuto. Com isso, a precisão dos gráficos aumentarão. Como pode ser visto no gráfico a seguir:

Salve e sai do script. Agora se deve tirar o processo MRTG do ar e iniciá-lo novamente
# killall mrtg (tira o processo MRTG do ar)
# env LANG=C /usr/bin/mrtg /etc/mrtg.cfg (inicializa o MRTG. Também, pode-se digitar simplesmente “env LANG=C mrtg”)

Verificação do funcionamento RRDTool + MRTG
# ls /var/www/mrtg
Obs: entre vários arquivos, devem aparecer alguns com a extensão “.rrd”. Se isto aconteceu, então se deve seguir com o restante dos procedimentos

Mais procedimentos
# ln -s /usr/lib/cgi-bin/ /var/www/ (cria um link simbólico)
# chown .www-data /etc/mrtg.cfg (muda a permissão de grupo para “www-data” do arquivo “/etc/mrtg.cfg”. Isso é necessário, pois por segurança o único usuário e grupo que pode acessar esse arquivo é o “root”)
# chmod 640 /etc/mrtg.cfg (o arquivo “/etc/mrtg.cfg” já deveria ter estas permissões por padrão, mas caso se tenha feito outros procedimentos que não estão neste site, então se deve executar esse comando. Medida de segurança, pois se outros usuários além do root, www-data e mrtg tiverem o direito de leitura, então terão acesso aos nomes das comunidades SNMP. Vale lembrar que neste artigo não está sendo usado esse protocolo)
# chown .www-data /var/www/mrtg/ -R (muda recursivamente a permissão de grupo para “.www-data” do diretório “/var/www/mrtg/”. Necessário, pois o grupo “www-data” precisa ter permissão de escrita. Não esqueça do “-R” no final do comando)
# chmod g+w /var/www/mrtg/ -R (muda recursivamente a permissão do grupo para escrita do diretório /var/www/mrtg/. Necessário, pois o grupo “www-data” precisa ter permissão de escrita para criar e modificar os arquivos “*.rrd”. Não esqueça do “-R” no final do comando)

Reinicie o servidor Apache
# /etc/init.d/apache2 restart

Agora é só tirar o processo MRTG do ar e iniciá-lo novamente
# killall mrtg (tira o processo MRTG do ar)
# env LANG=C /usr/bin/mrtg /etc/mrtg.cfg (inicializa o MRTG. Também, pode-se digitar simplesmente “env LANG=C mrtg”)

Abra um browser (konqueror, firefox, iceaweasel, w3m etc) e digite na URL:
http://IP_servidor/cgi-bin/mrtg-rrd.cgi/ (o IP_servidor deverá ser substituido pelo endereço IP da máquina que foi instalado o RRDTool. Se os gráficos aparecem, então a instalação e configuração foram bem sucedidas)


 

Permissões de acesso a determinados IP ou host

Edite o arquivo a seguir caso necessite restringir o acesso ao servidor Apache:
# vi /etc/apache2/sites-available/default(existe um link simbólico para esse arquivo em “/etc/apache2/site s-enabled/000-default”)
Vão existir três entradas “Directory /var/www/”, “Directory /usr/lib/cgi-bin” e “Directory /usr/share/doc/”;
Cada entrada está relacionada aos diretórios “/var/www/”, “/usr/lib/cgi-bin” e “/usr/share/doc/”, respectivamente;
Em outras palavras, correspondem, na mesma ordem, as páginas HTML, Scripts SGI e Documentos do servidor Apache;
Em cada entrada vai existir uma linha chamada “Allow from all“. Basta substituir o “all” pelo o enderço IP ou nome de host que podem ter acesso. Coforme as linhas a seguir:

Allow from 127.0.0.1(endereço IP local)
Allow from 127.0.0.0/255.0.0.0(endereço e máscara de subrede local)
Allow from 172.16.200.20(endereço IP)
Allow from 172.16.200.0/255.255.255.0(endereço e máscara de subrede)
Allow from financeiro01(nome de host)
Allow from matrix.br(somente aos equipamentos desse domínio)

Os endereços que estiverem fora deste escopo, não poderão acessar 😉

Reinicie o servidor Apache
# /etc/init.d/apache2 restart
<br


 

Limpando os gráficos

Algumas vezes é necessário ter gráficos limpos com nenhum registro, em outras palavras, quando se deseja que os gráficos sejam gerados de um determinado momento em diante. Para isso, digite os comandos a seguir.
# killall mrtg (tira o processo MRTG do ar)
# rm /var/www/mrtg/* (remove todos os arquivos do diretório digitado)
Obs: Muito cuidado com o comando anterior, pois apagará toda captura diária, semanal, mensal e anual já registrada pelo mrtg.
# env LANG=C /usr/bin/mrtg /etc/mrtg.cfg (inicializa o MRTG. Também, pode-se digitar simplesmente “env LANG=C mrtg”)

Para verificar se realmente os gráficos estão limpos, abra um browser (konqueror, firefox, iceaweasel, w3m etc) e digite na URL:
http://IP_servidor/cgi-bin/mrtg-rrd.cgi/ (o IP_servidor deverá ser substituido pelo endereço IP da máquina que foi instalado o RRDTool. Se os gráficos aparecem, então a instalação e configuração foram bem sucedidas)


 

EXPERIÊNCIA
Caso a máquina com o MRTG+RRDTool 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

Rolar para cima