terça-feira, 2 de setembro de 2008

MRTG simples assim...!

Há muito tempo atrás eu tinha problemas para configurar o MRTG por que achava ele muito complicado.
Hoje ainda acho ele complicado mas não tenho mais problemas para instalar e rodar o necessário :)

Recentemente eu tive que configurar em vários servidores o MRTG para monitorar a interface de rede interna, rede adsl e rede VPN (tunX), isto tudo para monitorar on-line (claro) como anda o consumo destes links.

Desta necessidade saiu um pequeno tutorial e alguns aprendizados referentes ao MRTG.
Vamos lá.

1. Verificar e instalar pacotes dependentes.
2. Instalar MRTG.
3. Instalar SNMP.
4. Configurar e iniciar o SNMP.
5. Configurar diretórios do MRTG.
6. Rodar os comandos básicos do MRTG.
7. Configurar o Apache para acesso as informacoes.
8. Configuracões adicionais.
9. Calculando
10. Problemas encontrados.

---------------------------------------------------
1. Verificar e instalar pacotes dependentes.

OBS: Antes de começar é preciso dizer que para todas as pesquisas para instalar as dependências foram realizadas como o slackpkg portanto, não vou abordar as compilações individuais dos pacotes. No arquivo de instalação do MRTG tem uma abordagem sobre isto.

É preciso listar os pacotes a serem instalados para funcionamento do mrtg e snmp
=> MRTG
+ libpng
+ libgd ou apenas "gd"
+ libjpeg
+ zlib

=> SNMP
+ net-snmpd

# slackpkg install pacotes*

Após instalados os módulos pendentes do mrtg, é possível realizar a instalação do mrtg.
Descompacte:
tar -zf mrtg-xxx.tar.gz
cd mrtg-xxx

2. Instalar MRTG.
Compile da seguinte forma:
./configure --infodir=/usr/share/info --mandir=/usr/share/man \
--with-gd=/usr --with-gd-lib=/usr/include --with-gd-inc=/usr/include \
--with-z=/usr --with-z-lib=/usr/lib --with-z-inc=/usr/include \
--with-png=/usr --with-png-lib=/usr/lib --with-png-inc=/usr/include

Apontando onde estão todas as bibliotecas e includes dos pacotes instalados.

3. Instalar SNMP.
=> Configuração basica do SNMP
Após instalado o net-snmpd, é necessário configurá-lo para que o mrtg possa capturar as informações e gerar os gráficos.
Existem formas de gerar gráficos sem o snmp porém, não serão abordados neste tutorial.

OBS: para instalar o net-snmp tarbal do slackware, troquei o mirror das configurações para a versão corrent. Nas versões antes da 12.x não encontrei o net-nmpd.tgz. Vale a dica.

4. Configurar e iniciar o SNMP.
# cd /etc/snmp
# vi snmpd.conf
rocommunity comunidade_nome
syslocation "Localidade do servidor" # Isto aparecerá no cabeçalho das informações quando for gerado o gráfico.
syscontact administrador@organizacao

Feito isto, é preciso carregar o SNMP que pode ser feito de duas formas.
No slackware, é criado um arquivo no /etc/rc.d/rc.snmpd que pode ser utilizado como padrão setando apenas permissão de execução para carregar no boot do sistema ou você pode executar o seguinte comando e colocá-lo no rc.local

# /usr/sbin/snmpd -c /etc/snmp/snmpd.conf -Lf /var/log/snmpd.log

Neste caso, é necessário que o snmp esteja rodando para que o MRTG possa capturar as informações e gerar os gráficos.

5. Configurar diretórios do MRTG.
=> Diretórios e aquivos de configuração do MRTG

O diretório padrão para os arquivos html são:
mkdir /var/www/htdocs/mrtg

O diretorio padrao para o arquivo .cfg:
mkdir /etc/mrtg

6. Rodar os comandos básicos do MRTG.
=> Rodando o MRTG

Com o SNMP rodando e o arquivo de hosts corretamente configurado para buscar o nome da máquina ao invés de IP's (como localhost), execute os comandos abaixo para buscar e gerar as informações:

Gerar o arquivo padrão de configuração do mrtg.
# /usr/local/mrtg-2/bin/cfgmaker --global 'WorkDir: /var/www/htdocs/mrtg' --global 'Options[_]: bits,growright' --output /etc/mrtg/configuracao.cfg comunidade_snmp_configurado@nome_do_servidor

comunidade_snmp_configurado = comunidade configurada dentro do arquivo /etc/snmp/snmpd.conf
exemplo:
# cat /etc/snmp/snmpd.conf
rocommunity comunidade_snmp_configurado

nome_do_servidor = referente ao arquivo de configuração hosts juntamente com o ip correto
exemplo:
# cat /etc/hosts
192.168.1.1 servidor.local servidor

Lembre-se: para gerar o gráfico utilizando o nome do servidor, a rocommunity no snmpd.conf e o hosts da máquina devem ser iguais e claro o snmp deve estar ativo.

Após gerar o arquivo de configuração .cfg é necessário rodar o mrtg para criar os arquivos de imagem e html
# /usr/local/mrtg-2/bin/mrtg /etc/mrtg/configuracao.cfg

Este comando será solicitado na primeira vez que gerar o arquivo .cfg e, deverá ser executado 3 vezes (normalmente) até aparecer apenas o prompt na próxima execução.
Pronto, os arquivos estão gerados no diretorio /var/www/htdocs/mrtg.

Como sugestão, seria interessante abrir os gráficos de forma ordenado, através de um arquivo index.html principal
Esse arquivo é totalmente personalizável e gerado de uma forma muito simples.
Assim que esse comando for executado, todas as informações geradas na saída do cfgmaker serão colocadas de forma organizada em uma página inicial caso você tenha apenas uma interface de rede ou mais de uma.

Execute o seguinte comando:
# /usr/local/mrtg-2/bin/indexmaker --output=/var/www/htdocs/mrtg/index.html --title="Analise de consumo de links" --sort=name --enumerate /etc/mrtg/configuracao.cfg

Ok, será gerado um arquivo index.html que poderá ser acesso via browser.

http://localhost/mrtg/index.html

7. Configurar o Apache para acesso as informações.
=> Configuracao do APACHE

Bom, levando em consideração que você já tenha o apache configurado, para habilitar o acesso ao MRTG basta acrescentar a seguinte configuração de VirtualHost:

VirtualHost *:80
ServerAdmin administrador@organizacao
DocumentRoot /var/www/htdocs/mrtg
ErrorLog /var/log/apache/server1-error_log
CustomLog /var/log/apache/server1-access_log common
/VirtualHost

Obs: Devido ao sinal de maior e menor serem interpretados pelo blogspot, eu removi eles deste exemplo. Mantenha a configuração conforme padrão do apache.conf

8. Configurações adicionais.

Linha do snmp para colocar no rc.local que será carregado na inicialização do servidor
echo "Carregando SNMP..."
snmpd -c /etc/snmp/snmpd.conf -Lf /var/log/snmpd.log

Permissão de execução para o rc.snmpd
# chmod +x /etc/rc.d/rc.snmpd

Adicione no rc.local:
/etc/rc.d/rc.snmpd start

Configuração da linha de comando no crontab
*/5 * * * * /usr/local/mrtg-2/bin/mrtg /etc/mrtg/configuracao.cfg --logging /var/log/mrtg.log

9. Calculando
Vou tentar explicar como funciona o esquema de cálculo para bytes utilizado pelo MRTG
O MRTG informa os gráficos em bits/s mas para isto o MaxBytes deve ser descrito em bits.

1Gb = 1024 Mb
1Mb = 1024 Kb
1Kb = 1024 bytes
1byte = 8 bits

Se for calcular um link de adsl por exemplo faça da seguinte forma:

600Kb x 1024 kb = 614.400 bits por segundo
614.400 / 8 = 76.800

O arquivo de configuracão padrão esta assim: 12500000 porquê?

100 X 1000Kb = 100.000 bytes X 1000 bytes = 100.000.000 kbytes
100.000.000 kbytes / 8 = 12.500.000 bits

Não sou nenhum perito com esses cálculos e ainda tenho dúvidas sobre como o MRTG trata essas informações portanto, se estiverem erradas, mesmo que seja na descrição dos valores, por favor me avisem para que possa corrigi-los aqui.

10. Problemas encontrados.
=> Problemas relacionados
Caso o nome da estacão estacão esteja diferente do nome utilizado no comando cfgmaker comunidade@nome_servidor, o snmp retornará um erro referente a essa configuração.


Espero ter ajudado.
Dúvidas, sugestões, críticas e contribuicões por favor fique à vontade.

Abraço.

Um comentário:

Neto Mussauer disse...

Muito bom o tutorial.

Abraços