Monitorizar el uso de la CPU y avisar por mail

Actualizado el jueves, 16 enero, 2020

Monitorizar el uso de la CPU y avisar por mail.

Al igual que en otras labores, los sitios webs también evolucionan. Vamos aumentando las visitas, agregamos nuevas herramientas o scripts a los servidores, mejoramos nuestros sitios, etc…

Todos los añadidos que apliquemos repercuten en el consumo del sistema, y normalmente el componente que más lo sufre es la CPU.

En este articulo de hoy, presentamos un interesante script bash que monitoriza el uso de la CPU y al superar el umbral definido nos envía un correo electrónico informándonos de su estado.

 

Monitorizar el uso de la CPU y avisar por mail

Creamos el script bash.

nano /opt/scripts/alerta-cpu.sh

Copia y pega el siguiente script ,pero atento a las opciones:
  • if [ «$cpuuse» > 80 ] : El umbral de uso está establecido en el 80%, modifica según tus necesidades.
  • mail@dominio.com : inserta tu correo electrónico.

#!/bin/bash
cpuuse=$(cat /proc/loadavg | awk '{print $1}')

if [ "$cpuuse" > 80 ]; then

SUBJECT="ATTENTION: CPU Load Is High on $(hostname) at $(date)"

MESSAGE="/tmp/Mail.out"

# your valid email
TO="mail@dominio.com"

  echo "CPU Current Usage is: $cpuuse%" >> $MESSAGE

  echo "" >> $MESSAGE

  echo "+------------------------------------------------------------------+" >> $MESSAGE

  echo "Top CPU Process Using top command" >> $MESSAGE

  echo "+------------------------------------------------------------------+" >> $MESSAGE

  echo "$(top -bn1 | head -20)" >> $MESSAGE

  echo "" >> $MESSAGE

  echo "+------------------------------------------------------------------+" >> $MESSAGE

  echo "Top CPU Process Using ps command" >> $MESSAGE

  echo "+------------------------------------------------------------------+" >> $MESSAGE

  echo "$(ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10)" >> $MESSAGE

  mail -s "$SUBJECT" "$TO" < $MESSAGE

  rm /tmp/Mail.out

  fi

Guarda el archivo y cierra el editor.

Ahora creamos una tarea cron que ejecute el script cada 10 minutos.

crontab -e

Agregamos la tarea.
*/10 * * * * /bin/bash /opt/scripts/alerta-cpu.sh

Guarda la tarea y cierra el editor.

Reiniciamos las tareas.

# Debian, Ubuntu, y derivados
sudo service cron restart

# CentOS, RHEL, y derivados
systemctl restart crond.service

El script se ejecutara automáticamente cada 10 minutos, y si ha sobrepasado el umbral definido de 80% te enviara un mail.

 

Canales de Telegram: Canal SoloLinux – Canal SoloWordpress

Espero que este articulo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales.

 

Agregar comentario