#!/bin/ksh
# Shell script to monitor the disk space
# It will send an email to $ADMIN, if the (used) percentage of space is >= $THRESHOLD
# Written by drake
##################################
# Begin - Environment Variables #
##################################
# Set DBA E-mail. Separate in comma
ADMIN=oracle@localhost
# Set alert level (in %)
THRESHOLD=85
# Filesystem to monitor. Separate with '|'. Do not put non-existing mount point here or the script won't run.
# E.g.
# FILESYSTEM='/appl/oracle*'
# FILESYSTEM='/appl/grid*|/appl/oracle*'
FILESYSTEM='/appl/grid*|/appl/oracle*'
# Set Temporary Output File
LOG_FILE=/tmp/diskusage_$(hostname).log
###################################
# End - Environment Variables #
###################################
# Begin Script
# Remove temporary file if existing
rm -rf $LOG_FILE
# Check platform
platform=$(echo `uname -a | awk '{ print $1 }'`)
# If it's RHEL/OEL, use the POSIX output format in df (df -hP)
if [ $platform == 'Linux' ]; then
df -hP |egrep -e $FILESYSTEM | awk '{ print $5 " " $4 " " $6 }' | while read output;
do
echo $output
percentuse=$(echo $output | awk '{ print $1}' | cut -d'%' -f1 )
mountpoint=$(echo $output | awk '{ print $3 }' )
avail=$(echo $output | awk '{ print $2 }' )
if [ $percentuse -ge $THRESHOLD ]; then
# Output the results to temporary file
echo "Filesystem check started on $(hostname) on $(date)" | tee ${LOG_FILE}
echo "" | tee -a ${LOG_FILE}
echo "Exceeds $THRESHOLD% threshold: \"$mountpoint\" is \"($percentuse%)\" used." | tee -a ${LOG_FILE}
echo "" | tee -a ${LOG_FILE}
echo "Detailed information:" | tee -a ${LOG_FILE}
echo "Percent Use: $percentuse%" | tee -a ${LOG_FILE}
echo "Mount Point: $mountpoint" | tee -a ${LOG_FILE}
echo "Available: $avail" | tee -a ${LOG_FILE}
echo "" | tee -a ${LOG_FILE}
echo "Top 100 files with size > 5000k: " | tee -a ${LOG_FILE}
# List out top 100 files with size > 5000k
find $mountpoint -type f -size +5000k -exec du -sk {} \; | sort -nr | head -100 | awk '{ print $1 " : " $2 }' | tee -a ${LOG_FILE}
echo "" | tee -a ${LOG_FILE}
echo "Filesystem check completed on $(hostname) on $(date)" | tee -a ${LOG_FILE}
# Mail out alert to DBA
cat $LOG_FILE | mailx -s "Alert: Disk space usage of \"$mountpoint\" on $(hostname) is $percentuse% used" $ADMIN
fi
done
# If it's Solaris/ AIX
elif [ $platform == 'SunOS' ]; then
df -h |egrep -e $FILESYSTEM | awk '{ print $5 " " $4 " " $6 }' | while read output;
do
echo $output
percentuse=$(echo $output | awk '{ print $1}' | cut -d'%' -f1 )
mountpoint=$(echo $output | awk '{ print $3 }' )
avail=$(echo $output | awk '{ print $2 }' )
if [ $percentuse -ge $THRESHOLD ]; then
# Output the results to temporary file
echo "Filesystem check started on $(hostname) on $(date)" | tee ${LOG_FILE}
echo "" | tee -a ${LOG_FILE}
echo "Exceeds $THRESHOLD% threshold: \"$mountpoint\" is \"($percentuse%)\" used." | tee -a ${LOG_FILE}
echo "" | tee -a ${LOG_FILE}
echo "Detailed information:" | tee -a ${LOG_FILE}
echo "Percent Use: $percentuse%" | tee -a ${LOG_FILE}
echo "Mount Point: $mountpoint" | tee -a ${LOG_FILE}
echo "Available: $avail" | tee -a ${LOG_FILE}
echo "" | tee -a ${LOG_FILE}
echo "Top 100 files with size > 5000k: " | tee -a ${LOG_FILE}
# List out top 100 files with size > 5000k
find $mountpoint -type f -size +5000k -exec du -sk {} \; | sort -nr | head -100 | awk '{ print $1 " : " $2 }' | tee -a ${LOG_FILE}
echo "" | tee -a ${LOG_FILE}
echo "Filesystem check completed on $(hostname) on $(date)" | tee -a ${LOG_FILE}
# Mail out alert to DBA
cat $LOG_FILE | mailx -s "Alert: Disk space usage of \"$mountpoint\" on $(hostname) is $percentuse% used" $ADMIN
fi
done
fi
# Remove temporary file
rm -rf $LOG_FILE
# End Script
Sample E-mail Alert:
-----Original Message-----
From: Oracle db [mailto:oracle@localhost]
Sent: Saturday, July 14, 2012 4:44 PM
To: oracle; oracle@localhost
Subject: Alert: Disk space usage of "/appl/grid" on servernameprod1 is 24% used
Filesystem check started on servernameprod1 on Sat Jul 14 02:44:11 MDT 2012
Less than 85% threshold: "/appl/grid" is "(24%)" used.
Detailed information:
Percent Use: 24%
Mount Point: /appl/grid
Available: 22G
Top 100 files with size > 5000k:
39M : Jun 18 2010 : /appl/grid/11.2.0/jdk/jre/lib/rt.jar
6.8M : Jun 18 2010 : /appl/grid/11.2.0/jdk/lib/tools.jar
8.5M : Jun 18 2010 : /appl/grid/11.2.0/jdk/jre/lib/charsets.jar
261M : Jul 2 12:12 : /appl/grid/11.2.0/cdata/localhost/servernameprod1.olr
5.5M : Aug 10 2011 : /appl/grid/11.2.0/cdata/servernameprod1/backup_20110810_162449.olr
18M : Apr 25 06:22 : /appl/grid/base/diag/asm/+asm/+ASM/trace/+ASM_arb0_31857.trc
22M : Jul 3 20:50 : /appl/grid/base/diag/asm/+asm/+ASM/trace/+ASM_arb0_30264.trc
261M : Aug 10 2011 : /appl/grid/11.2.0/cdata/localhost/local.ocr
25M : Aug 11 2011 : /appl/grid/11.2.0/cv/log/cvutrace.log.1
25M : Aug 11 2011 : /appl/grid/11.2.0/cv/log/cvutrace.log.2
25M : Aug 12 2011 : /appl/grid/11.2.0/cv/log/cvutrace.log.3
11M : Apr 1 05:39 : /appl/grid/11.2.0/log/servernameprod1/ohasd/ohasd.l06
11M : Apr 19 10:11 : /appl/grid/11.2.0/log/servernameprod1/ohasd/ohasd.l05
11M : Dec 9 2011 : /appl/grid/11.2.0/log/servernameprod1/ohasd/ohasd.l10
11M : Feb 8 03:09 : /appl/grid/11.2.0/log/servernameprod1/ohasd/ohasd.l08
11M : Jan 9 2012 : /appl/grid/11.2.0/log/servernameprod1/ohasd/ohasd.l09
11M : Jul 10 04:36 : /appl/grid/11.2.0/log/servernameprod1/agent/ohasd/orarootagent_grid/orarootagent_grid.l03
11M : Jul 10 09:41 : /appl/grid/11.2.0/log/servernameprod1/agent/ohasd/oraagent_grid/oraagent_grid.l09
11M : Jul 10 19:26 : /appl/grid/11.2.0/log/servernameprod1/agent/ohasd/oraagent_grid/oraagent_grid.l08
11M : Jul 11 05:12 : /appl/grid/11.2.0/log/servernameprod1/agent/ohasd/oraagent_grid/oraagent_grid.l07
11M : Jul 11 15:02 : /appl/grid/11.2.0/log/servernameprod1/agent/ohasd/oraagent_grid/oraagent_grid.l06
11M : Jul 12 00:58 : /appl/grid/11.2.0/log/servernameprod1/agent/ohasd/oraagent_grid/oraagent_grid.l05
11M : Jul 12 02:06 : /appl/grid/11.2.0/log/servernameprod1/agent/ohasd/orarootagent_grid/orarootagent_grid.l02
11M : Jul 12 10:50 : /appl/grid/11.2.0/log/servernameprod1/agent/ohasd/oraagent_grid/oraagent_grid.l04
11M : Jul 12 21:11 : /appl/grid/11.2.0/log/servernameprod1/agent/ohasd/oraagent_grid/oraagent_grid.l03
11M : Jul 13 07:32 : /appl/grid/11.2.0/log/servernameprod1/agent/ohasd/oraagent_grid/oraagent_grid.l02
11M : Jul 13 17:54 : /appl/grid/11.2.0/log/servernameprod1/agent/ohasd/oraagent_grid/oraagent_grid.l01
11M : Jul 13 23:37 : /appl/grid/11.2.0/log/servernameprod1/agent/ohasd/orarootagent_grid/orarootagent_grid.l01
11M : Jul 2 14:28 : /appl/grid/11.2.0/log/servernameprod1/agent/ohasd/orarootagent_grid/orarootagent_grid.l07
11M : Jul 4 12:00 : /appl/grid/11.2.0/log/servernameprod1/agent/ohasd/orarootagent_grid/orarootagent_grid.l06
11M : Jul 5 14:11 : /appl/grid/11.2.0/log/servernameprod1/ohasd/ohasd.l01
11M : Jul 6 09:32 : /appl/grid/11.2.0/log/servernameprod1/agent/ohasd/orarootagent_grid/orarootagent_grid.l05
11M : Jul 8 07:04 : /appl/grid/11.2.0/log/servernameprod1/agent/ohasd/orarootagent_grid/orarootagent_grid.l04
11M : Jul 9 23:54 : /appl/grid/11.2.0/log/servernameprod1/agent/ohasd/oraagent_grid/oraagent_grid.l10
11M : Jun 18 20:06 : /appl/grid/11.2.0/log/servernameprod1/ohasd/ohasd.l02
11M : Jun 26 21:48 : /appl/grid/11.2.0/log/servernameprod1/agent/ohasd/orarootagent_grid/orarootagent_grid.l10
11M : Jun 28 19:21 : /appl/grid/11.2.0/log/servernameprod1/agent/ohasd/orarootagent_grid/orarootagent_grid.l09
11M : Jun 30 16:54 : /appl/grid/11.2.0/log/servernameprod1/agent/ohasd/orarootagent_grid/orarootagent_grid.l08
11M : Mar 5 04:08 : /appl/grid/11.2.0/log/servernameprod1/ohasd/ohasd.l07
11M : May 10 05:11 : /appl/grid/11.2.0/log/servernameprod1/ohasd/ohasd.l04
11M : May 29 12:01 : /appl/grid/11.2.0/log/servernameprod1/ohasd/ohasd.l03
11M : Sep 4 2010 : /appl/grid/11.2.0/lib/libippcpmerged.a
11M : Sep 4 2010 : /appl/grid/11.2.0/lib/libpls11.a
11M : Sep 4 2010 : /appl/grid/11.2.0/lib/libpls11_pic.a
12M : Aug 20 2010 : /appl/grid/11.2.0/lib/libagfw11.so
12M : Aug 23 2010 : /appl/grid/11.2.0/lib/libnnz11.a
13M : Jul 14 02:44 : /appl/grid/11.2.0/log/servernameprod1/diskmon/diskmon.log
15M : Aug 17 2010 : /appl/grid/11.2.0/install/usm/EL5/i386/2.6.18-8/2.6.18-8.el5-i686/bin/oracleacfs.ko
15M : Aug 17 2010 : /appl/grid/11.2.0/install/usm/EL5/i386/2.6.18-8/2.6.18-8.el5PAE-i686/bin/oracleacfs.ko
15M : Aug 17 2010 : /appl/grid/11.2.0/install/usm/EL5/i386/2.6.18-8/2.6.18-8.el5xen-i686/bin/oracleacfs.ko
16M : Aug 20 2010 : /appl/grid/11.2.0/lib/libhasgen11.so
16M : Jul 14 02:41 : /appl/grid/11.2.0/log/servernameprod1/cssd/ocssd.log
19M : Aug 17 2010 : /appl/grid/11.2.0/install/usm/EL5/x86_64/2.6.18-8/2.6.18-8.el5-x86_64/bin/oracleacfs.ko
19M : Aug 17 2010 : /appl/grid/11.2.0/install/usm/EL5/x86_64/2.6.18-8/2.6.18-8.el5xen-x86_64/bin/oracleacfs.ko
19M : Aug 17 2010 : /appl/grid/11.2.0/install/usm/SLES10/x86_64/2.6.16.21-0.8/default/bin/oracleacfs.ko
19M : Aug 17 2010 : /appl/grid/11.2.0/install/usm/SLES10/x86_64/2.6.16.21-0.8/smp/bin/oracleacfs.ko
19M : Aug 17 2010 : /appl/grid/11.2.0/install/usm/SLES10/x86_64/2.6.16.21-0.8/xen/bin/oracleacfs.ko
208M : Aug 10 2011 : /appl/grid/11.2.0/lib/libserver11.a
23M : Aug 17 2010 : /appl/grid/11.2.0/lib/libjavavm11.a
28M : Jul 9 2008 : /appl/grid/11.2.0/oc4j/j2ee/home/applications/ascontrol.ear
30M : Sep 4 2010 : /appl/grid/11.2.0/lib/libgeneric11.a
46M : Aug 11 2010 : /appl/grid/11.2.0/lib/libippsmerged.a
5.0M : Sep 4 2010 : /appl/grid/11.2.0/lib/libplp11.a
5.0M : Sep 4 2010 : /appl/grid/11.2.0/lib/libplp11_pic.a
51M : Apr 17 08:55 : /appl/grid/11.2.0/log/servernameprod1/diskmon/diskmon.l06
51M : Apr 19 02:30 : /appl/grid/11.2.0/log/servernameprod1/cssd/ocssd.l04
51M : Apr 28 18:01 : /appl/grid/11.2.0/log/servernameprod1/cssd/ocssd.l03
51M : Dec 1 2011 : /appl/grid/11.2.0/log/servernameprod1/cssd/ocssd.l07
51M : Feb 10 11:30 : /appl/grid/11.2.0/log/servernameprod1/diskmon/diskmon.l10
51M : Feb 27 04:36 : /appl/grid/11.2.0/log/servernameprod1/diskmon/diskmon.l09
51M : Jan 17 00:40 : /appl/grid/11.2.0/log/servernameprod1/cssd/ocssd.l06
51M : Jul 9 22:25 : /appl/grid/11.2.0/log/servernameprod1/diskmon/diskmon.l01
51M : Jun 23 05:19 : /appl/grid/11.2.0/log/servernameprod1/diskmon/diskmon.l02
51M : Jun 23 07:31 : /appl/grid/11.2.0/log/servernameprod1/cssd/ocssd.l01
51M : Jun 6 12:13 : /appl/grid/11.2.0/log/servernameprod1/diskmon/diskmon.l03
51M : Mar 14 22:43 : /appl/grid/11.2.0/log/servernameprod1/diskmon/diskmon.l08
51M : Mar 31 15:49 : /appl/grid/11.2.0/log/servernameprod1/diskmon/diskmon.l07
51M : Mar 5 19:33 : /appl/grid/11.2.0/log/servernameprod1/cssd/ocssd.l05
51M : May 18 20:51 : /appl/grid/11.2.0/log/servernameprod1/cssd/ocssd.l02
51M : May 20 19:07 : /appl/grid/11.2.0/log/servernameprod1/diskmon/diskmon.l04
51M : May 4 02:01 : /appl/grid/11.2.0/log/servernameprod1/diskmon/diskmon.l05
5.1M : Sep 4 2010 : /appl/grid/11.2.0/lib/libcommon11.a
5.2M : Jun 2 2008 : /appl/grid/11.2.0/oc4j/toplink/jlib/toplink.jar
5.3M : Sep 4 2010 : /appl/grid/11.2.0/lib/libocci11.a
57M : Sep 4 2010 : /appl/grid/11.2.0/lib/libosbws11.so
6.2M : Aug 15 2010 : /appl/grid/11.2.0/lib/libordsdo11.a
7.6M : Aug 23 2010 : /appl/grid/11.2.0/lib/libnnz11.so
8.0M : Apr 20 2009 : /appl/grid/11.2.0/jlib/oemlt.jar
8.5M : Aug 10 2011 : /appl/grid/11.2.0/lib/libn11.a
8.6M : Jul 14 02:44 : /appl/grid/11.2.0/log/servernameprod1/agent/ohasd/oraagent_grid/oraagent_grid.log
87M : Aug 17 2010 : /appl/grid/11.2.0/javavm/admin/classes.bin
8.7M : Aug 18 2010 : /appl/grid/11.2.0/lib/libxml11.a
9.3M : Jul 9 2008 : /appl/grid/11.2.0/oc4j/j2ee/home/lib/oc4j-internal.jar
9.5M : Sep 4 2010 : /appl/grid/11.2.0/lib/libclient11.a
9.6M : Sep 4 2010 : /appl/grid/11.2.0/rdbms/lib/libdbtools11.a
192M : Aug 10 2011 : /appl/grid/11.2.0/bin/oracle
26M : Aug 20 2010 : /appl/grid/11.2.0/bin/orarootagent.bin
97M : Aug 20 2010 : /appl/grid/11.2.0/bin/crsd.bin
97M : Aug 20 2010 : /appl/grid/11.2.0/bin/ohasd.bin
13M : Aug 10 2011 : /appl/grid/11.2.0/inventory/backup/2011-08-10_04-12-15PM/Scripts/ext/bin/kfod
Filesystem check completed on servernameprod1 on Sat Jul 14 02:44:13 MDT 2012