Un script de shell para enviar una alerta por correo electrónico cuando la memoria se agota


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 confiable y eficaz de administración del sistema. Puede escribir scripts para automatizar tareas, por ejemplo, copias de seguridad diarias, actualizaciones del sistema, etc. crear nuevos comandos personalizados/utilidades/herramientas y más allá. Puede escribir scripts para ayudarle a mantenerse al día con lo que se está desarrollando 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 script de shell pequeño pero útil 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 mantener un ojo en Linux VPS ( Servidores privados virtuales ) con una pequeña cantidad de memoria; aproximadamente 990MB ).

  1. A CentOS/RHEL 7 production server with mailx utility installed with working postfix mail server.

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 específico ( 100 MB para los fines 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 envía un correo electrónico de alerta a las direcciones de correo electrónico especificadas.

Shell Script para verificar la memoria del servidor

#!/bin/bash 
#######################################################################################
#Script Name    :alertmemory.sh
#Description    :send alert mail when server memory is running low
#Args           :       
#Author         :Aaron Kili Kisinga
#Email          :[email protected]
#License       : GNU GPL-3	
#######################################################################################
## declare mail variables
##email subject 
subject="Server Memory Status Alert"
##sending mail as
from="[email protected]"
## sending mail to
to="[email protected]"
## send carbon copy to
also_to="[email protected]"

## 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 , conviértalo en un ejecutable y en 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 la secuencia de comandos anterior se ejecutará cada 1 hora mientras el servidor esté en ejecución.

Luego, continúe verificando desde la línea de comandos usando el comando free que se proporciona 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 usar shell script 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 opinión relacionada con este tema con nosotros a través del formulario de comentarios a continuación.