Instalação e configuração do MRTG com scripts de RRDTOOL e SNMP no Linux
Autor: Vanderson | Publicado: 2016-04-16T14:11:00-03:00

O MRTG - Multi Router Traffic Grapher - é uma ferramenta que gera gráficos indicativos do consumo de banda em redes. Os gráficos, no formato PNG, são inseridos em relatórios HTML, e são atualizados constantemente, mostrando as condições dos enlaces de rede de uma forma bastante clara e atualizada. O MRTG é desenvolvido em Perl e C.

Conceito teórico começa em 00:25
Conceito prático começa em 09:25

Instruções de instalação do MRTG:

instalar o Apache e o MRTG:

yum install mrtg httpd

configurar Apache conforme desejado.

para a instalação de dados offline, ou seja, através de scripts:

mv mrtg.cfg /

vim mrtg.cfg

copiar os dados do arquivo:
agora usar a configuração:

#Configurando MRTG
WorkDir: /var/www/mrtg
Htmldir: /var/www/mrtg
icondir: /mrtg
Refresh: 300
Interval: 5
Language: portuguese
RunAsDaemon:Yes
#LogFormat: rrdtool [caso queira usar RRDTOOL descomentar esta linha e apagar este comentário]
XSize[_]: 600
YSize[_]: 150
TimeStrPos[_]: RU
#---------------------
# Monitorar eth0
# REDE LOCAL
#---------------------
Target[eth0]: `cat /proc/net/dev |grep eth0 |awk -F':' '{print $2}' |awk '{print $1}'; cat /proc/net/dev |grep eth0 | awk -F':' '{print $2}' |awk '{print $9}'; echo -e; echo -e`
Title[eth0]: REDE - Utilização da placa de rede eth0
PageTop[eth0]: &lt;H1&gt;Estatísticas da interface eth0:&lt;/H1&gt;
Options[eth0]: printrouter, growright, bits, noarrow, noinfo
MaxBytes[eth0]: 1250000000
YLegend[eth0]: Bits por segundo
LegendI[eth0]: Entrada (download) de dados
LegendO[eth0]: Saída (upload) de dados
Legend1[eth0]: Tráfego de Entrada (download) de dados em Bits por segundo
Legend2[eth0]: Tráfego de Saída (upload) de dados em Bits por segundo
#Colours[eth0]: VERDE#008000,AZUL#000080,DARK GREEN#006000,VIOLET#FF00FF
#---------------------
# Monitorar loopback
# REDE LOOPBACK
#---------------------
Target[lo]: `cat /proc/net/dev |grep lo |awk -F':' '{print $2}' |awk '{print $1}'; cat /proc/net/dev |grep lo | awk -F':' '{print $2}' |awk '{print $9}'; echo -e; echo -e`
Title[lo]: REDE - Utilização da placa de loopback
PageTop[lo]: &lt;H1&gt;Estatísticas da interface loopback:&lt;/H1&gt;
Options[lo]: printrouter, growright, bits, noarrow, noinfo
MaxBytes[lo]: 1250000000
YLegend[lo]: Bits por segundo
LegendI[lo]: Entrada (download) de dados
LegendO[lo]: Saída (upload) de dados
Legend1[lo]: Tráfego de Entrada (download) de dados em Bits por segundo
Legend2[lo]: Tráfego de Saída (upload) de dados em Bits por segundo
#Colours[lo]: VERDE#008000,AZUL#000080,DARK GREEN#006000,VIOLET#FF00FF
#---------------------
# Monitorar Carga da CPU
# Servidor CentOS
#---------------------
Target[cpucarga]: `/etc/mrtg/cpu.sh`
Title[cpucarga]: Carga da CPU e Uso da Memória
PageTop[cpucarga]: &lt;H1&gt;Carga da CPU e Uso da Memória:&lt;/H1&gt;
Options[cpucarga]: gauge, printrouter, growright, noarrow, noinfo
MaxBytes[cpucarga]: 100
YLegend[cpucarga]: Porcentagem
ShortLegend[cpucarga]: %
LegendI[cpucarga]: Carga
LegendO[cpucarga]: Mem
Legend1[cpucarga]: Carga da CPU
Legend2[cpucarga]: Uso da Memória real
Colours[cpucarga]: AMARELO#FFFF00,VERMELHO#FF0000,DARK GREEN#006000,VIOLET#FF00FF
#---------------------
# Monitorar UPTIME
# Servidor CentOS
#---------------------
Target[cpu]: `/etc/mrtg/mrtg-cpu.sh`
Title[cpu]: Uso do Processador
PageTop[cpu]: &lt;H1&gt;Uso do Processador:&lt;/H1&gt;
Options[cpu]: gauge, printrouter, growright, noarrow, noinfo
MaxBytes[cpu]: 100
YLegend[cpu]: Porcentagem
ShortLegend[cpu]: %
LegendI[cpu]: CPU-1
LegendO[cpu]: CPU-2
Legend1[cpu]: CPU-1 utilizada
Legend2[cpu]: CPU-2 utilizada
Colours[cpu]: AMARELO#FFFF00,VERMELHO#FF0000,DARK GREEN#006000,VIOLET#FF00FF
# final do arquivo de configuração

para o novo arquivo a ser usado.

a instalação do mrtg irá gerar nos confs do apache o arquivo /conf.d/mrtg.conf,
------------------------------
Alias /mrtg /var/www/mrtg

&lt;Location /mrtg&gt;
&nbsp; &nbsp; Order deny,allow
&nbsp; &nbsp; Deny from all
&nbsp; &nbsp; Allow from 127.0.0.1
&nbsp; &nbsp; Allow from ::1
&nbsp; &nbsp; Allow from 192.168.0.0/24
&lt;/Location&gt;
------------------------------
editar conforme gosto ou necessidade.

caso queira gerar gráficos da CPU:

caso queira habilitar gráficos da CPU colocar o arquivo também:

vim /etc/mrtg/mrtg-cpu.sh

#!/bin/bash
echo 0
uptime | cut -d"," -f4 | tr -d '.'

chmod 0777 /etc/mrtg/mrtg-cpu.sh

vim /etc/mrtg/cpu.sh

#!/bin/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]));
}'

chmod 0777 /etc/mrtg/cpu.sh

por fim, gerar arquivo index.html na raiz da pasta MRTG:

indexmaker --output=/var/www/mrtg/index.html /etc/mrtg/mrtg.cfg

reinicie serviços e sites.

------- Instalação a partir de dados online ou seja, com SNMP para monitoramento remoto -----

Primeira coisa, instalar o SNMP servidor:

yum install net-snmp-*

move o arquivo original para raiz e cria novo arquivo logo em seguida:
mv /etc/snmp/snmpd.conf /
vim /etc/snmp/snmpd.conf
conteúdo do arquivo snmpd.conf

------------------- Arquivo de configuração do SNMP -------------------

rocommunity public
syslocation "Vanderson"
syscontact v@g.vg

------------------ Final do arquivo de configuração do SNMP --------------------

inicia serviço:

service snmpd start

verificar se está funcionando:

snmpwalk -Os -c public -v 1 localhost | head

apartir de agora o arquivo de configuração usado será o mrtg.cfg_com SNMP.txt

no arquivo de configuração mrtg.cfg com SNMP:

#Configurando MRTG
LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt,/usr/share/snmp/mibs/TCP-MIB.txt
WorkDir: /var/www/mrtg
Htmldir: /var/www/mrtg
icondir: /mrtg
Refresh: 300
Interval: 5
Language: portuguese
RunAsDaemon:Yes
XSize[_]: 600
YSize[_]: 150
TimeStrPos[_]: RU
# LogFormat: rrdtool [caso queira usar RRDTOOL descomentar esta linha e apagar este comentário]
#---------------------
# Monitorar eth0
# REDE LOCAL
#---------------------
Target[eth0]: 2:public@localhost:
SetEnv[eth0]: MRTG_INT_IP="192.168.0.3" MRTG_INT_DESCR="eth3"
Title[eth0]: REDE - Utilização da placa de rede eth0
PageTop[eth0]: &lt;H1&gt;Estatísticas da interface eth0:&lt;/H1&gt;
Options[eth0]: printrouter, growright, bits, noarrow
MaxBytes[eth0]: 1250000000
YLegend[eth0]: Bits por segundo
LegendI[eth0]: Entrada (download) de dados
LegendO[eth0]: Saída (upload) de dados
Legend1[eth0]: Tráfego de Entrada (download) de dados em Bits por segundo
Legend2[eth0]: Tráfego de Saída (upload) de dados em Bits por segundo
#Colours[eth0]: VERDE#008000,AZUL#000080,DARK GREEN#006000,VIOLET#FF00FF
#---------------------
# Monitorar loopback
# REDE LOOPBACK
#---------------------
Target[lo]: 1:public@localhost:
SetEnv[lo]: MRTG_INT_IP="127.0.0.1" MRTG_INT_DESCR="lo"
Title[lo]: REDE - Utilização da placa de loopback
PageTop[lo]: &lt;H1&gt;Estatísticas da interface loopback:&lt;/H1&gt;
Options[lo]: printrouter, growright, bits, noarrow
MaxBytes[lo]: 1250000000
YLegend[lo]: Bits por segundo
LegendI[lo]: Entrada (download) de dados
LegendO[lo]: Saída (upload) de dados
Legend1[lo]: Tráfego de Entrada (download) de dados em Bits por segundo
Legend2[lo]: Tráfego de Saída (upload) de dados em Bits por segundo
#Colours[lo]: VERDE#008000,AZUL#000080,DARK GREEN#006000,VIOLET#FF00FF
#---------------------
# Monitorar novas conexões
# Servidor CentOS
#---------------------
Target[tcp]: tcpCurrEstab.0&amp;tcpCurrEstab.0:public@localhost
Title[tcp]: Conexões TCP estabelecidas atualmente
PageTop[tcp]: &lt;H1&gt;Conexões TCP estabelecidas atualmente:&lt;/H1&gt;
MaxBytes[tcp]: 10000000000
ShortLegend[tcp]: C/S
YLegend[tcp]: Conexoes
LegendI[tcp]: Entrada
LegendO[tcp]:
Legend1[tcp]: Conexões Estabelecidas
Legend2[tcp]:
Options[tcp]: printrouter, growright, noarrow, nopercent, gauge
#---------------------
# Monitorar novas conexões
# Servidor CentOS
#---------------------
Target[nc]: tcpPassiveOpens.0&amp;tcpActiveOpens.0:public@localhost
Title[nc]: Conexões TCP recém criadas
PageTop[nc]: &lt;H1&gt;Novas Conexões TCP:&lt;/H1&gt;
MaxBytes[nc]: 10000000000
ShortLegend[nc]: C/S
YLegend[nc]: Conexoes/segundo
LegendI[nc]: Entrada
LegendO[nc]: Saída
Legend1[nc]: Novas conexões de entrada
Legend2[nc]: Novas conexões de saída
Options[nc]: printrouter, growright, noarrow, nopercent, perminute
#---------------------
# Monitorar Memória
# Servidor CentOS
#---------------------
Title[memlivre]: Porcentagem de memória livre
PageTop[memlivre]: &lt;H1&gt;Porcentagem de memória livre:&lt;/H1&gt;
Target[memlivre]: ( memAvailReal.0&amp;memAvailReal.0:public@localhost ) * 100 / ( memTotalReal.0&amp;memTotalReal.0:public@localhost )
options[memlivre]: printrouter, growright, noarrow, gauge, nopercent
MaxBytes[memlivre]: 100
YLegend[memlivre]: Memoria %
ShortLegend[memlivre]: %
LegendI[memlivre]: Livre
LegendO[memlivre]: Livre
Legend1[memlivre]: Porcentagem de memória livre
Legend2[memlivre]: Porcentagem de memória livre
#---------------------
# Monitorar Memória
# Servidor CentOS
#---------------------
Target[memoria]: memAvailReal.0&amp;memTotalReal.0:public@localhost
Title[memoria]: Memória Livre
PageTop[memoria]: &lt;H1&gt;Memória Livre&lt;/H1&gt;
MaxBytes[memoria]: 20000000000
ShortLegend[memoria]: B
YLegend[memoria]: Bytes
LegendI[memoria]: Livre
LegendO[memoria]: Total
Legend1[memoria]: Memória Livre, Não incluindo swap, em bytes
Legend2[memoria]: Memória Total
Options[memoria]: gauge, printrouter, growright, noarrow, nopercent
kMG[memoria]: k,M,G,T,P,X
#---------------------
# Monitorar CPU
# Servidor CentOS
#---------------------
Target[cpu]: ssCpuRawUser.0&amp;ssCpuRawUser.0:public@localhost + ssCpuRawSystem.0&amp;ssCpuRawSystem.0:public@localhost + ssCpuRawNice.0&amp;ssCpuRawNice.0:public@localhost
Title[cpu]: Carga da CPU do servidor
PageTop[cpu]: &lt;h1&gt;Carga CPU - Usuário do Sistema e Processos:&lt;/h1&gt;
MaxBytes[cpu]: 100
ShortLegend[cpu]: %
YLegend[cpu]: Utilizacao da CPU
Legend1[cpu]: Porcentagem de carga atual da CPU
LegendI[cpu]: Usado
LegendO[cpu]:
Options[cpu]: printrouter, growright, noarrow, nopercent
Colours[cpu]: VERDE#00FF00,VERDE#006000,DARK GREEN#006000,VIOLET#FF00FF
# final do arquivo de configuração

terá de substituir as linhas:

Target[eth0]: 2:public@localhost:
SetEnv[eth0]: MRTG_INT_IP="192.168.0.3" MRTG_INT_DESCR="eth3"

pelas linhas do arquivo que vai ser gerado pelo comando gerar arquivo através de SNMP:

cfgmaker --global 'WorkDir: /var/www/mrtg' -output /etc/mrtg/mrtg.cfg public@localhost

substitui o que estiver entre colchetes:

[localhost_2]

por:

[eth0]

mesma coisa para [localhost_1]

por fim, refazer a geração do arquivo index.html na raiz da pasta MRTG:

indexmaker --output=/var/www/mrtg/index.html /etc/mrtg/mrtg.cfg

remove o arquivo teste gerado com cfgmaker rm mrtg.teste.txt e reinicie servidor e sites.

-------------- Instalação com RRDTOOL -------

para habilitar o módulo rrdtool deve se instalar primeiro os pacotes:
RPMFORGE:
rpm -i http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.i686.rpm 32bits
rpm -i http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm 64bits
manter o sistema atualizado:
yum update
e só depois instalar os pacotes:
yum install rrdtool perl-CGI perl-RRD-* no Ubuntu apt-get install librrds-perl rrdtool
editar o arquivo de configuração: vim /etc/mrtg/mrtg.cfg
descomentar a linha:
LogFormat: rrdtool
alterar:
WorkDir: /var/www/mrtg
Htmldir: /var/www/mrtg
icondir: /mrtg
para:
WorkDir: /var/www/cgi-bin
Htmldir: /var/www/cgi-bin
icondir: /mrtg
digite cd
e depois baixar e descompactar: wget ftp://ftp.linux.cz/pub/linux/people/jan_kasprzak/mrtg-rrd/mrtg-rrd-0.7.tar.gz
tar zxvf mrtg-rrd-0.7.tar.gz
copiar para o diretório cgi do apache:
cp ./mrtg-rrd-0.7/mrtg-rrd.cgi /var/www/cgi-bin
ir ao diretório que foi copiado o arquivo
cd /var/www/cgi-bin
no arquivo CGI localizar a linha:
vim /var/www/cgi-bin/mrtg-rrd.cgi
BEGIN { @config_files = qw(/home/fadmin/mrtg/cfg/mrtg.cfg); }
e trocar por /etc/mrtg/mrtg.cfg
depois dar permissão 0777 ao cgi-bin pasta
chmod 0777 /var/www/cgi-bin -R

reinicie servidor e site e abra o navegador que os logs serão gerados automaticamente.

Referências:

Imagens retiradas do site:
http://www.noc.garr.it/mrtg/AGGREGATE/external.garr.net.html http://www.noc.garr.it/mrtg/AGGREGATE/aggregate.garr.net.html

Viva o Linux – Instalando e configurando SNMP e MRTG no Linux: https://www.vivaolinux.com.br/artigo/Instalando-e-configurando-SNMP-e-MRTG-no-Linux

Integração MRTG e RRDTOOL: https://www.vivaolinux.com.br/artigo/Integracao-MRTG-e-RRDTool?pagina=2

Gerando gráficos sem mistérios no MRTG (debian) https://www.vivaolinux.com.br/artigo/Gerando-graficos-sem-misterios-no-MRTG-(Debian)

Monitoração de tráfego com MRTG https://www.vivaolinux.com.br/artigo/Monitoracao-de-trafego-com-MRTG

parte teórica do MRTG retirado de: FreeBSD: MRTG http://www2.unijui.edu.br/~heini/freebsd/banda-mrtg.html

Referências de configuração, site em inglês: http://oss.oetiker.ch/mrtg/doc/mrtg-reference.en.html

Serviço SNMP: Instalação e configuração no Linux http://pessoa.eti.br/main/2011/10/18/snmp-instalacao-e-configuracao-no-linux/

Boas configurações em seus sistemas e bons estudos.