Disk Space Alert Monitoring

Disk Space Alert Monitoring

Back from my archives, I thought to share this simple and decent script to monitor file systems.

#!/bin/sh 
#set -x
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# Author: Alex Lima
# Client: XXXXXXXXX.
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
##
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# Shell script to monitor or watch the disk space
# It will send an email to $ADMIN_EMAIL, if the (free available) percentage of space is >= 85%.
# -------------------------------------------------------------------------
# Set admin email so that you can get email.
ADMIN_EMAIL="alex.lima@xxxxxx.com,Jos.vanLammeren@xxxxx.com"
#ADMIN_EMAIL="alex.lima@xxxxxx.com"
# set alert level 85% is default
THRESHOLD=85
# Exclude list of unwanted monitoring, if several partions then use "|" to separate the partitions.
# An example: EXCLUDE_LIST="/dev/hdd1|/dev/hdc5"
EXCLUDE_LIST="/oracle|/var|/vol"
TIMESTAMP=`date +"%d-%m-%Y_%H-%M-%S"`
APP_HOME="/home/gg_user/APPS/MONITOR"
APP_TEMP=$APP_HOME/TEMP
APP_LOG=$APP_HOME/LOG
#
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#
#### Function to send email alert
send_email() {
     echo "Running out of space \"$FILESYSTEM $USED%\" on server \"$HOSTNAME\", `date`" | \
     mailx -s "Alert: Almost out of disk space $USED% on $HOSTNAME" $ADMIN_EMAIL 
     #mailx -s "Alert: Almost out of disk space $USED% on $HOSTNAME" $ADMIN_EMAIL < ${EMAIL_BODY_UNIQUE}
    #add delete 
}

####  Function to Format the BODY Email
body_email() {
 EMAIL_BODY_UNIQUE="$APP_TEMP/email_body_`echo $FILESYSTEM | sed 's/\/gg\///'`_$TIMESTAMP.tmp"; export EMAIL_BODY_UNIQUE
 echo "Running out of space \"$FILESYSTEM $USED%\" on server \"$HOSTNAME\", `date`" > ${EMAIL_BODY_UNIQUE}
 echo "" >> ${EMAIL_BODY_UNIQUE}
 du -k $FILESYSTEM >> ${EMAIL_BODY_UNIQUE}
}

####  Function to check disk usage on Linux and AIX
main_prog_linux() {
 df -Pk | grep '/gg' | sed 's/%//' | while read a b c d USED FILESYSTEM;
 do 
  #echo $FILESYSTEM $USED; 
   if [ $USED -ge $THRESHOLD ] ; then
    send_email
   fi
 done
}

####  Function to check disk usage on SunOS
main_prog_sun() {
 df -k | cat | grep '/gg/' | sed 's/%//' | while read a b c d USED FILESYSTEM;  
 do
  #echo $FILESYSTEM $USED;
   if [ $USED -ge $THRESHOLD ] ; then
    #body_email
    send_email
   fi
 done
}

case `uname` in
 Linux) HOSTNAME=`hostname -a`
        main_prog_linux
        ;;

 SunOS) HOSTNAME=`hostname`
        main_prog_sun
        ;;

 AIX)   HOSTNAME=`hostname`
        main_prog_linux
        ;; 
esac

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.