check-io.sh
999 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/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