Submitted by mig5 on
Couldn't find a Nagios plugin for checking the VMware 'memory balloon' percentage, after observing a server that due to hypervisor issues was ballooning too much. For more on that subject, you can read about it here.
So here's a script to do it.
usage() {
cat << EOF
usage: $0 OPTIONS
This script checks the VMware memory balloon and alerts if it is over
an expected threshold.
Designed for use with Nagios.
OPTIONS:
-w Warning percentage, in MB (default: 20)
-c Critical percentage, in MB (default: 50)
-h This help message
EOF
}
# Defaults
STATUS_OK=0
STATUS_WARNING=1
STATUS_CRITICAL=2
STATUS_UNKNOWN=3
WARNING=20
CRITICAL=50
while getopts "w:c:h" OPTION
do
case $OPTION in
w)
WARNING=$OPTARG
;;
c)
CRITICAL=$OPTARG
;;
?)
usage
exit
;;
esac
done
TOTAL_MEM=$(free -m | awk '/^Mem:/{print $2}')
# Check for the vmware-toolbox-cmd command
if [ ! -x /usr/bin/vmware-toolbox-cmd ]; then
echo "UNKNOWN: vmware-toolbox-cmd binary not found!"
exit $STATUS_UNKNOWN
else
# Check the balloon
VMWARE_CHECK=$(vmware-toolbox-cmd stat balloon | awk {'print $1'})
# now Check the percentage compared to total ram
PERCENT=$((100*$VMWARE_CHECK/$TOTAL_MEM))
# Is it lower than the warning threshold if so we are OK
if [ $PERCENT -lt $WARNING ]; then
echo "OK: VMware memory ballooning is $PERCENT%"
exit $STATUS_OK
elif [ $PERCENT -gt $CRITICAL ]; then
echo "CRITICAL: VMware memory ballooning is $PERCENT%"
exit $STATUS_CRITICAL
else
echo "WARNING: VMware memory ballooning is $PERCENT%"
exit $STATUS_WARNING
fi
fi