check-io.sh 999 Bytes
#!/bin/bash

while getopts 'w:c:h:' OPT
do
    case $OPT in
        w) WARN=$OPTARG;;
        c)  CRIT=$OPTARG;;
        h)  hlp="yes";;
        *)  unknown="yes";;
    esac
done

# usage
HELP="
    usage: $0 [ -w value -c value -h ]

        -w --> Warning percentage < value
        -c --> Critical percentage < value
        -h --> print this help screen
"
hlp=${hlp:=no}
if [ ${hlp} == "yes" ]
then
    echo ${HELP}
fi

WARN=${WARN:=90}
CRIT=${CRIT:=95}

io_message=$(iostat -x 1 1 | egrep [0-9] | awk 'NR>2')

warn_flag=$(echo "$io_message" | awk -v warn=${WARN} '$NF>warn' | wc -l)
crit_flag=$(echo "$io_message" | awk -v crit=${CRIT} '$NF>crit' | wc -l)

if [ ${crit_flag} -ge 1 ]
then
    echo "$io_message" | awk -v crit=${CRIT} '$NF>crit{print "CRITICAL: disk "$1" io used "$NF"%"}'
    exit 2
elif [ ${warn_flag} -ge 1 ]
then
    echo "$io_message" | awk -v warn=${WARN} '$NF>warn{print "WARNING: disk "$1" io used "$NF"%"}'
    exit 1
else
    echo "OK: all disk io is ok"
    exit 0
fi