Este es un script que realicé a medida para monitorear el espacio en disco de servidores Linux.
Lo que hace es correr en forma periódica controlando el espacio ocupado en disco y si este espacio sobrepasa un valor de criticidad envia un email al administrador.
Tiene la particularidad de que si el espacio ocupado se mantiene sin cambios después de haber enviado un primer aviso no vuelve a reiterar el aviso hasta que se genere una nueva variación del espacio ocupado siempre que supere el nivel de criticidad establecido.
Además se le puede configurar la cantidad de particiones que tiene que monitorear agregando modulitos al scripts...
Script :
#!/bin/bash
# Shell script para monitoreo de espacio en disco
# Envia un email a los administradores $ADMIN, si el porcentage
# de espacio ocupado es >= 80%
# Modificado para que envie un aviso solo si aumenta el
#porcentaje de disco
#porcentaje de disco
# ocupado con respecto al aviso anterior
# -------------------------------------------------------------
ADMIN="dgatti@empresa.com"
# set alert level 80% is default
ruta=/usr/local/scripts/monitoreo_disco
ALERT=80
cont=0
find $ruta/tmp1.txt > $ruta/tmpC
variable=`cat $ruta/tmpC`
if [ -z $variable ]; then
echo '0' > $ruta/tmp1.txt
fi
fi
df -H | grep -vE
'^Filesystem|tmpfs|cdrom|usbdevfs|debugfs|securityfs|sysfs|udev|proc
|nfs|devpts|shmfs|floppy '| awk '{ print $5 " " $1 }' |
while read output; do
|nfs|devpts|shmfs|floppy '| awk '{ print $5 " " $1 }' |
while read output; do
let cont=cont+1
usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1 )
partition=$(echo $output | awk '{ print $2 }' )
if [ $usep -ge $ALERT ]; then
case $cont in
1)
aux=`cat $ruta/tmp1.txt`
if [ $usep -ne $aux ]; then
rm $ruta/tmp1.txt
echo $usep > $ruta/tmp1.txt
echo "Funcionando sobre el limite establecido:
\"$partition ($usep%)\" en $(hostname),
fecha $(date), se recomienda liberar espacio" |
echo "Funcionando sobre el limite establecido:
\"$partition ($usep%)\" en $(hostname),
fecha $(date), se recomienda liberar espacio" |
mail -s "ALERTA!!: Se ha sobrepasado el limite
establecido de espacio en disco" $ADMIN
fiestablecido de espacio en disco" $ADMIN
1) Crear el directorio “/usr/local/scripts/monitoreo_disco”
2) Copiar el script “monitoreo_disco.sh” en “/usr/local/scripts/monitoreo_disco"
3) Realizar los siguientes cambios en el script:
3.1 - Definir en la variable “SYSADMIN” los destinatarios de las alertas.
Ejemplo:
SYSADMIN="dgatti@empresa.com.ar"
3.2 – Establecer los niveles críticos y de advertencia y la variable
de logs (expresado en porcentaje, 80 porciento en el ejemplo)
ALERT=80
ruta=/usr/local/scripts/monitoreo_disco
3.3 – Establecer la cantidad de particiones realizadas al disco y adaptar
el script a este número agregando o quitando tmpX.txt de
este if (en este caso si hubiese 2 particiones):
if [ -z $variable ]; then
echo '0' > $ruta/tmp1.txt
echo '0' > $ruta/tmp2.txt
fi
dónde la X se corresponde con el número de particiones.
La misma modificación se debe aplicar al "case" en la cantidad de opciones
que este tenga para evaluar, adaptarlo a la cantidad de particiones (en el script esta para una sola partición):
aux=`cat $ruta/tmpX.txt`
if [ $usep -ne $aux ]; then
rm $ruta/tmpX.txt
echo $usep > $ruta/tmpX.txt
echo "Funcionando sobre el
limite establecido: \"$partition
($usep%)\" en $(hostname),
fecha $(date), se recomienda
liberar espacio" |
limite establecido: \"$partition
($usep%)\" en $(hostname),
fecha $(date), se recomienda
liberar espacio" |
mail -s "ALERTA!!:
Se ha sobrepasado el
limite establecido de
espacio en disco" $ADMIN4)
# Dispara cada 60 minutos el control de espacios en disco
*/60 * * * * root /usr/local/scripts/monitoreo_disco/monitoreo_disco.sh >$PATHDESTINO/monitoreo_disco_std 2>$PATHDESTINO/monitoreo_disco_err