
Si alguna vez ha ejecutado un sistema de Linux en producción, o incluso simplemente manteniendo un servidor personal, sabe que quedarse sin espacio en el disco es uno de los problemas más frustrantes. De repente, su aplicación deja de funcionar, la base de datos no escribe datos nuevos y los archivos de registro siguen poblando como un tren fuera de control.
La buena noticia es Linux Sorprendentemente, es muy fácil monitorear el uso del disco en el uso de disco. Todo lo que necesita es un pequeño script de shell, algo de lógica, tal vez una alerta de correo electrónico (envíe un mensaje a su canal Slack si lo desea).
En este artículo, construiremos un script simple que verifique su uso de disco y envíe alertas de más del 80%.
Paso 1: Verifique el uso de disco en Linux
Antes de escribir un script, debe usar el comando DF para conocer el uso actual del espacio en disco en su sistema.
df -h
este -h La bandera significa «Legible«, Por lo que no tiene que mostrar el bloque de datos original, pero formatea la salida GB y MEGABYTEesto es mucho más fácil.
En el ejemplo anterior, la partición raíz / (/dev/sda1) Sentarse 45%es totalmente saludable, pero una vez que comienzas a gatear 80%esa es nuestra bandera roja; Significa que el espacio está agotado.
Paso 2: cree un script para monitorear el uso de disco
Ahora que sabe cómo verificar manualmente el uso del disco, usemos los scripts de shell para convertirlo en algo automático, esto es muy útil para tales cosas porque nos permiten tomar comandos que normalmente ejecutamos y los unimos con un poco de lógica.
Aquí hay un script muy simple para monitorear sus raíces (/) segmentación:
#!/bin/bash
# Set threshold (percentage)
THRESHOLD=80
# Extract the usage percentage for root filesystem
USAGE=$(df -h / | awk 'NR==2 {print $5}' | sed 's/%//')
# Compare usage against threshold
if [ "$USAGE" -ge "$THRESHOLD" ]; then
echo "Warning: Disk usage is at ${USAGE}% on $(hostname)" | mail -s "Disk Alert: $(hostname)" [email protected]
fi
Analicemos lo que está pasando aquí:
THRESHOLD=80→ Este es el límite de nuestra preocupación, cualquier cosa más alta es demasiado arriesgada.df -h /→ Esto verifica solo el sistema de archivos raíz.awk 'NR==2 {print $5}'→ Desde la salida de DF, esto atrapa «usar%«Pilar.sed 's/%//'→ de%Firma para que podamos pensar en ello como un número.- este
ifBloque → Se activará una alarma si el uso del disco excede el umbral.
Ahora, el script usa correo Orden. Si no ha configurado un correo electrónico en su sistema, no se preocupe, le mostraré cómo configurarlo.
Paso 3: monitorear todo el uso de disco de partición
La mayoría de los servidores no confían en una sola partición; En cambio, generalmente se dividen en varios, p. /,,,,, /home,,,,, /var,incluso /data. Si solo te enfocas en la raíz (/) Partición, puede perder problemas críticos en otros lugares, por ejemplo /var Lleno de registros, incluso si su aplicación puede fallar / Todavía hay mucho espacio.
Aquí hay una versión ligeramente mejorada que verifica todos los sistemas de archivos instalados:
#!/bin/bash
THRESHOLD=80
# Loop through each filesystem listed by df
df -h | grep '^/dev/' | while read line; do
USAGE=$(echo $line | awk '{print $5}' | sed 's/%//')
PART=$(echo $line | awk '{print $6}')
if [ "$USAGE" -ge "$THRESHOLD" ]; then
echo "Warning: Partition $PART is at ${USAGE}% on $(hostname)" | mail -s "Disk Alert: $(hostname)" [email protected]
fi
done
Ahora, en lugar de simplemente verificar /se ejecuta a través de cada sistema de archivos en /dev/ Si hay algún crossover de partición 80%recibirá un correo electrónico de advertencia.
Paso 4: automatizar scripts con cron
Kroner Es un servicio de programación simple en Linux, que puede ejecutar comandos en tiempos o intervalos fijos. Puede usarlo para que el script de monitoreo de disco se ejecute automáticamente cada hora.
Para configurarlo, abra su crontab utilizando el siguiente método:
crontab -e
Agregue esta línea en la parte inferior:
0 * * * * /path/to/disk_check.sh
Esto significa:
0→ Corre al comienzo de la hora.* * * *→ Horas, todos los días./path/to/disk_check.sh→ Reemplace con la ubicación real del script.
Ahorre y salga, y el Kron se encargará del resto. De ahora en adelante, su guión verificará silenciosamente el uso del disco en segundo plano y le recordará si no se ve bien.
Paso 5: Prueba el script
Es inteligente probar este script antes de confiar en él. Después de todo, no desea esperar hasta que el disco esté en realidad un 80% lleno para averiguar si su sistema de alerta funciona.
La forma más fácil de probar es reducir temporalmente el umbral:
THRESHOLD=1
De esta manera, el guión casi seguramente activará una alarma de inmediato, porque al menos la mayoría de las particiones son 1% Lleno. Después de confirmar que el correo electrónico o el registro funciona, cámbielo a 80.
Si no está listo para configurar el correo electrónico, puede reemplazarlo correo El comando es más simple, por ejemplo:
echo "Warning: Partition $PART is at ${USAGE}% on $(hostname)"
Esto solo imprimirá la alerta a su terminal, lo cual es muy útil para una depuración rápida.
Paso 6: Configurar notificaciones por correo electrónico
Nuestro script usa comandos de correo para enviar alertas, pero de manera predeterminada, esta herramienta no siempre está disponible. Primero debe instalarlo:
sudo apt install mailutils [On Debian] sudo yum install mailx [On RHEL]
Una vez instalado, debe asegurarse de que su servidor realmente pueda enviar correos electrónicos, lo que puede requerir algunas configuraciones adicionales como configurar Postfix, Gmail SMTPo servicios de terceros, p. SendGrid.
Si no desea procesar correos electrónicos en este momento, aún puede hacer que el script sea útil registrando la alerta a un archivo:
echo "Disk usage alert: $PART at $USAGE%" >> /var/log/disk_alert.log
De esta manera, puede verificar el registro más tarde o ver la alerta en tiempo real usando el siguiente comando.
tail -f /var/log/disk_alert.log
Paso 7: cuándo superar los scripts de shell
Los scripts de shell son excelentes para el aprendizaje y generalmente son suficientes para acomodar un solo servidor o un pequeño proyecto, pero si ejecuta múltiples servidores o necesita un monitoreo más detallado, es posible que deba pasar a una herramienta de monitoreo dedicada.
- Nagios → uno de los sistemas de vigilancia más antiguos y confiables.
- Zabbix → Muy bien si desea paneles, gráficos y monitoreo del centro de muchos servidores.
- Prometeo + Grafana → Configuración moderna Prometeo Recoger indicadores y Grafana Haga hermosos paneles para visualizarlos.
Resumir
Con solo unas pocas líneas de scripts de shell, crea un sistema de monitoreo de disco ligero que mantiene un ojo de cerca a su partición y le advierte antes de que las cosas sean críticas.
Al establecer un umbral, agregar algo de lógica y programación con Cron, ha automatizado una tarea que de otro modo requerirá controles manuales continuos, lo que significa menos sorpresas, menos tiempo de inactividad y más tranquilidad.
Si desea hacer más automatización de Linux, consulte nuestra guía relacionada: Cómo automatizar las verificaciones de salud de Linux usando Bash Script + Cron.









