3 # Author: Elan Ruusamäe <glen@delfi.ee>
5 # Usage: check_mysql-heartbeat
13 heartbeat=mk-heartbeat
23 eval local rc=\$STATE_$1
24 [ "$rc" ] || rc=$STATE_UNKNOWN
34 Uses maatkit: mk-heartbeat
35 --pt, --percona-toolkit
36 Uses percona-toolkit: pt-hearbeat
38 -w SECONDS, --warning SECONDS
39 -c SECONDS,--critical SECONDS
40 -H HOSTNAME, --host HOSTNAME
42 -u USERNAME, --username USERNAME
43 -p PASSWORD, --password PASSWORD
44 -D DATABASE, --database DATABASE
49 args=$(getopt -o hVw:c:H:P:u:p:D: --long help,version,warning:,critical:,mk,maatkit,pt,percona-tookit,host:,port:,username:,password:,database: -u -n $PROGRAM -- "$@")
56 ## Start of main program ##
64 echo "$PROGRAM $VERSION"
68 heartbeat=mk-heartbeat
70 --pt|--percona-toolkit)
71 heartbeat=pt-heartbeat
106 die UNKNOWN "Internal error: [$1] Not recognized!"
112 if [ -z "$hostname" ]; then
113 die UNKNOWN "No hostname given"
116 # check out config errors
117 if [ $warning -gt $critical ]; then
118 die UNKNOWN "Warning level bigger than critical level"
121 secs=$($heartbeat ${database:+-D $database} --check -h $hostname ${username:+-u $username} ${password:+-p $password} ${port:+--port $port} 2>&1)
123 if [ "$rc" != 0 ]; then
127 # strip decimals, shell doesn't process these
130 [ $secs -gt $critical ] && die CRITICAL "$heartbeat on $hostname $secs seconds over critical treshold $critical seconds"
131 [ $secs -gt $warning ] && die WARNING "$heartbeat on $hostname $secs seconds over warning treshold $warning seconds"
133 die OK "$heartbeat on $hostname @$secs seconds"