Foros del Web » Soporte técnico » Sistemas Operativos »

Loggear el uso de ancho de banda con bwbar

Estas en el tema de Loggear el uso de ancho de banda con bwbar en el foro de Sistemas Operativos en Foros del Web. En una de mis multiples visitas de estos dias a www.kernel.org, me dio por pinchar en la barrita que marca el ancho de banda que ...
  #1 (permalink)  
Antiguo 01/05/2002, 05:01
Avatar de lical
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: $PWD
Mensajes: 1.267
Antigüedad: 23 años, 5 meses
Puntos: 0
Loggear el uso de ancho de banda con bwbar

En una de mis multiples visitas de estos dias a www.kernel.org, me dio por pinchar en la barrita que marca el ancho de banda que estan utilizando. Cual fue mi sorpresa que pude descargarme el programa que usaban ahi para controlar el ancho de banda, y me gusto mucho.

Ese programa, cada X segundos, genera un archivo de texto que te dice: "The current bandwidth use is XXX Kbits/s" (aunque puedes pedirle que lo muestre en Mbits/s y Gbits/s), y una imagen como la de kernel.org comparando el valor del ancho de banda actual con un tope que tu le indicas.

De esta manera puedo saber en un momento dado el ancho de banda de subida que mi servidor esta utilizando.

Ahora es cuando pido vuestra ayuda. Con algun script en BASH, o un script PHP que se ejecutase desde consola, o algo asi, se podria conseguir hacer un log accediendo cada X segundos a ese archivo e ir guardando un archivo que contenga el valor de cada X segundos y por otro lado ir generando un archivo que contenga la media de todos los registros que se han tomado.

Lo que pasa es que yo no me veo capaz de conseguir esto en PHP ni mucho menos en BASH, pregunto por si a alguien puede interesarle la idea. Ademas no se si hay soluciones similares ya, pero creo que no.


Un saludo,

<hr width=80%>
lical -> Usuario registrado de Linux #254225<br><br>
¿Piensas que el software puede ser algo más?
[B]<a href="http://www.zonasiete.org/" target="_blank">www.zonasiete.org</a>
Acercando el proyecto GNU/Linux a todos.</b
  #2 (permalink)  
Antiguo 01/05/2002, 05:28
Avatar de Ferdy
Colaborador
 
Fecha de Ingreso: junio-2001
Ubicación: España
Mensajes: 1.430
Antigüedad: 24 años
Puntos: 0
Re: Loggear el uso de ancho de banda con bwbar

UHm........ vamos a ver... ( código sobre la marcha )

Código:
&lt;?php

$segundos = &quot;5&quot;;
$archivo = &quot;/var/log/loqeusea/foo/bar&quot;;
$guarda_media = 
&quot;/var/log/loquesea/foo/media&quot;;
$guarda_regs = &quot;/var/loquesea/foo/regs&quot;;
$reg_exp = &quot;The site i&quot;;

$regs = array();
$media = &quot;&quot;;

while (1)
{
  $cnt = fread(fopen($archivo,&quot;r&quot;),filesize($archivo));
  ereg($reg_exp,$cnt,$vals);
  $regs[] = $vals[1];
  
  media();
  guarda();
  sleep($segundos);
}

exit;

function media()
{
  global $regs,$media;
  $sum = 0;
  for ( $i = 0 ; $i &lt; count($regs) ; $i++ )
  {
    $sum += $regs[$i];
  }
  $media = (int) ($sum / count($regs));
}

function guarda()
{
  global $media,$regs;
  $f = fopen($guarda_media,&quot;r&quot;);
  fputs($f,$media);
  fclose($f);
  $fp = fopen($guarda_regs,&quot;r&quot;);
  fputs($fp,serialize($regs));
  fclose($fp);
}

?&gt;
Espero que sirva, el código va sobre la marcha, pero no es nada del otro mundo, vamos que es sencillo de modificar.

Salu2.Ferdy

<hr />Usuario registrado de Linux #241564
<a href="http://www.ferdyx.org">FerdyX.org</a> - Web Open Source
  #3 (permalink)  
Antiguo 01/05/2002, 05:31
Avatar de Ferdy
Colaborador
 
Fecha de Ingreso: junio-2001
Ubicación: España
Mensajes: 1.430
Antigüedad: 24 años
Puntos: 0
Re: Loggear el uso de ancho de banda con bwbar

Ya se me olvidaba...

ejemplo de $reg_exp:
Código:
$reg_exp = &quot;The current bandwidth use is (.*) (unidades)&quot;;
Pon donde pone (unidades) las unidades que le hayas dicho al programa

Salu2.Ferdy

<hr />Usuario registrado de Linux #241564
<a href="http://www.ferdyx.org">FerdyX.org</a> - Web Open Source
  #4 (permalink)  
Antiguo 01/05/2002, 11:35
Avatar de lical
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: $PWD
Mensajes: 1.267
Antigüedad: 23 años, 5 meses
Puntos: 0
Re: Loggear el uso de ancho de banda con bwbar

Por si a alguien le sirve, con las modificaciones que Ferdy me comento, el script quedaria algo asi:

Código:
 #!/usr/bin/php -q
&lt;?php

$segundos = &quot;5&quot;;
$archivo = &quot;/var/www/html/ubar/ubar.txt&quot;;
$guarda_media = &quot;/var/www/html/ubar/media&quot;;
$guarda_regs = &quot;/var/www/html/ubar/regs&quot;;
$reg_exp = &quot;Current bandwidth utilization   (.*) kbit/s&quot;;

$regs = array();
$media = &quot;&quot;;

while (1)
{
$cnt = fread(fopen($archivo,&quot;r&quot;),filesize($archivo));
ereg($reg_exp,$cnt,$vals);
$regs[] = $vals[1];

media();
guarda();
sleep($segundos);
}

exit;

function media()
{
        global $regs,$media;
        $sum = 0;
        for ( $i = 0 ; $i &lt; count($regs) ; $i++ )
        {
                $sum += $regs[$i];
        }
        $media = number_format( ($sum / count($regs)), 7) ;
}

function guarda()
{
        global $media,$regs,$guarda_media,$guarda_regs;
        $f = fopen($guarda_media,&quot;w&quot;);
        fputs($f,$media);
        fclose($f);
        $fp = fopen($guarda_regs,&quot;w&quot;);
        fputs($fp,serialize($regs));
        fclose($fp);
}

?&gt;
Para hacer una media durante un corto periodo de tipo ( 5 - 8 mins ) puede servir, pero hay que tener en cuenta que el archivo donde registra cada valor crece de forma impresionantemente rapida y que ademas cuando este archivo es muy grande, los recursos que toma el script son mayores.

Pero a mi me es util, gracias Ferdy.

Un saludo,

<hr width=80%>
lical -> Usuario registrado de Linux #254225<br><br>
¿Piensas que el software puede ser algo más?
[B]<a href="http://www.zonasiete.org/" target="_blank">www.zonasiete.org</a>
Acercando el proyecto GNU/Linux a todos.</b
  #5 (permalink)  
Antiguo 01/05/2002, 17:22
Avatar de Ferdy
Colaborador
 
Fecha de Ingreso: junio-2001
Ubicación: España
Mensajes: 1.430
Antigüedad: 24 años
Puntos: 0
Re: Loggear el uso de ancho de banda con bwbar

Se puede modificar la función guarda para que meta los valores en una base de datos...... pero vamos, lo de guardar el array de registros en un fichero es por si se quiere dejar &quot;constancia&quot; pero se puede omitir...

De nada lical

Salu2.Ferdy


<hr />Usuario registrado de Linux #241564
<a href="http://www.ferdyx.org">FerdyX.org</a> - Web Open Source
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:49.