Estadisticas de red, router, cpu: MRTG.

Por Paco Aldarias Raya

Impreso: 11 de junio 2009

Email: pacolinux arroba aldarias punto es

Web: http://www.aldarias.es

Con Linux Debian. En Valencia (España)

El documento tiene version .html, y .pdf, cambiando en el navegador la parte final podrás acceder a ambos.

Este documento es de libre reproducción siempre que se cite su fuente.

Realizado con: LATEX

Índice General

1 Versiones


2 Introducción

MRTG: Multirouter Traffic Grapher Es una aplicación que permite sacar estadisticas de todo tipo.

Algunas estadisticas:

Un ejemplo:
http://mainake.escomposlinux.org/mrtg/


3 Control del tráfico de un router adsl.

Para controlar el tráfico generado por el router usaremos el protocolo SNMP. SNMP Simple Network Management Protocol El protocolo SNMP que permite conseguir informacion del router

En concreto yo tengo ADSL y un router Speed Strem 5660: Software Version 2.3.0(2) Aug 1 2001 11:54:02

Entrar al router poniendo http://ip_del_router
Advanced Setup ,SNMP

Me sale esto:

SNMP Configuration
 Operating
Values Stored
Values Enter New
Values
Community String   mi_comunidad   mi_comunidad
System Name:   Router Eficient   Router Eficient
System Location   Casa   Casa
System Contact   pacolinux@inicia.es   pacolinux@inicia.es
Trap Manager 1   0.0.0.0  0.0.0.0
Trap Manager 2   0.0.0.0  0.0.0.0

Tener en cuenta:

4 Instalación de mrtg

Como root hay q hacer todo esto:

apt-get install mrtg mrtgutils mrtg-contrib

Siendo:

mrtg
Programa mrtg
mrtgutils
Utilidades mrtg
mrtg-contrib
Utilidades mrtg

5 Configurar el acceso al router

Hay una utilidad q configura llamada cfgmaker que configura solo mrtg para el router.

#cfgmaker
--global 'WorkDir: /var/www/mrtg' \
--global 'Options[_]: bits,growright' \
--output /etc/mrtg/mrtg.cfg \
comunidad_del_router@ip_del_router

Siendo:

workdir: Es donde se guardan los resultados.

output: Es donde esta el fichero cfg

6 Configurar la carga de la cpu

Hay una utilidad llamada mrtg-load que devuelve el uso de la cpu.

Probar q funciona poniendo desde consola: mrtg-load

Veamos que debemos añadir al fichero /etc/mrtg.cfg

# CPU load %
Target[cpu]:`/usr/bin/mrtg-load -m 100`
Title[cpu]: Carga de CPU
PageTop[cpu]: <H1>CPU Carga %</H1>
 <TABLE>
   <TR><TD>System:</TD>     <TD>aldarias.dsland.org</TD></TR>
   <TR><TD>Maintainer:</TD> <TD>Paco Aldarias</TD></TR>
   <TR><TD>Description:</TD><TD>Carga del procesador (%)  </TD></TR>
   <TR><TD>Email:</TD>     <TD>pacolinux@inicia.es</TD></TR>
 </TABLE>
MaxBytes[cpu]: 100
Unscaled[cpu]: ymwd
ShortLegend[cpu]: %
XSize[cpu]: 380
YSize[cpu]: 100
YLegend[cpu]: Carga(%)
Legend1[cpu]:
Legend2[cpu]: Utilización de la CPU en % (Carga)
Legend3[cpu]: Tiempo de funcionamiento (uptime)
Legend4[cpu]: Nombre de lo que estamos monitorizando
LegendI[cpu]:
LegendO[cpu]: Carga(%);&nbsp
Options[cpu]: gauge
Background[cpu]: #bbbbbb
Colours[cpu]: GREEN#00eb0c,BLUE#1000ff,DARK GREEN#006600,VIOLET#ff00ff

Siendo:
Target[cpu]:`/usr/bin/mrtg-load -m 100`
	Pide porcentajes de uso de la cpu
Options[cpu]: gauge
	Calcula cantidades sin acumular

7 Todo el fichero de configuración

Se pueden ver como se configuran mas cosas viendo el contenido del fichero:

/etc/mrtg.cfg

mrtg.cfg

8 Comprobar el cron

Para que cada 5 minutos se llama al mrtg, añadir esta linea al crontab

# nano /etc/crontab

0-59/5 * * * * root /usr/bin/mrtg /etc/mrtg.cfg
.

Reiniciar el cron:

/etc/init.d/cron restart

9 Como ver las estadisticas

Abrir con el navegador:

\var\www\mrt\

10 Mrtg y Apache

10.1 Configurar el apache

nano /etc/apache/httpd.conf
<Location /server-status>
    SetHandler server-status
    Order deny,allow
    #Deny from all
    #Allow from .your_domain.com
        Allow from all
</Location>


<Location /server-info>
    SetHandler server-info
    Order deny,allow
    #Deny from all
    #Allow from 127.0.0.1 192.168.100.1
    Allow from all
</Location>

LoadModule info_module /usr/lib/apache/1.3/mod_info.so

Reiniciar el apache: /etc/init.d/apache restart

10.2 Probar que funciona

  1. Para un apache normal:
    mrtg-apache 127.0.0.1

  2. En mi caso:
    mrtg-apache aldarias.dyndns.org -p 2080

  3. Abriendo el navegador:
    http://localhost:2080/server-status

  4. Abriendo el navegador:
    http://localhost:2080/server-info

10.3 Configurar mrtg

nano /etc/mrtg.cfg
Target[apache]:`mrtg-apache aldarias.dyndns.org -p 2080`
Title[apache]: Accesos al servidor Web
PageTop[apache]: <H1> Accesos al servidor Web</H1>
 <TABLE>
   <TR><TD>System:</TD>     <TD>aldarias.dsland.org</TD></TR>
   <TR><TD>Maintainer:</TD> <TD>Paco Aldarias</TD></TR>
   <TR><TD>Description:</TD><TD>Server Status:
    mrtg-apache aldarias.dyndns.org -p 2080 </TD></TR>
   <TR><TD>Email:</TD>     <TD>pacolinux@inicia.es</TD></TR>
 </TABLE>
MaxBytes[apache]: 100
Unscaled[apache]: ymwd
ShortLegend[apache]: hits
XSize[apache]: 300
YSize[apache]: 100
YLegend[apache]: hits
#Legend1[apache]: Nose
Legend2[apache]: Hits
#Legend3[apache]: Hits
#Legend4[apache]: Nombre de lo que estamos monitorizando
#LegendI[apache]: -
#LegendO[apache]: Hits
Options[apache]: gauge

Generamos el nuevo indice:

indexmaker  /etc/mrtg.cfg  > /var/www/mrtg/index.html

Generamos nuevas estadísticas:

mrtg /etc/mrtg.cfg

11 Mrtg y las máquinas en una red

Vamos a ver la forma de poder tener una gráfica con las máquinas conectadas en la red. Tendremos q crear un script llamado /root/nmapmrtg.sh que será llamado por mrtg.

11.1 Script nmapmrtg.sh

cat /root/nmapmrtg.sh

#!/bin/sh
statname="ies25abril.dsland.org"
uptime=`uptime | awk '{print $3}'`" dias, "`uptime | awk '{print $5}'`" horas"
nmap -sP  192.168.100.1-254 > nmap.txt
statin=`cat nmap.txt | awk '/hosts up/ {print $8}' |tr \( " "`
statout=`echo 0`
echo $statin
echo $statout
echo $uptime
echo $statname

Deberemos darle permiso de ejecución:
chmod 700 /root/nmapmrtg.sh

11.2 Configuración /etc/mrtg.cfg

Añadiremos al final del fichero este texto:

Title[nmap]: Máquinas en la red
Target[nmap]:`/root/nmapmrtg.sh`
PageTop[nmap]: <h1>Máquinas en la red</h1>
MaxBytes[nmap]: 1000
YLegend[nmap]: Máquinas
ShortLegend[nmap]: pcs
XSize[nmap]: 300
YSize[nmap]: 100
Options[nmap]: nopercent,gauge

12 Mrtg y el tráfico del servidor web

Deberemos hacer 3 cosas:

  1. Crear un filtro con iptables
  2. Crear un script que analize esta regla de iptables.
  3. Decirle a mrtg que coga los datos.

Nota: Esto sirve para cualquier puerto que se desee monitorizar. Si cambias 80 por 21, y Webin por Ftpin. y Webout por Ftpout, ya tienes para monitorizar el ftp también,etc.

12.1 Filtro del iptables

cat /root/web.sh

#!/bin/sh
/sbin/iptables -N WebIn    
/sbin/iptables -N WebOut
/sbin/iptables -A WebIn -j ACCEPT
/sbin/iptables -A WebOut -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 80 -j WebIn
/sbin/iptables -A OUTPUT -p tcp --sport 80 -j WebOut

Deberemos darle permiso de ejecución:
chmod 700 /root/web.sh

Lo añadiremos en el arranque:
cp /root/web.sh /etc/init.d/
ln -s /etc/init.d/web.sh /etc/init.d/rc2/99web.sh

12.2 Script que analize esta regla de iptables

cat /root/webmrtg.sh

#!/bin/sh
statname="Servidor Web"
uptime=`uptime | awk '{print $3}'`" dias, \
"`uptime | awk '{print $5}'`" horas"
statin=`/sbin/iptables -L -n -x -v | /bin/grep -A 12 INPUT \
| /bin/grep WebIn | /usr/bin/awk '{print $2}'`
statout=`/sbin/iptables -L -n -x -v | /bin/grep -A 12 OUTPUT \
 | /bin/grep WebOut | /usr/bin/awk '{print $2}'`
echo $statin
echo $statout
echo $uptime
echo $statname

Deberemos darle permiso de ejecución:

chmod 700 /root/webmrtg.sh

12.3 Configurar el mrtg

Añadir al final del fichero /etc/mrtg.cfg

Target[web]: `/root/webmrtg.sh`
Title[web]: Tráfico Web
PageTop[web]: <h1>Tráfico Web</h1>
MaxBytes[web]: 30720
YLegend[web]: Web Bytes/s
ShortLegend[web]: B/s
XSize[web]: 300
YSize[web]: 100

13 Mrtg y la temperatura del disco duro

Deberemos instalar la utilidad hddtemp:

apt-get install hddtemp

Probar que funciona:

hddtemp /dev/hda

13.1 Script para sacar la temperatura

Crear este fichero: /root/hdtemp.sh

#!/bin/sh
statname="ies25abril.dsland.org"
uptime=`uptime | awk '{print $3}'`" dias, "`uptime | awk '{print $5}'`" horas"
statin=`hddtemp /dev/hda | cut -f3 -d" " |tr \°C " "`
statout=`echo 0`
echo $statin
echo $statout
echo $uptime
echo $statname

Darle persmisos de ejecución:

chmod 700 /root/hdtemp

Probarlo:

/root/hdtemp

13.2 Configurar el mrtg

Añadir al final del fichero /etc/mrtg.cfg

Title[hdtemp]: Temperatura del Disco Duro
Target[hdtemp]:`/root/hdtemp.sh`
PageTop[hdtemp]: <h1>Temperatura del Disco Duro</h1>
MaxBytes[hdtemp]: 60
YLegend[hdtemp]: Temperatura (°C)
ShortLegend[hdtemp]: °C
XSize[hdtemp]: 300
YSize[hdtemp]: 100
Options[hdtemp]: nopercent,gauge


14 Mrtg y el ancho de banda

Deberemos instalar la utilidad iptotal, desde consola como usuario root:

apt-get install iptotal

Probar que funciona:

iptotal -r 5 eth0
Siendo: -r 5 el tiempo que tarda en hacer los cálculos y eth0 el interface que está monitorizando.

14.1 Script para sacar el ancho de banda

Crear este fichero: /root/cat iptotal.sh

#!/bin/sh
statname="Iptotal"
uptime=`uptime | awk '{print $3}'`" dias, "`uptime | awk '{print $5}'`" horas"
/usr/sbin/iptotal -r 5 eth0 > iptotal.txt
#cat iptotal.txt >> iptotal1.txt
in=`cat iptotal.txt |  awk '{print $5}'`
out=`cat iptotal.txt |  awk '{print $8}'`
echo $in
echo $out
echo $uptime
echo $statname

Darle permisos de ejecución:

chmod 700 /root/iptotal.sh

Probarlo:

/root/iptotal.sh

14.2 Configurar el mrtg

Añadir al final del fichero /etc/mrtg.cfg
Title[iptotal]: Velocidad de la red
Target[iptotal]:`/root/iptotal.sh`
PageTop[iptotal]: <h1>Velocidad de la red. Iptotal</h1>
MaxBytes[iptotal]: 50
YLegend[iptotal]: Ancho de Banda (KB)
ShortLegend[iptotal]: KB
XSize[iptotal]: 300
YSize[iptotal]: 100
Options[iptotal]: nopercent,gauge


15 Mrtg y el número total de procesos

Vamos a usar la orden ps -aux, la guardamos en un fichero y contamos cuantas líneas hay.

15.1 Script para cálcular los procesos

Crear el fichero /root/procesos.sh
#!/bin/bash
# Por Paco Aldarias
# 22.03.05
# Calcula el numero de procesos totales y de root

statname=`hostname`
uptime=`uptime | awk '{print $3}'`" dias, "`uptime | awk '{print $5}'`" horas"

#Procesos de usuario
ps -aux  > procesos.txt 2>/dev/null
total=`wc -l < procesos.txt`
total=`expr $total - 1`

#Procesos de root
ps -aux  | grep root  > procesos.txt 2>/dev/null
root=`wc -l < procesos.txt`
root=`expr $root - 2`

rm -f procesos.txt

echo $root
echo $total
echo $uptime
echo $statname

15.2 Configurar el mrtg

Añadir al fichero /etc/mrtg.cfg

Title[procesos]: Procesos
Target[procesos]:`/root/procesos.sh`
PageTop[procesos]: <h1>Procesos</h1>
MaxBytes[procesos]: 200
YLegend[procesos]: Procesos
ShortLegend[procesos]: Num.
XSize[procesos]: 300
YSize[procesos]: 100
Options[procesos]: nopercent,gauge
Background[procesos]: #BDBABD
Colours[procesos]: ORANGE#FF7500,BLUE#1000ff,DARK GREEN#006600,VIOLET#ff00ff
LegendI[procesos]: Procesos Root
LegendO[procesos]: Total Procesos


16 Generar el indice

Desde consola como root:
indexmaker  /etc/mrtg.cfg  > /var/www/mrtg/index.html

17 Bibliografía

  1. Pagina oficial mrtg:
    http://people.ee.ethz.ch/~oetiker/webtools/mrtg/
  2. Ubicación de este documento:
    http://usuario.tiscali.es/paco25abril/
  3. Pagina de linux :
    http://inicia.es/de/pacolinux
  4. Un ejemplo:
    http://mainake.escomposlinux.org/mrtg/carga.html
  5. Manual mrtg:
    http://libertonia.escomposlinux.org/story/2003/1/17/224253/241
  6. man: mrtg
  7. man:mrtg-reference

Índice de Materias

iptotal
14
mrtg
2
mrtg
procesos | indexmaker
SNMP
3

Sobre este documento...

Estadisticas de red, router, cpu: MRTG.

This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

The command line arguments were:
latex2html mrtg -split 0 -local_icons 1 -show_section_numbers -no_auto_link -no_navigation -html_version 4.0

The translation was initiated by paco on 2009-06-11


paco 2009-06-11