Probablemente desee saber cuándo su servidor se está quedando sin espacio en disco. Una solución simple es configurar un trabajo cron para que se ejecute a diario y enviarle notificaciones en Slack si hay algún problema.
Obtenga espacio en disco con el comando df
El comando para ver el espacio en disco en Linux es df -h
(para salida en un formato legible por humanos):
Esto enumera cada sistema de archivos montado, qué tan grande es el disco físico y cuánto se está utilizando.
Para restringir la salida a un sistema de archivos específico (en este caso, root) puede ejecutar df /
. Sin embargo, esto devuelve la fila del encabezado, por lo que puede filtrarla con grep
:
Luego, seleccione la quinta columna (el porcentaje) con awk
y elimine el signo de porcentaje con sed
. Esto le da un comando que devuelve un número que representa qué tan llena está su unidad principal:
df / | grep / | awk '{ print $5}' | sed 's/%//g'
Que, en este caso, volvería "39
". Si desea cambiar el disco monitoreado por este comando, deberá cambiar el primero df
declaración.
Configurar las notificaciones de Slack desde la línea de comandos
La forma más sencilla de hacer que las notificaciones de Slack funcionen es con webhooks. Los webhooks le permiten enviar notificaciones como solicitudes POST a una URL sin tener que administrar usuarios de bot u OAuth. Puede formatear mensajes como JSON y POST usando curl
.
De Slack's Portal de API, cree una nueva aplicación, seleccione su espacio de trabajo para agregarla y asígnele un nombre. Esto es lo que se mostrará cuando te envíe un mensaje, así que elige algo interesante.
Una vez que tenga la aplicación, busque la pestaña "Webhooks entrantes" en "Agregar características y características".
Esto le permitirá crear un nuevo webhook y tendrá que elegir en qué canal publicar. Puede crear un nuevo canal para notificaciones de bot o agregarlo a sus mensajes directos.
Una vez que obtenga la URL, copie la solicitud de muestra para ver si funciona. Debería ver "¡Hola mundo!" en el canal seleccionado. Si es así, Slack está listo.
Ponlo todo junto
Para que su servidor realmente le notifique, creará un script que puede ejecutar con un diario cron
trabaja. Aquí está el shell del script, menos el comando de notificación:
#!/bin/bash CURRENT=$(df / | grep / | awk '{ print $5}' | sed 's/%//g') THRESHOLD=90 if [ "$CURRENT" -gt "$THRESHOLD" ] ; then fi
Este script establece dos variables, CURRENT
(a la salida de df
comando superior) e THRESHOLD
(a un valor que puede configurar). Luego verifica si el valor actual es mayor que el umbral y, si lo es, ejecuta un comando.
Puede configurar la notificación como desee, pero aquí hay un ejemplo, sin incluir la URL del webhook, que deberá pegar al final (no se requieren indicadores adicionales):
curl -X POST -H 'Content-type: application/json' --data "{"text":"Your server `$(hostname)` is currently at ${CURRENT}% disk capacity."}"
Esto enviará una notificación bien formateada al canal designado de su webhook, incluido el nombre de host del servidor y la capacidad actual del disco.
Puede pegar este comando en el archivo if
declaración de script anterior, haciendo que todo se una de esta manera:
#!/bin/bash CURRENT=$(df / | grep / | awk '{ print $5}' | sed 's/%//g') THRESHOLD=90 if [ "$CURRENT" -gt "$THRESHOLD" ] ; then curl -X POST -H 'Content-type: application/json' --data "{"text":"Your server `$(hostname)` is currently at ${CURRENT}% disk capacity."}" fi
Guardar como diskspace.sh
en su directorio de inicio y asegúrese de que tenga permisos de ejecución con chmod +x diskpace.sh
. Abra su crontab con crontab -e
y agregue la siguiente línea al final:
0 * * * * ~/diskspace.sh
Esto ejecutará el script cada hora para verificar si el disco está lleno. Pero solo recibirá notificaciones si está lleno, por lo que puede verificar si el script está funcionando configurando THRESHOLD
bajo el uso actual del disco y ejecutándolo manualmente.
Para notificaciones más detalladas, puede hacer que el script le envíe los resultados de df -h
, muy bien formateado en un cuadro de código, simplemente actualizando el archivo curl
declaración:
curl -X POST -H 'Content-type: application/json' --data "{"text":"Your server `$(hostname)` is currently at ${CURRENT}% disk capacity.n ```$(df -h)``` "}"
Que aparecerá en Slack como:
Dado que el comando ejecutado por el script puede ser cualquier cosa que desee, también puede configurar notificaciones por correo electrónico utilizando un administrador de correo como Postfix o cualquier otra fuente que admita webhooks.
Descubre más contenido