Cómo Monitorizar el Uso de Disco en VPS y Recibir Alertas vía Webhook

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.)
  • curl instalado (sudo apt install curl o sudo 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.

  1. Crea el archivo:
nano ~/check_disk.sh
  1. 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_aqui con 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 if comprueba si el uso actual es mayor que nuestro THRESHOLD (80).
  • Si es cierto, dispara una petición curl a AlertHub con una alerta de nivel warning.

Automatizando con Cron

Un script solo es útil si se ejecuta automáticamente. Usaremos cron para ejecutar esta comprobación cada hora.

  1. 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).

  1. Abre tu crontab:
crontab -e
  1. 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.