#!/bin/bash
# call this script with 6 parameters
# $1 = DC IP-address
# $2 = username
# $3 = password
# $4 = storage-name
# $5 = warning value in percent
# $6 = critical value in percent
#
# for example
# ./check_esx_storage.sh 192.168.100.250 checker checkerpassword datastore1 80 95
#
###########################
#
# prerequisites for this script
# * add a user on the ESX/ESXi server with read-only access so he cannot break anything
# * download check_esx3.pl script - at least version from Fri, 17 Sep 2010 09:14:32 +0000
#   Info: http://www.monitoringexchange.org/inventory/Check-Plugins/Virtualization/VMware-%2528ESX%2529/check_esx3
#   Download: http://git.op5.org/git/?p=nagios/op5plugins.git;a=blob;f=check_esx3.pl#
#       +++ For correct usage you have to install some perl-mods - for more info; see check_esx3.pl-file
###########################

# used later for the Nagios status exits
. /usr/local/nagios/libexec/utils.sh

# most echos are for debugging
# multiplied by 100 for calculation purpose. In a bash script you cannot calculate floats so easily
WARNING=$(($5 * 100))
CRITICAL=$(($6 * 100))

# get free MB. This is normally a float figure! Here the . is removed so that the number can be used for calcualting stuff.
FREEMB=$(/usr/local/nagios/libexec/check_esx.pl -D $1 -u $2 -p $3 -l vmfs -s $4 | awk '{print $4 }' | awk -F '=' '{print $2}' | sed 's/[.]//')
#echo "FREE: $FREEMB"

# get free MB in "percent". This is normally a float figure! Here the . is removed so that the number can be used for calculation
FREEPERCENT=$(/usr/local/nagios/libexec/check_esx.pl -D $1 -u $2 -p $3 -l vmfs -s $4 | awk '{print $6}' | sed 's/[(]//' | sed 's/[)]//' | sed 's/[.]//' | sed 's/[%]//' | sed 's/[)]//')
#echo "FREE %: $FREEPERCENT"

# calculate how much MB are used in "percent". Remember stuff above!
USEDPERCENT=$((10000 - $FREEPERCENT))
#echo "USED: $USEDPERCENT"

# "1%" in MB
ONEPERCENT=$(($FREEMB / $FREEPERCENT))
#echo "ONE PERCENT: $ONEPERCENT"

# calculate the amount of "MB" that are used.
USEDMB=$(($ONEPERCENT * $USEDPERCENT))
#echo "USED: $USEDMB"

# calculate the total MB of the datastore
TOTALMB=$(($USEDMB + $FREEMB))
#echo "TOTAL: $TOTALMB"

# calculate the real used MB
USEDMB_FLOAT=`echo "scale=2 ; $USEDMB / 100" | bc`

# calculate the real free MB
FREEMB_FLOAT=`echo "scale=2 ; $FREEMB / 100" | bc`

# calculate the real used amount in percent
USEDPERCENT_FLOAT=`echo "scale=2 ; $USEDPERCENT / 100" | bc`

# calculate the real free amount in percent
FREEPERCENT_FLOAT=`echo "scale=2 ; $FREEPERCENT / 100" | bc`

# calculate the real total amount in MB
TOTALMB_FLOAT=`echo "scale=2 ; $TOTALMB / 100" | bc`

# Nagios output with perfdata for nice graphs
echo "$4: $USEDPERCENT_FLOAT% used ($USEDMB_FLOAT/$TOTALMB_FLOAT) | $4=$USEDPERCENT_FLOAT%;$5;$6;0;100"

# Nagios status exits
if [ $USEDPERCENT -lt $WARNING ] && [ $USEDPERCENT -lt $CRITICAL ]; then
#       echo OK
        exit $STATE_OK
elif [ $USEDPERCENT -ge $WARNING ] && [ $USEDPERCENT -lt $CRITICAL ]; then
#       echo WARN
        exit $STATE_WARNING
elif [ $USEDPERCENT -ge $WARNING ] && [ $USEDPERCENT -ge $CRITICAL ]; then
#       echo CRIT
        exit $STATE_CRITICAL
fi
Zuletzt bearbeitet: September 6, 2016

Autor

Kommentare

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.