08 febrero 2005

Creando gráficos con rrdtool

Bueno, ya tengo datos de memoria, y de carga de cpu. He creado el script "gráficos.sh" en el que con funciones y a base de repeticiones deposito los gráficos en un directorio, para luego verlos desde una página web mediante snmp:

#!/bin/bash

AHORA=`date +%s`
HACE_UN_DIA=$(($AHORA-86400))
HACE_DOS_DIAS=$(($AHORA-172800))
HACE_UNA_SEMANA=$(($AHORA-604800))
HACE_UN_MES=$(($AHORA-2419200))
HACE_UN_ANO=$(($AHORA-29030400))


dibuja_grafico()
{
/usr/local/bin/rrdtool graph /usr/local/www/data-dist/rrd/imagenes/servidor1/$1 -s $2 -e $3 -a PNG -b 1024 --width=700 DEF:ramt=/usr/local/www/data-dist/rrd/db/memoria1.rrd:ramtotal:MAX DEF:ramu=/usr/local/www/data-dist/rrd/db/memoria1.rrd:ramusada:MAX DEF:swu=/usr/local/www/data-dist/rrd/db/memoria1.rrd:swapusada:MAX AREA:ramt#80ff80:"RAM Libre\n" AREA:ramu#8080ff:"RAM Usada" GPRINT:ramu:LAST:"RAM Usada Ahora\:%8.2lf %s" GPRINT:ramu:AVERAGE:"RAM media usada\:%8.2lf %s " GPRINT:ramu:MAX:"RAM maxima usada\:%8.2lf %s\n" LINE1:swu#ffffff:"Swap Usada" GPRINT:swu:LAST:"SWAP usada actualmente\:%8.2lf %s" GPRINT:swu:AVERAGE:"Swap media usada\:%8.2lf %s " GPRINT:swu:MAX:"Swap maxima usada\:%8.2lf %s\n" LINE1:ramu#0000ff
}
dibuja_grafico 'memoriaa_ultimo_dia.png' $HACE_UN_DIA $AHORA
dibuja_grafico 'memoriab_dos_dias.png' $HACE_DOS_DIAS $AHORA
dibuja_grafico 'memoriac_ultima_semana.png' $HACE_UNA_SEMANA $AHORA
dibuja_grafico 'memoriad_ultimo_mes.png' $HACE_UN_MES $AHORA
dibuja_grafico 'memoriae_ultimo_ano.png' $HACE_UN_ANO $AHORA

El truquito de las letras detrás de la palabra memoria, es simplemente porque si hago un autoindex (que pretendía hacerlo en python) conseguimos que siga el orden de menos a más tiempo

Hay un pequeño fallo todavía, y son las unidades que salen en la gráfica. No se refiere a bytes, sino a miles por eso es un poco extraño, cuando encuentre la corrección debería ponerla aquí.

No hay comentarios: