Initial commit

This commit is contained in:
Guillaume Coré
2013-04-22 12:17:40 -07:00
commit e547044a5c
2 changed files with 147 additions and 0 deletions
+25
View File
@@ -0,0 +1,25 @@
nagios-plugin-check_galera_cluster
=======================================
A nagios plugin to check status of a galera cluster
Version 1.0, Guillaume Coré <g@fridim.org>
check_galera_cluster is a Nagios plugin to monitor Galera cluster status.
check_galera_cluster -u USER -p PASSWORD [-H HOST] [-P PORT] [-w SIZE] [-c SIZE] [-0]
Options:
u)
MySQL user.
p)
MySQL password.
H)
MySQL host. Default is localhost.
P)
MySQL port. Default is 3306.
w)
Sets minimum number of nodes in the cluster when WARNING is raised. (default is same as critical).
c)
Sets minimum number of nodes in the cluster when CRITICAL is raised. (default is 2).
0)
Rise CRITICAL if the node is not primary
+122
View File
@@ -0,0 +1,122 @@
#!/bin/bash
PROGNAME=`basename $0`
VERSION="Version 1.0,"
AUTHOR="Guillaume Coré <g@fridim.org>"
ST_OK=0
ST_WR=1
ST_CR=2
ST_UK=3
print_version() {
echo "$VERSION $AUTHOR"
}
print_help() {
print_version $PROGNAME $VERSION
echo ""
echo "$PROGNAME is a Nagios plugin to monitor Galera cluster status."
echo ""
echo "$PROGNAME -u USER -p PASSWORD [-H HOST] [-P PORT] [-w SIZE] [-c SIZE] [-0]"
echo ""
echo "Options:"
echo " u)"
echo " MySQL user."
echo " p)"
echo " MySQL password."
echo " H)"
echo " MySQL host. Default is localhost."
echo " P)"
echo " MySQL port. Default is 3306."
echo " w)"
echo " Sets minimum number of nodes in the cluster when WARNING is raised. (default is same as critical)."
echo " c)"
echo " Sets minimum number of nodes in the cluster when CRITICAL is raised. (default is 2)."
echo " 0)"
echo " Rise CRITICAL if the node is not primary"
exit $ST_UK
}
# default values
crit=2
port='3306'
mysqlhost='localhost'
while getopts “hvu:p:H:P:w:c:0” OPTION; do
case $OPTION in
h)
print_help
exit $ST_UK
;;
v)
print_version $PROGNAME $VERSION
exit $ST_UK
;;
u)
mysqluser=$OPTARG
;;
p)
password=$OPTARG
;;
H)
mysqlhost=$OPTARG
;;
P)
port=$OPTARG
;;
w)
warn=$OPTARG
;;
c)
crit=$OPTARG
;;
0)
primary='TRUE'
;;
?)
echo "Unknown argument: $1"
print_help
exit $ST_UK
;;
esac
done
if [ -z "$warn" ]; then
warn=$crit
fi
# MANDATORY args
if [ -z "$mysqluser" ]; then
echo "argument -u missing"
print_help
exit $ST_UK
fi
if [ -z "$password" ]; then
echo "argument -p missing"
print_help
exit $ST_UK
fi
r1=$(mysql -h$mysqlhost -P$port -u$mysqluser -p$password -e "show status like 'wsrep_cluster_size'"|grep wsrep_cluster_size|cut -f 2)
r2=$(mysql -h$mysqlhost -P$port -u$mysqluser -p$password -e "show status like 'wsrep_cluster_status'"|grep wsrep_cluster_status|cut -f 2)
if [ "$primary" = 'TRUE' ]; then
if [ "$r2" != 'Primary' ]; then
echo "CRITICAL: node is not primary"
ST_FINAL=$ST_CR
fi
fi
if [ $r1 -gt $warn ]; then
echo "OK: number of NODES = $r1"
ST_FINAL=${ST_FINAL-$ST_OK}
elif [ $r1 -le $crit ]; then
echo "CRITICAL: number of NODES = $r1"
ST_FINAL=$ST_CR
elif [ $r1 -le $warn ]; then
echo "WARNING: number of NODES = $r1"
ST_FINAL=${ST_FINAL-$ST_WR}
fi
exit $ST_FINAL