Tengo un servidor Linux. Me gustaría monitorear la cantidad de uso de memoria y si está por encima de cierto umbral (digamos 512 MB), haga que envíe un correo electrónico al administrador automáticamente.
¿Cómo puedo hacer eso?
Puede obtener el uso de memoria a través del free
comando. Un pequeño análisis de su salida le dará la memoria utilizada actualmente:
free -m | awk '/buffers\/cache/ {print $3}'
Luego, puede enviar un correo electrónico utilizando el mail
comando (suponiendo que la cadena de correo ya esté configurada en su servidor):
echo -e "Mail content." | mail -s "Subject" "[email protected]"
Con esto, puede escribir un pequeño sh
script para verificar el uso de la memoria y enviar correo si es necesario:
#!/bin/sh
memuse=$(free -m | awk '/buffers\/cache/ {print $3}')
if [ $memuse -ge 512 ]; then
message="RAM limit exceeded in server alpha.\nCurrent use is $memuse MiB."
echo -e "$message" | mail -s "RAM monitoring" "[email protected]"
fi
Ahora, solo necesita ejecutar este script periódicamente. Podemos, por ejemplo, usarlo cron
para ejecutarlo cada minuto, agregando a /etc/crontab
:
* * * * * /root/ram_monitoring.sh
(suponiendo que haya guardado el script /root/ram_monitoring.sh
y que tenga un cron deamon en funcionamiento).
$2
pero$3
lo corregiré.