hace tiempo tuve la suerte de realizar un curso en RedHat sobre linux performance tunning. El curso tenia muchisima teoria y era un poco tedioso, pero hoy recorde uno de topics tratados y se me ocurrio plasmarlos aca, no solo para tenerlos a mano para la proxima sino tambien para compartirlo con ustedes.
Hoy se me planteo un cuestionamiento:
Qué programas utilizaría para graficar el estado de la memoria RAM a lo largo de todo un día, tomando en cuenta intervalos de cinco minutos?
Por supuesto que hay miles de formas de hacer esto. Se podria utilizar alguna herramienta tipo Nagios, Munin, Cacti, etc. O bien podriamos hacer algo un poco mas artesanal con herramientas como: vmstat, sar, awk, gnuplot, , free -m, ksar, etc.
Aca les dejo una forma artesanal para recolectar datos (en este caso el estado de la RAM) y graficarlo usando gnuplot.
Primero un poco de matematica:
5min = 300s 1hr = 3600s 24hs = 86400s 1dia en secs/5min en secs=86400/300=288
Una vez que tenemos el intervalo expresado en segundos y la cantidad de veces que queremos que se ejecute procedemos a correrlo y guardar el output en un fichero. En este ejemplo uso -r para obtener la info de la memoria pero podrian estar pidiendole al sar un monton de datos mas sobre el estado del CPU, net, disk, etc.
# sar -r 300 288 > ~/meminfo.out &
Una vez qe se recolecto data del dia le sacamos los datos no numericos del sar para que pueda ser graficado claramente y guardamos el output.
# tail -n +4 meminfo.out | awk '/^[01]/ {print $0}' > ~/meminfo.dat
Ahora nos toca graficar esta informacion, para esto podemos usar la interfaz interactiva de gnuplot o simplemente crear un fichero con la lista de sentencias a ejecutar:
# echo -e 'set xdata time set timefmt "%H:%M:%S" set xlabel "TIME" set ylabel "Memory (Kb)" plot "meminfo.dat" using 1:2 title "free" with lines replot "meminfo.dat" using 1:5 title "buffered" with lines replot "meminfo.dat" using 1:6 title "cached" with lines' > meminfo.gplot
Basicamente las sentencias le dicen a gnuplot que en el ejeX va a estar el tiempo (con un cierto formato) y en el ejeY estara expresado en Kb. Luego ploteamos 3 lineas indicandole cuantos valores y de que columna debe tomarlos, en este caso 1:2 para que tome de a 1 valor de la columna 2. (usamos replot para que se ploteen sobre el mismo grafico).
Por ultimo ploteamos (es probable qe si estamos por ssh tengamos que fowardear X11 para poder ver el ploteo):
# gnuplot meminfo.gplot
Espero que haya quedado claro, no es la forma mas facil (seria mas sencillo instalar algo como nagios, cacti, munin o cosas asi), pero me parece bien didactica para practicar varias cosas y de paso a prender a usar gnuplot que es una herramienta super potente y muy util en algunos casos.
see you soon


se qe este post es un poco atrasado (esta vez no voy a perder tiempo disculpandome por haber abandonado el blog), pero realmente hacia falta escribir sobre lo que vivimos en bahia blanca durante las jornadas del sur 2009.
para los que no estaban enterados este sabado se cerro el periodo de votacion en Debian para la eleccion del DPL (Debian Project Leader), este año hubo solo dos postulantes, Stefano Zacchiroli (AKA zack) y el actual dpl, Steve McIntyre (AKA Sledge).
muchos conocen