Estoy buscando una declaración para verificar si la CPU está por encima del 90% durante 10 minutos, si la CPU no baja del 90% durante más de 10 minutos, entonces alerta
Mi guión hasta ahora:
cpu_used = "90"
Tomado deEl guión de Hugh.
cpu=`top -b -n2 -p 1 | fgrep "Cpu(s)" | tail -1 | awk -F'id,' -v prefix="$prefix" '{ split($1, vs, ","); v=vs[length(vs)]; sub("%", "", v); printf "%s%.1f%%\n", prefix, 100 - v }'`
ejemplo
if [ $cpu -ge $cpu_used ] ; then
echo $cpu
fi
¿Cómo agregar 10 minutos a la declaración if anterior para verificar si la CPU está por encima del 90% durante más de 10 minutos antes de enviar la alerta? gracias de antemano
Respuesta1
La única forma de lograrlo es registrar la utilización de la CPU durante un intervalo de 10 minutos.
A continuación se explica cómo verificar si su CPU tuvo una utilización superior al 90% durante más de 10 minutos.
#!/bin/bash
starttime=$(date +%s)
cpu_used=90
retval="Over 90% for 10 min"
while [ $(($(date +%s) - $starttime)) -le 600 ]
do
cpu=`top -b -n2 -p 1 | fgrep "Cpu(s)" | tail -1 | awk -F'id,' -v prefix="$prefix" '{ split($1, vs, ","); v=vs[length(vs)]; sub("%", "", v); printf "%s%.1f%%\n", prefix, 100 - v }'`
cpu=${cpu::-1}
cpu=${cpu%.*}
# If at any time the current cpu utilization is below the threshold, exit.
if [ $cpu -le $cpu_used ] ; then
retval="Not over 90% for 10 min"
break
fi
# Longer you sleep, less resource intensive. However, longer sleep decreases the accuracy.
sleep 1
done
echo $retval