Un script de Shell para enviar alertas por correo electrónico cuando la memoria se está agotando
Un aspecto poderoso de los programas shell de Unix/Linux, como bash, es su increíble soporte para construcciones de programación comunes que le permiten tomar decisiones, ejecutar comandos repetidamente, crear nuevas funciones y mucho más. Puede escribir comandos en un archivo conocido como script de shell y ejecutarlos colectivamente.
Esto le ofrece un medio fiable y eficaz para la administración del sistema. Puede escribir scripts para automatizar tareas, por ejemplo, copias de seguridad diarias, actualizaciones del sistema, etc.; cree nuevos comandos/utilidades/herramientas personalizados y más. Puede escribir scripts que le ayuden a mantenerse al día con lo que ocurre en un servidor.
Uno de los componentes críticos de un servidor es la memoria (RAM), que tiene un gran impacto en el rendimiento general de un sistema.
En este artículo, compartiremos un pequeño pero útil script de shell para enviar un correo electrónico de alerta a uno o más administradores del sistema, si la memoria del servidor se está agotando.
Este script es particularmente útil para vigilar VPS Linux (servidores privados virtuales) con una pequeña cantidad de memoria, digamos de aproximadamente 1 GB ( aproximadamente 990 MB).
Configuración del entorno de prueba
- Un servidor de producción CentOS/RHEL 7 con la utilidad mailx instalada con un servidor de correo postfix en funcionamiento.
Así es como funciona el script alertmemory.sh: primero verifica el tamaño de la memoria libre, luego determina si la cantidad de memoria libre es menor o igual a un tamaño especificado (100 MB a los efectos de esta guía), se utiliza como punto de referencia para el tamaño de memoria libre menos aceptable.
Si esta condición es verdadera, generará una lista de los 10 procesos principales que consumen RAM del servidor y enviará un correo electrónico de alerta a direcciones de correo electrónico específicas.
Nota: Tendrá que realizar algunos cambios en el script (especialmente en la utilidad de envío de correo, use las opciones apropiadas) para cumplir con los requisitos de su distribución de Linux.
#!/bin/bash
#######################################################################################
#Script Name :alertmemory.sh
#Description :send alert mail when server memory is running low
#Args :
#Author :Aaron Kili Kisinga
#Email :[email
#License : GNU GPL-3
#######################################################################################
## declare mail variables
##email subject
subject="Server Memory Status Alert"
##sending mail as
from="[email "
## sending mail to
to="[email "
## send carbon copy to
also_to="[email "
## get total free memory size in megabytes(MB)
free=$(free -mt | grep Total | awk '{print $4}')
## check if free memory is less or equals to 100MB
if [[ "$free" -le 100 ]]; then
## get top processes consuming system memory and save to temporary file
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head >/tmp/top_proccesses_consuming_memory.txt
file=/tmp/top_proccesses_consuming_memory.txt
## send email if system memory is running low
echo -e "Warning, server memory is running low!\n\nFree memory: $free MB" | mailx -a "$file" -s "$subject" -r "$from" -c "$to" "$also_to"
fi
exit 0
Después de crear su script /etc/scripts/alertmemory.sh, hágalo ejecutable y establezca un enlace simbólico a cron.hourly.
chmod +x /etc/scripts/alertmemory.sh
ln -s -t /etc/cron.hourly/alertmemory.sh /etc/scripts/alertmemory.sh
Esto significa que el script anterior se ejecutará cada 1 hora mientras el servidor esté funcionando.
Consejo: Puede probar si funciona según lo previsto, establecer el valor de referencia un poco alto para activar fácilmente el envío de un correo electrónico y especificar un pequeño intervalo de unos 5 minutos.
Luego continúe verificando desde la línea de comando usando el comando gratuito proporcionado en el script. Una vez que confirme que está funcionando, defina los valores reales que le gustaría usar.
A continuación se muestra una captura de pantalla que muestra un correo electrónico de alerta de muestra.
¡Eso es todo! En este artículo, explicamos cómo utilizar el script de shell para enviar correos electrónicos de alerta a los administradores del sistema en caso de que la memoria del servidor (RAM) se esté agotando. Puede compartir cualquier idea relacionada con este tema con nosotros a través del formulario de comentarios a continuación.