Differences

This shows you the differences between two versions of the page.

Link to this comparison view

instalacao_e_configuracao_do_mrtg_no_debian_squeeze_pt_br [2017/09/05 12:18] (current)
Line 1: Line 1:
 +====== Instalação e Configuração do MRTG no Debian Squeeze ​ ======
  
 +
 +
 +O **Multi Router Traffic Grapher** (MRTG) é uma ferramenta de monitoramento que gera páginas no formato HTML com gráficos de dados coletados a partir de SNMP ou scripts externos. É conhecido principalmente pelo seu uso na monitoração de tráfego de rede, mas pode monitorar qualquer coisa desde que o host forneça os dados via SNMP ou script.
 +
 +Foi desenvolvido por Tobias Oetiker e Dave Rand. Foi escrito em Perl mas utiliza um módulo em C para gerar os gráficos.
 +
 +**Características**: ​
 +
 +  * Mede sempre 2 valores, no caso de tráfego, pode ser Entrada e Saída.
 +  * Faz as leituras via SNMP ou através de script que retorne um formato padrão.
 +  * Coleta dados a cada 5 minutos por padrão, mas este tempo pode ser aumentado ou diminuido.
 +  * Cria uma página HTML com 4 gráficos (diário, semanal, mensal e anual). Se algum deles não for necessário pode ser suprimido.
 +  * O MRTG pode avisar caso o valor do gráfico atinja um valor pré-estabelecido. Por exemplo: se determinado servidor atinge 95% do espaço do disco, o MRTG pode mandar um e-mail para o administrador informando o ocorrido.
 +  * Possui uma ferramenta para gerar os arquivos de configuração:​ o CFGMAKER.
 +  * Possui uma ferramenta para gerar um página de índice para os casos em que muitos itens são monitorados:​ o INDEXMAKER.
 +
 +
 +O que vou utilizar:
 +  * Servidor Debian Squeeze ​
 +    * IP: 10.101.0.25
 +    * Servidor MRTG
 +  * Cliente Debian Squeeze
 +    * IP: 10.101.0.26
 +
 +
 +Prepare o seu sistema com o seguinte script http://​wiki.douglasqsantos.com.br/​doku.php/​confinicialsqueeze_en para que não falte nenhum pacote ou configuração.
 +
 +Vamos mandar fazer um update dos repositórios e um upgrade do sistema no servidor MRTG
 +<sxh bash>
 +aptitude update && aptitude dist-upgrade -y
 +</​sxh>​
 +
 +Agora vamos mandar instalar o apache o mrtg e o snmp
 +<sxh bash>
 +aptitude install apache2 mrtg snmpd -y
 +</​sxh>​
 +
 +Aqui vamos ser questionados sobre a permissão do arquivo mrtg.cfg selecione YES
 +
 +Agora vamos criar o diretório que vai armazenar os relatórios do mrtg, esse vai ser o diretório principal depois vamos dividir ele por hosts
 +<sxh bash>
 +mkdir -p /​var/​www/​mrtg
 +</​sxh> ​
 +
 +Agora vamos acertar o arquivo de configuração do snmp para ele escute em todas as portas e vamos dar acesso a ele para a rede 10.101.0.0/​24,​ e vamos também acertar a localização e o contato
 +<sxh bash>
 +vim /​etc/​snmp/​snmpd.conf
 +[...]
 +#​Habilitando o snmp escutar em todas as portas
 +agentAddress ​ udp::161
 +[...]
 +#Vamos dar acesso a nossa community para o servidor MRTG
 +rocommunity public ​ 10.101.0.25/​32
 +[...]
 +#Precisamos comentar a linha abaixo
 +#​rocommunity public ​ default ​   -V systemonly
 +#Aqui vamos acertar o as informações que vão ser passadas para quem consultar esse servidor via snmp
 +sysLocation ​   DataCenter 01 Servidor MRTG
 +sysContact ​    ​Douglas <​douglas@douglasqsantos.com.br>​
 +</​sxh>​
 +
 +Agora vamos mandar reiniciar o serviço do snmp
 +<sxh bash>
 +/​etc/​init.d/​snmpd restart
 +</​sxh>​
 +
 +Agora vamos criar o diretório para armazenar a configuração do nosso servidor mrtg
 +<sxh bash>
 +mkdir -p /​etc/​mrtg/​10.101.0.25
 +</​sxh>​
 +
 +Agora vamos criar o diretório para armazenar os relatórios html do nosso servidor mrtg
 +<sxh bash>
 +mkdir -p /​var/​www/​mrtg/​10.101.0.25
 +</​sxh>​
 +
 +Agora precisamos gerar a configuração para o nosso servidor
 +<sxh bash>
 +cfgmaker public@10.101.0.25 --ifref=ip --ifdesc=alias --show-op-down --global '​WorkDir:​ /​var/​www/​mrtg/​10.101.0.25'​\
 + ​--global '​Options[_]:​ growright bits' --output /​etc/​mrtg/​10.101.0.25/​mrtg.cfg
 +</​sxh>​
 +Aqui estamos informando:
 +  * **public@10.101.0.25** que é a community do snmp e o ip que queremos monitorar
 +  * **ifref=ip** está que vai ser a nossa referencia para a interface o padrão é o número dela
 +  * **ifdesc=alias** que vai ser a descrição da nossa interface eu estou utilizando o alias o padrão é utilizar o número
 +  * **show-op-down** é para mapear as interfaces que estão com o status down
 +  * **global '​WordDir:​ '** estamos especificando onde vão ser armazenadas as páginas html para essa configuração que estamos gerando
 +  * **global '​Options**'​ estamos especificando que queremos a informação em bits ao invés de bytes e o crescimento do gráfico vai ser da esquerda para a direita
 +  * **output** estamos especificando onde vamos armazenar a configuração.
 +
 +Agora precisamos gerar o arquivo de index dos nossos relatórios para esta configuração
 +<sxh bash>
 +indexmaker /​etc/​mrtg/​10.101.0.25/​mrtg.cfg --columns=2 ​ --output /​var/​www/​mrtg/​10.101.0.25/​index.html
 +</​sxh>​
 +
 +Aqui estamos informando:
 +  * **/​etc/​mrtg/​10.101.0.25/​mrtg.cfg** arquivo de configuração que vamos gerar os relatórios
 +  * **columns=2** a quantidade de colunas que vamos ter na página HTML para separar os vários gráficos que podemos ter
 +  * **output** estamos especificando o arquivo principal dos relatórios
 +
 +Agora precisamos gerar os primeiros gráficos da seguinte forma
 +<sxh bash>
 +env LANG=C /​usr/​bin/​mrtg /​etc/​mrtg/​10.101.0.25/​mrtg.cfg
 +env LANG=C /​usr/​bin/​mrtg /​etc/​mrtg/​10.101.0.25/​mrtg.cfg
 +env LANG=C /​usr/​bin/​mrtg /​etc/​mrtg/​10.101.0.25/​mrtg.cfg
 +</​sxh>​
 +
 +Temos que gerar 3 vezes para ele carregar todas as informações necessárias para os gráficos, depois vamos ter um script que vai precisar gerar estas informações a cada 5 minutos.
 +
 +Agora já podemos acessar http://​ip_servidor/​mrtg/​10.101.0.25 que vamos ter o nosso primeiro relatório
 +
 +Agora vamos criar um script para gerar os nossos relatórios
 +
 +Vamos primeiro criar um diretório para armazenar o nosso script
 +<sxh bash>
 +mkdir -p /​srv/​scripts
 +</​sxh>​
 +
 +Agora vamos gerar o nosso script
 +<sxh bash>
 +vim /​srv/​scripts/​mrtg.sh
 +#!/bin/bash
 +#​-------------------------------------------------------------------------
 +# mrtg.sh
 +#
 +# Site  : http://​www.*.com.br
 +# Autor : Douglas Q. dos Santos <​douglas@douglasqsantos.com.br>​
 +# Manutenção:​ Douglas Q. dos Santos <​douglas@douglasqsantos.com.br>​
 +#
 +#​-------------------------------------------------------------------------
 +# Efetua a geração dos relatórios de múltiplos clientes do mrtg
 +#​-------------------------------------------------------------------------
 +#​--------------------------------------------------------------------------
 +#Licença: http://​creativecommons.org/​licenses/​by-sa/​3.0/​legalcode
 +#
 +#​--------------------------------------------------------------------------
 +#Declarando as variáveis utilizadas no script
 +BASE="/​etc/​mrtg"​
 +LOGS="/​var/​log/​mrtg"​
 +MRTG=$(which mrtg)
 +MKDIR=$(which mkdir)
 +
 +#Comando para obter todos os clientes configurador no mrtg
 +ARQ=$(ls -l ${BASE} | awk '​{print $9}' | egrep -v "​^$"​)
 +
 +#Vamos validar se o diretório de logs existe caso não exista vamos criar ele
 +if test ! -d ${LOGS} ; then
 + ​${MKDIR} -p ${LOGS}
 +fi
 +
 +#Percorre todos os diretorios de configuracao em /etc/mrtg para podermos gerar os relatórios
 +for END in $ARQ ;
 +do
 +env LANG=C ​ ${MRTG} ${BASE}/​${END}/​mrtg.cfg 2>&1 ${LOGS}/​mrtg.log
 +done
 +</​sxh>​
 +
 +Agora precisamos dar permissão para o nosso script
 +<sxh bash>
 +chmod +x /​srv/​scripts/​mrtg.sh
 +</​sxh>​
 +
 +Agora vamos ajustar o crontab, vamos comentar a linha que já existe lá e vamos adicionar o nosso script
 +<sxh bash>
 +vim /​etc/​cron.d/​mrtg
 +*/5 * * * * root /​srv/​scripts/​mrtg.sh
 +#*/5 *  * * *   ​root ​   if [ -x /​usr/​bin/​mrtg ] && [ -r /​etc/​mrtg.cfg ]; then mkdir -p /​var/​log/​mrtg ; env LANG=C /​usr/​bin/​mrtg /​etc/​mrtg.cfg 2>&1 | tee -a /​var/​log/​mrtg/​mrtg.log ; fi
 +</​sxh>​
 +
 +Agora vamos mandar reiniciar o serviço do crontab
 +<sxh bash>
 +/​etc/​init.d/​cron restart
 +</​sxh>​
 +====== Configurando o cliente ======
 +
 +Vamos mandar fazer um update dos repositórios
 +<sxh bash>
 +aptitude update && aptitude dist-upgrade -y
 +</​sxh>​
 +
 +Agora vamos mandar instalar o snmp
 +<sxh bash>
 +aptitude install snmpd -y
 +</​sxh>​
 +
 +
 +Agora vamos acertar o arquivo de configuração do snmp para ele escute em todas as portas e vamos dar acesso a ele para a rede 10.101.0.25/​32,​ e vamos também acertar a localização e o contato
 +<sxh bash>
 +vim /​etc/​snmp/​snmpd.conf
 +[...]
 +#​Habilitando o snmp escutar em todas as portas
 +agentAddress ​ udp::161
 +[...]
 +#Vamos dar acesso a nossa community para o servidor MRTG
 +rocommunity public ​ 10.101.0.25/​32
 +[...]
 +#Precisamos comentar a linha abaixo
 +#​rocommunity public ​ default ​   -V systemonly
 +#Aqui vamos acertar o as informações que vão ser passadas para quem consultar esse servidor via snmp
 +sysLocation ​   DataCenter 01 Cliente
 +sysContact ​    ​Douglas <​douglas@douglasqsantos.com.br>​
 +</​sxh>​
 +
 +Agora vamos mandar reiniciar o serviço do snmp
 +<sxh bash>
 +/​etc/​init.d/​snmpd restart
 +</​sxh>​
 +
 +Agora vamos voltar ao servidor MRTG e vamos criar a configuração para ele.
 +
 +Agora vamos criar o diretório para armazenar a configuração do nosso cliente
 +<sxh bash>
 +mkdir -p /​etc/​mrtg/​10.101.0.26
 +</​sxh>​
 +
 +Agora vamos criar o diretório para armazenar os relatórios html do nosso cliente
 +<sxh bash>
 +mkdir -p /​var/​www/​mrtg/​10.101.0.26
 +</​sxh>​
 +
 +Agora precisamos gerar a configuração para o nosso cliente
 +<sxh bash>
 +cfgmaker public@10.101.0.26 --ifref=ip --ifdesc=alias --show-op-down --global '​WorkDir:​ /​var/​www/​mrtg/​10.101.0.26'​\
 + ​--global '​Options[_]:​ growright bits' --output /​etc/​mrtg/​10.101.0.26/​mrtg.cfg
 +</​sxh>​
 +Aqui estamos informando:
 +  * **public@10.101.0.26** que é a community do snmp e o ip que queremos monitorar
 +  * **ifref=ip** está que vai ser a nossa referencia para a interface o padrão é o número dela
 +  * **ifdesc=alias** que vai ser a descrição da nossa interface eu estou utilizando o alias o padrão é utilizar o número
 +  * **show-op-down** é para mapear as interfaces que estão com o status down
 +  * **global '​WordDir:​ '** estamos especificando onde vão ser armazenadas as páginas html para essa configuração que estamos gerando
 +  * **global '​Options**'​ estamos especificando que queremos a informação em bits ao invés de bytes e o crescimento do gráfico vai ser da esquerda para a direita
 +  * **output** estamos especificando onde vamos armazenar a configuração.
 +
 +Agora precisamos gerar o arquivo de index dos nossos relatórios para esta configuração
 +<sxh bash>
 +indexmaker /​etc/​mrtg/​10.101.0.26/​mrtg.cfg --columns=2 ​ --output /​var/​www/​mrtg/​10.101.0.26/​index.html
 +</​sxh>​
 +
 +Aqui estamos informando:
 +  * **/​etc/​mrtg/​10.101.0.26/​mrtg.cfg** arquivo de configuração que vamos gerar os relatórios
 +  * **columns=2** a quantidade de colunas que vamos ter na página HTML para separar os vários gráficos que podemos ter
 +  * **output** estamos especificando o arquivo principal dos relatórios
 +
 +Agora precisamos gerar os primeiros gráficos da seguinte forma
 +<sxh bash>
 +env LANG=C /​usr/​bin/​mrtg /​etc/​mrtg/​10.101.0.26/​mrtg.cfg
 +env LANG=C /​usr/​bin/​mrtg /​etc/​mrtg/​10.101.0.26/​mrtg.cfg
 +env LANG=C /​usr/​bin/​mrtg /​etc/​mrtg/​10.101.0.26/​mrtg.cfg
 +</​sxh>​
 +
 +Agora podemos acessar o relatório do nosso cliente em http://​ip_servidor/​mrtg/​10.101.0.26
 +
 +====== Configurando VirtualHost ======
 +
 +Agora vamos configurar um virtualhost para o MRTG
 +<sxh apache>
 +vim /​etc/​apache2/​sites-available/​mrtg
 +<​VirtualHost *:80>
 + ​ServerName mrtg.douglasqsantos.com.br
 + ​ServerAlias mrtg.douglasqsantos.com.br
 + ​DocumentRoot "/​var/​www/​mrtg"​
 + 
 + #​Controle de acesso ao mrtg
 + <​Directory "/​var/​www/​mrtg">​
 +  Options -Indexes +FollowSymLinks +MultiViews
 +  Order allow,deny
 +  allow from all
 +  AllowOverride All
 + 
 + #​Autenticação do mrtg
 + ​AuthUserFile /​etc/​apache2/​access/​mrtg-htpasswd
 + ​AuthName "​MRTG"​
 + ​AuthType Basic
 + ​require valid-user
 + </​Directory>​
 + 
 + #​Configuração dos logs do apache
 + ​ErrorLog /​var/​log/​apache2/​mrtg.douglasqsantos.com.br-error.log
 + ​CustomLog /​var/​log/​apache2/​mrtg.douglasqsantos.com.br-access.log common
 + 
 + #​Retirando a assinatura do Apache
 + ​ServerSignature Off
 + 
 + ​IndexIgnore .??* *~ *# README RCS CVS *,v *,t *
 + 
 + # Possible values include: debug, info, notice, info, error, crit,
 + # alert, emerg.
 + ​LogLevel info
 +</​VirtualHost>​
 +</​sxh>​
 +
 +Agora vamos criar a nossa página de index para o mrtg aonde vão ser mapeados os clientes
 +<sxh xml>
 +vim /​var/​www/​mrtg/​index.html
 + <​!DOCTYPE HTML PUBLIC "​-//​W3C//​DTD HTML 4.0 Transitional//​EN">​
 +  <​html>​
 +  <​head>​
 +    <​title>​MRTG Graphs</​title>​
 +    <meta http-equiv="​Content-Type"​ content="​text/​html;​
 +     ​charset=iso-8859-1">​
 +    <meta http-equiv="​Refresh"​ content="​300">​
 +    <meta http-equiv="​Cache-Control"​ content="​no-cache">​
 +    <meta http-equiv="​Pragma"​ content="​no-cache">​
 +    <meta name="​robots"​ content="​noarchive">​
 +  </​head>​
 +  <body bgcolor="#​FFFFFF"​ text="#​000000">​
 +    <​h1>​MRTG Graphs</​h1>​
 +    <​blockquote>​
 +   <​ol>​
 +     <​li> ​  <a href="​10.101.0.25/​index.html"​ target='​_blank'>​MRTG Server</​a>​ <br>
 +     <​li> ​  <a href="​10.101.0.26/​index.html"​ target='​_blank'>​Cliente Debian</​a>​ <br>
 +   </​ol>​
 +    </​blockquote>​
 +  </​body>​
 +  </​html>​
 +</​sxh>​
 +
 +Agora para cada novo cliente basta criar uma entrada href como foi feito para o Cliente Debian.
 +
 +Agora vamos criar o diretório que vai conter o arquivo de controle dos usuários que podem acessar o mrtg
 +<sxh bash>
 +mkdir /​etc/​apache2/​access/​
 +</​sxh>​
 +
 +Agora vamos gerar o usuário e a senha, aqui eu vou cadastrar o usuário lightsquid
 +<sxh bash>
 +htpasswd -s -c /​etc/​apache2/​access/​mrtg-htpasswd mrtg
 +New password: ​
 +Re-type new password: ​
 +Adding password for user mrtg
 +</​sxh>​
 +
 +Agora vamos desativar os virtuais hosts default do apache
 +<sxh bash>
 +a2dissite default
 +a2dissite default-ssl
 +</​sxh>​
 +
 +Agora vamos ativar o mrtg
 +<sxh bash>
 +a2ensite mrtg
 +</​sxh>​
 +
 +Agora vamos reiniciar o apache
 +<sxh bash>
 +/​etc/​init.d/​apache2 restart
 +</​sxh>​
 +
 +Agora já podemos acessar http://​mrtg.douglasqsantos.com.br ou http://​ip_servidor precisamos informar o usuário mrtg e a senha que foi definida para ele com o comando htpasswd ​
 +
 +
 +====== Referências ======
 +  - http://​pt.wikipedia.org/​wiki/​Mrtg
 +  - http://​oss.oetiker.ch/​mrtg/​doc/​indexmaker.en.html