¿Cuánto ancho de banda le estaré proporcionando a mis visitantes en mi propio servidor?


Objetivo del artículo: crear una página web dinámica donde se muestre una gráfica con la evolución del ancho de banda utilizado por los usuarios de nuestro propio servidor.

¿CUÁNTO ANCHO DE BANDA LE ESTARÉ
PROPORCIONANDO A MIS VISITANTES EN MI PROPIO SERVIDOR?

Objetivo del
artículo: crear una página web dinámica donde se muestre una gráfica
con la evolución del ancho de banda utilizado por los usuarios de
nuestro propio servidor, como esta http://www.ieduca.net/plot.png

PREÁMBULO

Con la llegada de la ‘alta velocidad’ a
los hogares españoles, no hay mejor forma de compartir información que
montar tu propio servidor (web, ftp, etc…) para tirar tus documentos
a la red. Esto ya vienen haciéndolo algunos usuarios de Linux desde
hace tiempo, y a pesar de que la tal ‘alta velocidad’ tiene sus
limitaciones, uno experimenta un reto en esto de montar tu propio
‘server’ como si de un proveedor de hospedaje se tratara. Hacer constar
aquí brevemente que la renombrada ‘alta velocidad’ no es sino un
planteamiento comercial de las telefónicas con silencio planificador
del gobierno. A todas luces el ADSL por el par de cables de cobre es
una buena opción para las zonas rurales, y no cabe duda de que los
núcleos urbanos tienen su mejor opción en los anillos de conexión a
internet por cable. Sin embargo, aunque la lógica parezca ésta, se hace
alrevés: el carísimo ADSL español se implanta con prioridad en las
zonas urbanas, el cable no funciona como debería funcionar allí donde
lo hay, y las zonas rurales siguen con el modem a 56kbs. El problema no
es sólo de esta estrategía comercial de las telefónicas, sino de un
gobierno que permite el abuso y no planifica en beneficio de los
ciudadanos.

Pero para no salirme del tema, vuelvo al
hilo principal del artículo. Suponemos que tienes ADSL u otro sistema
de alta velocidad en casa y tienes montado un servidor de contenidos
para internet. Te habrás preguntado más de una vez si ese servidor tira
adecuadamente, es decir, si da un servicio adecuando a tus visitantes.
Lo que está claro es que tu conexión tiene unos límites, y que si
tienes, por ejemplo, ADSL 256 significa que tu ancho de banda es de 32
kbytes/s para la entrada y 16 kbytes/s para la salida. Para un usuario
que realiza labores de cliente, esta relación está bien; sin embargo,
para los propositos que nos traen aquí, la relación no es la adecuada
ya tan sólo podemos darle a los visitantes de nuestro propio ‘server’
un máximo de 16 kbytes/s, desperdiciando la mayoría de esos 32 kbytes/s
de entrada. En el caso de varias peticiones simultáneas (por ejemplo,
varios usuarios se descargan desde nuestro FTP un documento o
programa), el ancho de banda de 16 kbytes/s se tiene que repartir. A
pesar de todo, esos 16 kbytes/s son muy valiosos y pueden ofrecer mucho
a tus visitantes: TODO DEPENDE DE TU GRADO DE IMPLICACIÓN EN LA
CONSTRUCCIÓN DE LA INTERNET (No lo dejes todo a las telefónicas y crea
contenidos alternativos. Además, da un paso más y. ¡dale derechos de
copia y modificación a tu público sobre tus documentos! La única forma
de cambiar esta sociedad es que empieces a cambiar tú)

Tengo que recordarte que no te voy a
explicar como se monta un servidor, tan sólo te voy a mostrar como
obtener un gráfico de la evolución de la velocidad de conexión a tu
máquina.

SOFTWARE NECESARIO:

Tienes que instar un programa llamado iptraf,
disponible desde tu línea de comandos con:

apt-get iptraf (para distros Debian o
basadas en Debian)
urpmi iptraf (para Mandrake)

De esta forma instalarás los binarios ya
precompilados para tu arquitectura, y te aseguras de que si fuera
necesario algún otro paquete para satisfacer las dependencias, éste se
instalará conjuntamente.

También están disponibles las fuentes,
para que las puedas compilar, en la web: http://iptraf.seul.org/ . La última
versión a la hora de escribir este documento fue la 2.7.0 y la puedes
descargar directamente de ftp://the.wiretapped.net/pub/security/network-monitoring/iptraf/iptraf-2.7.0.tar.gz

(Nota: Asegúrate que utilizas la versión
2.7.0 ó en otro caso los scripts que más tarde te presento en este
documento pudieran no funcionar)

iptraf es un programa de
estadisticas de red para Linux. Este será el que nos ofrezca los datos
que nosotros queremos llevar a la web y hacerlos públicos. Debes
familiarizarte con él. Para arrancarlo abre un consola y llamalo
(recuerda que si tu server es remoto, debes hacer un telnet). Ejecuta
el programa como root. Con el teclado te vas moviendo por su menú.
Observa que el programa te ofrece estadísticas detalladas de cada una
de las interfaces de tu ordenador (tarjetas ethernet, conexiones ppp,
…) . Principalmente hay dos cosas que quiero que hagas con iptraf:

  • Quiero que veas las estadísticas
    detalladas para la interface con la que te conectas a internet
    (Detailed interface statistics); en mi caso la interface es ppp0,
    porque tengo el router conectado en modo monopuesto y lo arranco con
    pppoe; selecciona adecuadamente tu interface de conexión a internet
    haciendo varias pruebas y mira los datos que te ofrece de cómo va
    evoluacionando tu conexión (paquetes,, bytes, totales, de entrada, de
    salida, por IP, TCP, UDP, ICMP, Other IP y Non-IP), y en la parte
    inferior te informa sobre la media cada 5 segundos del total, la
    entrada y la salida (en kbs o paquetes/s). !Ojo¡, que tu interface
    puede ser la tarjeta de red conectada al router (por ejemplo, eth0),
    si tu configuración es diferente a la mía.
  • La otra cosa que quiero que
    observes es que con la opción ‘Configure’ del menú principal se entra
    en el menú de configuración del programa. La opción ‘logging’ puede
    estar ‘on’ u ‘off’. Si está activada significa que se está añadiendo
    cada cierto intervalo de tiempo los datos mostrados en la pantalla a
    un fichero de inventario de sucesos (usualmente lo llamamos log).
    Vamos a verlo detenidamente. Activa esta opción de ‘logging’ en este
    menú. Después pulsa sobre la opción ‘timers’ y se te abrirá un submenú
    en el que tendrás que seleccionar la opción ‘logging interval’. Una
    vez dentro, escribe 1, y acepta con enter. Lo que acabamos de hacer
    significa que indicamos al programa que ha de escribir en un fichero
    log cada minuto los datos de la pantalla, con el tipo de estadísticas
    seleccionado para la interface seleccionada. El programa iptraf aún no
    está escribiendo ningún fichero log, falta indicarle el nombre del
    fichero. Vuelve al menú inicial del programa saliendo de los menús
    (exit) y entra de nuevo en las ‘Detailed interface statistics’, elige
    tu interface y… ahora sí que te pregunta el nombre del fichero para
    almacenar el log. En mi caso le dejo el nombre y trayectoria por
    defecto: /var/log/iptraf/iface_stats_detailed-ppp0.log
  • Salte del programa
  • ¿Y para que sirve en modo consola el
    programa iptraf para nuestros objetivos?…. Para nada. Nosotros no
    vamos a hacerlo correr en modo consola, sino que lo vamos a hacer
    correr en modo background, como demonio. Te he hecho que observes como
    funciona el programa para que te acostumbres a su funcionamiento.
    Nosotros lo vamos a llamar como demonio porque no queremos tener
    indefinidamente una consola abierta ¿verdad? La llamada como demonio
    permite configurarlo, como lo habíamos hecho antes en modo consola, a
    través de una serie de parámentros que le pasaremos. Para más
    información sobre los parametros posibles mire la página: http://iptraf.seul.org/2.7/backop.html
    En nuestro caso vamos a llamar al
    demonio de esta forma:
    iptraf -d ppp0 -B
    que significa:
    -d ppp0: es la interfaz sobre la que
    escribe los datos en el log. Si tu interfaz es la eth0 tendrás que
    cambiarlo por -d eth0,
    -B: es el tipo de estadísticas sobre las
    que va a llevar el log, concretamente del tipo ‘detailed interface
    statistics’. (Nota: no uses otro tipo, porque los script que te comento
    después en este documento sólo funcionan con ese tipo de estadísticas).

    No le pongo más paramentros, porque
    supongo que el intervalo de ‘longeo’ por defecto es 1 minuto (no existe
    parámetro para especificarlo), y no le especifico ‘timeout’ para que el
    demonio nunca termine su ejecución, por lo que se ejecutará de forma
    indefinida.

    El demonio tendrás que llamarlo justo
    cuando arranca la conexión a internet y comienza a funcionar el
    servidor. Yo tengo el pppoe automatizado de tal forma que al arrancar
    el servidor, se conecta a internet (adsl-start). También de forma
    automatizada arranco el iptraf en modo demonio incluyendo
    ‘iptraf -d ppp0 -B’ al final del fichero
    ‘/etc/rc.d/rc.local’. Ten en cuenta que ppp0 ya debe de existir para
    cuando iptraf es llamado.

    Ya tenemos las estadísticas en el log,
    pero ahora… ¿como hago el gráfico? Para ello necesitamos instalar
    otro programa, llamado gnuplot. Es una
    herramienta interesantísima para estudiantes, porque con él podemos
    hacer todo tipo de gráficas. Funciona en modo consola, pero ya hay GUIs
    para él en los entornos KDE o Gnome. Nosotros tenemos suficiente con el
    modo consola para nuestro objetivo. Si no lo tienes aún en tu sistema,
    instálalo con la orden:

    apt-get gnuplot (para Debian o uno de
    sus derivados)
    urpmi gnuplot (para Mandrake)

    Si tienes otra distro, busca tu paquete,
    o bien, compila las fuentes de: http://www.gnuplot.info/

    Una de las caracteristicas de Gnuplot es
    que puede leer ficheros de texto con los datos de entrada y mostrarnos
    como una imagen png la gráfica de salida. Bastará con decirle a Gnuplot
    que lea el fichero log de iptraf y que nos deje el fichero png
    resultante en la trayectoria por donde el Apache saca las páginas web.
    Lo malo es que el fichero log creado con iptraf no es entendible por
    Gnuplot. La forma básica de los ficheros de datos Gnuplot son columnas
    de variables. Para ello he construido un pequeño programa en perl que es
    capaz de traducir el fichero log de iptraf a datos legibles por
    gnuplot. El programa lo puedes descargar de http://www.ieduca.net/iptraf/preparalog.iptraf.pl.txt.
    Renómbralo quitándole el .txt, llevalo a un lugar que no sea accesible
    a tus visitantes, y dale atributos de ejecución (por ejemplo con chmod
    755 ó 700 si el propietario es root). Adicionalmente tendrás que
    configurarlo dándole los valores adecuados a cuatro variables que
    aparecen al inicio del programa. Configúralo con un simple editor de
    texto, y si te atreves, con vi.

    El programa http://www.ieduca.net/iptraf/preparalog.iptraf.pl.txt
    hace dos cosas:
    1.- Prepara el fichero log para que
    pueda entenderlo Gnuplot como se ha explicado.
    2.- Va eliminando del fichero log
    original de iptraf toda aquella información antigua que ya no es
    necesaria para la representación gráfica. Esto es fundamental ya que en
    caso contrario podría crecer en tamaño indefinidamente con el
    consiguiente colapso del sistema.

    Por otra parte habrá que llamar a
    Gnuplot con un script donde se espeficíque, además de dónde está
    situado el nuevo fichero log que le servirá como entrada de datos, el
    tipo de gráfico, los títulos, los intervalos de representación, etc…
    Este script te lo puedes descargar de http://www.ieduca.net/iptraf/gnuplot.iptraf.script.txt.
    Renombralo quitándole el .txt y llévatelo al path junto al anterior
    script en perl. Edítalo para configurarlo a tu gusto, ya que es
    sumamente sencillo. Pónle atributos de lectura y escritura activos, y
    propietario root.
    Ya casi está todo. Vamos a probarlo
    primero antes de automatizarlo:

    -Abre una consola y pasate a root.
    -Si no tuvieras ya arrancado el iptraf
    como demonio, hazlo ahora con: iptraf -d ppp0 -B. Déjalo que corra al
    menos 5 minutos para que vaya registrando datos. Mientras, navega o
    bájate el correo, para ir consumiendo ancho de banda.
    -Pásate al path donde tienes los dos
    scripts.
    -Primero llama al script en perl para
    preparar los datos para Gnuplot, de esta forma:
    perl /www/tudominio/preparalog.iptraf.pl
    (cambia el path para tu caso concreto)
    -Comprueba que en /www/tudominio se ha
    creado un archivo llamado gnuplot.data
    -Después llama al script con Gnuplot
    para crear el gráfico de esta forma:
    gnuplot
    /www/tudominio/gnuplot.iptraf.script > /www/tudominio/html/plot.png
    -Finalmente, desde un navegador, tienes
    que visionar el gráfico correctamente:
    http://tudomino/plot.png

    Si todo ha salido bien, lo único que te
    falta es automatizarlo con el CRON de Linux, es decir, hacer que se
    ejecuten ambos scripts como usuario root cada 5 minutos. Nota: procura
    que no se ejecuten simultáneamente, ya que es posible que el segundo
    programa intente coger datos del primero sin que éste haya terminado;
    es decir, que se ejecute el script en perl para preparar los datos un
    minuto antes que la llamada a Gnuplot para construir el gráfico. Si
    tienes tu servidor junto a tí, hay muchos GUIs para ajustar la tareas
    del CRON, o bien, si estás trabajando con un server remoto un buen
    software es webmin. Pero en todo
    caso, desde la linea de comandos podrás hacerlo si sigues estas
    instrucciones de http://linux.fotoarea.com/cron.html
    O bien, añade al /etc/crontab las lineas:

    0,5,10,15,20,25,30,35,40,45,50,55 * * * * root \
    gnuplot /www/tudominio/gnuplot.iptraf.script > /www/tudominio/html/plot.png

    4,9,14,19,24,29,34,39,44,49,54,59 * * * * root \
    perl /www/tudominio/preparalog.iptraf.pl

    Autor: Manuel Pérez López
    Fecha: Agosto de 2003
    Licencia: GFDL
    Se permite la copia, modificación y/o
    distribución bajo los términos de la licencia GFDL. Más información en http://www.gnu.org/copyleft/fdl.html

    Este post ha sido traido de forma automatica desde https://web.archive.org/web/20140625063149/http:/bulma.net/body.phtml?nIdNoticia=1856 por un robot nigromante, si crees que puede mejorarse, por favor, contactanos.


    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.