Quedarse sin espacio en disco es una de las causas más comunes de caída de servidores. Ya sea por archivos de log sin límite, contenedores Docker descontrolados o simplemente el crecimiento natural de los datos, un disco lleno puede bloquear tu base de datos y detener tus aplicaciones.
En este tutorial, escribiremos un sencillo script en bash para verificar el uso de tu disco y activar una notificación de AlertHub si supera un umbral de seguridad (80%).
Prerrequisitos
- Un VPS Linux (Ubuntu, Debian, CentOS, etc.)
curlinstalado (sudo apt install curlosudo yum install curl)- Una Clave de Proyecto de AlertHub (Obtenla en tu panel de control)
El Script de Monitorización
Crearemos un script llamado check_disk.sh. Este script utiliza el comando df para inspeccionar el uso del sistema de archivos.
- Crea el archivo:
nano ~/check_disk.sh
- Pega el siguiente contenido:
#!/bin/bash
# Configuración
THRESHOLD=80
ALERTHUB_KEY="tu_sk_key_aqui"
PROJECT_URL="https://api.thealerthub.com/sendAlert"
# Verificar uso de disco del sistema de archivos raíz "/"
# awk imprime la 5ª columna (porcentaje) y sed elimina el signo '%'
CURRENT_USAGE=$(df / | grep / | awk '{ print $5 }' | sed 's/%//g')
if [ "$CURRENT_USAGE" -gt "$THRESHOLD" ] ; then
echo "El uso de disco es crítico: $CURRENT_USAGE%"
# Enviar Alerta a AlertHub
curl -s -X POST "$PROJECT_URL" \
-H "Content-Type: application/json" \
-d "{
\"ah_key\": \"$ALERTHUB_KEY\",
\"ah_title\": \"Alerta de Espacio en Disco Bajo\",
\"ah_description\": \"El almacenamiento del servidor está al ${CURRENT_USAGE}%. Por favor investiga inmediatamente.\",
\"ah_level\": \"warning\",
\"ah_source\": \"VPSMonitor\"
}"
fi
Alternativamente, usando alerthub_alert
Si seguiste nuestra guía anterior e instalaste la función alerthub_alert, puedes simplificar la parte de envío de alertas:
# Cargar la función alerthub_alert (Ajusta la ruta si es necesario)
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
if [ "$CURRENT_USAGE" -gt "$THRESHOLD" ] ; then
echo "El uso de disco es crítico: $CURRENT_USAGE%"
# Enviar Alerta usando nuestra función personalizada
# Asegúrate de que ALERTHUB_KEY está exportada en tu entorno o .bashrc
alerthub_alert -t "Alerta de Espacio en Disco Bajo" \
-d "El almacenamiento del servidor está al ${CURRENT_USAGE}%. Por favor investiga inmediatamente." \
-l "warning" \
-s "VPSMonitor"
fi
Nota: Reemplaza
tu_sk_key_aquicon tu clave secreta de proyecto real.
Cómo Funciona
df /: Lista el espacio en disco de la partición raíz.awk '{ print $5 }': Extrae la columna de porcentaje (ej.85%).sed 's/%//g': Elimina el símbolo%para poder comparar números (ej.85).- La sentencia
ifcomprueba si el uso actual es mayor que nuestroTHRESHOLD(80). - Si es cierto, dispara una petición
curla AlertHub con una alerta de nivelwarning.
Automatizando con Cron
Un script solo es útil si se ejecuta automáticamente. Usaremos cron para ejecutar esta comprobación cada hora.
- Prueba el script primero para asegurarte de que es ejecutable:
chmod +x ~/check_disk.sh
./check_disk.sh
(Si tu uso de disco está por debajo del 80%, no pasará nada. Puedes bajar temporalmente el THRESHOLD a 10 en el script para probar la alerta).
- Abre tu crontab:
crontab -e
- Añade la siguiente línea para ejecutar la comprobación al inicio de cada hora:
0 * * * * /home/tu_usuario/check_disk.sh
Asegúrate de reemplazar /home/tu_usuario/ con la ruta real a tu script.
Conclusión
Con solo unas pocas líneas de bash, ahora tienes un sistema de monitorización proactivo. AlertHub enrutará esta notificación a tu Slack, Telegram o Email, asegurando que puedas reaccionar antes de que tu servidor se quede sin espacio por completo.