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.