Monitorizar espacio de disco duro

Monitorizar espacio de disco duro Linux

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.

Sobre mi

Trabajo en el desarrollo de webs profesionales desde hace más de 25 años.
También me dedico a mis proyectos personales.

Últimas notas publicadas

Categorías

Scroll al inicio