Monitorizar un proceso
Ir a la navegación
Ir a la búsqueda
Pongamos que queremos monitorizar la CPU y memoria que consume un proceso Linux a lo largo del tiempo y no tenemos ninguna herramienta en el servidor, ni munin, ni Cacti, ni nada parecido. O puede que tengamos estas herramientas pero que necesitemos un gráfico con una granularidad de menos de 5 minutos.
Este método no tiene dependencias en el servidor en el que se ejecuta. Una vez generados los datos este ejemplo usa GNUplot para pintar el resultado, pero se podría usar una hoja de cálculo.
Recolectar los datos
En la maquina en la que corra el proceso NombreProceso creamos el siguiente script monitor.sh
:
#!/bin/bash while [[ today != doomsday ]] ; do fichero=/var/tmp/lac/NombreProceso.$(date +%Y-%m-%d).stats echo -n "$(date +%d-%H:%M:%S) " >> ${fichero} ps -e -o fname,pid,pcpu,etime,vsz,osz,rss | grep NombreProceso >> ${fichero} sleep 5 ; done;
Y lo lanzamos asi:
nohup ./monitor.sh &
Pintarlos
En un GIF con GNUplot por ejemplo, seria:
gnuplot << __EOF__ set terminal gif set style line 1 lt 1 lw 0 set style line 2 lt 2 lw 0 set style line 3 lt 3 lw 0 set style line 4 lt 4 lw 0 set style line 5 lt 5 lw 0 set style line 6 lt 6 lw 0 set style line 7 lt 7 lw 0 set style line 8 lt 8 lw 0 set xdata time set timefmt "%d-%H:%M:%S" set format x "%H:%M" plot "$1" using 1:4 with lines title "mbe-cache1" ls 1, "$2" using 1:4 with lines title "mbe-cache2" ls 2, "$3" using 1:4 with lines title "mbe-cache3" ls 3 quit __EOF__