Email: pacolinux arroba aldarias punto 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
MRTG: Multirouter Traffic Grapher Es una aplicación que permite sacar estadisticas de todo tipo.
Algunas estadisticas:
Un ejemplo:
http://mainake.escomposlinux.org/mrtg/
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:
Como root hay q hacer todo esto:
apt-get install mrtg mrtgutils mrtg-contrib
Siendo:
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
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(%);  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
Se pueden ver como se configuran mas cosas viendo el contenido del fichero:
/etc/mrtg.cfg
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
Abrir con el navegador:
\var\www\mrt\
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
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
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.
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
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
Deberemos hacer 3 cosas:
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.
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
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
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
Deberemos instalar la utilidad hddtemp:
apt-get install hddtemp
Probar que funciona:
hddtemp /dev/hda
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
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
Deberemos instalar la utilidad iptotal, desde consola como usuario root:
apt-get install iptotal
Probar que funciona:
iptotal -r 5 eth0Siendo: -r 5 el tiempo que tarda en hacer los cálculos y eth0 el interface que está monitorizando.
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
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
Vamos a usar la orden ps -aux, la guardamos en un fichero y contamos cuantas líneas hay.
#!/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
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
indexmaker /etc/mrtg.cfg > /var/www/mrtg/index.html
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