Comprobar y avisar de espacio en disco
Vamos a crear un script que monitorice el espacio en disco y llegado el momento nos envíe un correo electrónico avisándonos del espacio libre.
Cuando tenemos un servidor donde se generan muchos datos y no disponemos de paneles de control tipo cPanel o Plesk que nos avisen, es necesario crearnos nuestros propios sistemas de alarmas.
El siguiente script va a comprobar diariamente el espacio libre y cuando esté entre un 30% y un 20% nos enviará un correo electrónico avisando que el espacio libre del disco está por debajo de un 30%.
Cuando esté entre un 20% y un 10%, nos informará que el espacio está por debajo del 20%. Entre un 10% y un 5% nos informará que está por debajo del 10% y si está por debajo de un 5% pues, ¡ya puedes correr a borrar algo!.
El servicio de correo que se usa es msmtp
, el cual ya he utilizado anteriormente y puedes ver su configuración en: Monitorización de webs.
#!/bin/bash
# Directorio que se va a monitorear
DIRECTORIO="/"
# Dirección de correo para enviar alertas
EMAIL="tu_correo@example.com"
# Función para enviar correo electrónico
send_email() {
local umbral=$1
echo -e "Asunto: Alerta de espacio en disco\n\nEl espacio libre en el disco ha caído por debajo del ${umbral}%." | msmtp $EMAIL
}
# Comprobar el espacio libre en disco
DISPONIBLE=$(df -h $DIRECTORIO | awk 'NR==2 {print $5}' | sed 's/%//')
# Enviar correos basados en los intervalos
if [ "$DISPONIBLE" -ge 70 ] && [ "$DISPONIBLE" -lt 80 ]; then
send_email 30
elif [ "$DISPONIBLE" -ge 80 ] && [ "$DISPONIBLE" -lt 90 ]; then
send_email 20
elif [ "$DISPONIBLE" -ge 90 ] && [ "$DISPONIBLE" -lt 95 ]; then
send_email 10
elif [ "$DISPONIBLE" -ge 95 ]; then
send_email 5
fi
Guardamos el script anterior en un archivo llamado check_disk_space.sh
y le damos permisos de ejecución:
chmod +x check_disk_space.sh
Por último configuramos el cron para que se ejecute diariamente a medianoche, ejecutando crontab -e
y añadiendo la siguiente línea:
0 0 * * * /ruta/a/tu/script/check_disk_space.sh
Explicación del Script
- DIRECTORIO: Especifica el directorio del cual se va a monitorear el espacio libre.
- EMAIL: La dirección de correo electrónico a la que se enviarán las alertas.
- send_email(): Función que envía un correo utilizando
msmtp
. - DISPONIBLE: Calcula el porcentaje de espacio libre en el directorio especificado.
- Condicionales: Envía un correo según el intervalo en el que se encuentre el porcentaje de espacio libre.