]> git.pld-linux.org Git - packages/monitoring-plugin-check_mysql-heartbeat.git/blame - check_mysql-heartbeat.sh
v1.1
[packages/monitoring-plugin-check_mysql-heartbeat.git] / check_mysql-heartbeat.sh
CommitLineData
64e40e56
ER
1#!/bin/sh
2# License: GPL v2
3# Author: Elan Ruusamäe <glen@delfi.ee>
4#
5# Usage: check_mysql-heartbeat
6#
7
8PROGRAM=${0##*/}
1e4e0308 9VERSION=1.1
64e40e56
ER
10PROGPATH=${0%/*}
11. $PROGPATH/utils.sh
12
13heartbeat=mk-heartbeat
14hostname=
15port=
16username=
17password=
18database=
2abe1e6d
ER
19warning=200
20critical=400
64e40e56
ER
21
22die() {
23 eval local rc=\$STATE_$1
24 [ "$rc" ] || rc=$STATE_UNKNOWN
2abe1e6d 25 echo "$1: $2"
64e40e56
ER
26 exit $rc
27}
28
29usage() {
30 cat >&2 <<EOF
5fb5bf13 31Usage: $PROGRAM
64e40e56 32
24bcef19 33 --mk, --maatkit
64e40e56 34 Uses maatkit: mk-heartbeat
24bcef19 35 --pt, --percona-toolkit
64e40e56 36 Uses percona-toolkit: pt-hearbeat
24bcef19 37
2abe1e6d
ER
38 -w SECONDS, --warning SECONDS
39 -c SECONDS,--critical SECONDS
24bcef19
ER
40 -H HOSTNAME, --host HOSTNAME
41 -P PORT, --port PORT
42 -u USERNAME, --username USERNAME
43 -p PASSWORD, --password PASSWORD
44 -D DATABASE, --database DATABASE
64e40e56
ER
45EOF
46}
47
b1f5220b 48# Parse arguments
2abe1e6d 49args=$(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 -- "$@")
b1f5220b
ER
50if [ $? != 0 ]; then
51 usage
52 exit 1
53fi
54eval set -- "$args"
55
64e40e56 56## Start of main program ##
b1f5220b 57while :; do
64e40e56
ER
58 case "$1" in
59 -h|--help)
60 usage
61 exit 0
62 ;;
63 -V|--version)
1e4e0308 64 echo "$PROGRAM $VERSION"
64e40e56
ER
65 exit 0
66 ;;
67 --mk|--maatkit)
68 heartbeat=mk-heartbeat
69 ;;
70 --pt|--percona-toolkit)
b48a6862 71 heartbeat=pt-heartbeat
64e40e56 72 ;;
2abe1e6d
ER
73 -c|--critical)
74 shift
75 critical=$1
76 ;;
77 -w|--warning)
78 shift
79 warning=$1
80 ;;
64e40e56
ER
81 -H|--host)
82 shift
83 hostname=$1
84 ;;
85 -P|--port)
86 shift
87 port=$1
88 ;;
89 -u|--username)
90 shift
91 username=$1
92 ;;
93 -p|--password)
94 shift
95 password=$1
96 ;;
97 -D|--database)
98 shift
99 database=$1
100 ;;
b1f5220b
ER
101 --)
102 shift
103 break
104 ;;
105 *)
106 die UNKNOWN "Internal error: [$1] Not recognized!"
107 ;;
64e40e56
ER
108 esac
109 shift
110done
111
112if [ -z "$hostname" ]; then
113 die UNKNOWN "No hostname given"
114fi
115
2abe1e6d
ER
116# check out config errors
117if [ $warning -gt $critical ]; then
118 die UNKNOWN "Warning level bigger than critical level"
119fi
120
5fb5bf13 121secs=$($heartbeat ${database:+-D $database} --check -h $hostname ${username:+-u $username} ${password:+-p $password} ${port:+--port $port} 2>&1)
64e40e56
ER
122rc=$?
123if [ "$rc" != 0 ]; then
2abe1e6d 124 die UNKNOWN "$secs"
64e40e56 125fi
2abe1e6d 126
119d5b2f
ER
127# strip decimals, shell doesn't process these
128secs=${secs%[.,]*}
129
2abe1e6d
ER
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"
132
133die OK "$heartbeat on $hostname @$secs seconds"
This page took 0.060516 seconds and 4 git commands to generate.