Diferencia entre revisiones de «Monitorizar un proceso»
Ir a la navegación
Ir a la búsqueda
(Página creada con «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 [https://en.wikipe...») |
|||
Línea 12: | Línea 12: | ||
while [[ today != doomsday ]] ; | while [[ today != doomsday ]] ; | ||
do | do | ||
fichero= | fichero=/tmp/NombreProceso.$(date +%Y-%m-%d).stats | ||
echo -n "$(date +%d-%H:%M:%S) " >> ${fichero} | echo -n "$(date +%d-%H:%M:%S) " >> ${fichero} | ||
ps -e -o fname,pid,pcpu,etime,vsz,osz,rss | grep NombreProceso >> ${fichero} | ps -e -o fname,pid,pcpu,etime,vsz,osz,rss | grep NombreProceso >> ${fichero} |
Revisión del 18:33 30 mar 2018
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=/tmp/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__