Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ## mysqllag check script works! :)
- [root@virtcent10:/usr/local/nagios/libexec] #./check_mysqllag
- + STATE_OK=0
- + STATE_WARNING=1
- + STATE_CRITICAL=2
- + STATE_UNKNOWN=3
- + STATE_DEPENDENT=4
- + mysqlpath=/usr/bin/
- + user=root
- + pass=secret
- + warn=30
- + crit=60
- + null=NULL
- + usage1='Usage: ./check_mysqllag -uroot -psecret [-w <warn>] [-c <crit>]'
- + usage2='<warn> is lag time, in seconds, to warn at. Default is 30.'
- + usage3='<crit> is lag time, in seconds, to be critical at. Default is 60.'
- + exitstatus=1
- + test -n ''
- ++ /usr/bin//mysql -uroot -psecret -e 'show slave status\G'
- ++ /bin/grep Seconds_Behind_Master
- ++ /bin/cut -f2 -d:
- + seconds=' 0'
- + '[' 0 = NULL ']'
- + '[' 0 -lt 60 ']'
- + '[' 0 -ge 30 ']'
- + '[' 0 -ge 60 ']'
- + '[' 0 -lt 30 ']'
- + echo OK - Slave is 0 seconds behind
- OK - Slave is 0 seconds behind
- + exit 0
- ## mysql on client
- [root@virtcent10:/usr/local/nagios/libexec] #which mysql
- /usr/bin/mysql
- ## ls -l of script on nagios client
- [root@virtcent10:/usr/local/nagios/libexec] #ls -l check_mysqllag*
- lrwxrwxrwx 1 nagios nagios 17 May 1 11:12 check_mysqllag -> check_mysqllag.sh
- -rwx------ 1 nagios nagios 1908 May 1 13:20 check_mysqllag.sh
- ## mysqllag service definition
- define service{
- use generic-service ; Name of service template to use
- host_name db2
- service_description MySQL Lag
- check_command check_mysqllag
- notifications_enabled 0
- }
- ## mysqllag command definition
- define command{
- command_name check_mysqllag
- command_line $USER1$/check_mysqllag -H $HOSTADDRESS$ -p 3306 -v $ARG1$ $ARG2$
- }
- ## mysqllag script
- #! /bin/sh -x
- STATE_OK=0
- STATE_WARNING=1
- STATE_CRITICAL=2
- STATE_UNKNOWN=3
- STATE_DEPENDENT=4
- mysqlpath='/usr/bin/'
- user='root'
- pass='secret'
- warn=30
- crit=60
- null="NULL"
- usage1="Usage: $0 -u$user -p$pass [-w <warn>] [-c <crit>]"
- usage2="<warn> is lag time, in seconds, to warn at. Default is 30."
- usage3="<crit> is lag time, in seconds, to be critical at. Default is 60."
- exitstatus=$STATE_WARNING #default
- while test -n "$1"; do
- case "$1" in
- -c)
- crit=$2
- shift
- ;;
- -w)
- warn=$2
- shift
- ;;
- -u)
- user=$2
- shift
- ;;
- -p)
- pass=$2
- shift
- ;;
- -h)
- echo $usage1;
- echo
- echo $usage2;
- echo $usage3;
- exit $STATE_UNKNOWN
- ;;
- -H)
- host=$2
- shift
- ;;
- *)
- echo "Unknown argument: $1"
- echo $usage1;
- echo
- echo $usage2;
- echo $usage3;
- exit $STATE_UNKNOWN
- ;;
- esac
- shift
- done
- seconds=`$mysqlpath/mysql -u$user -p$pass -e 'show slave status\G' | /bin/grep Seconds_Behind_Master | /bin/cut -f2 -d:`
- # on the number line, we need to test 6 cases:
- # 0-----w-----c----->
- # 0, 0<lag<w, w, w<lag<c, c, c<lag
- # which we simplify to
- # lag>=c, w<=lag<c, 0<=lag<warn
- # if null, critical
- if [ $seconds = $null ]; then
- echo CRITICAL - Slave is $seconds seconds behind
- exit $STATE_CRITICAL;
- fi
- #w<=lag<c
- if [ $seconds -lt $crit ]; then
- if [ $seconds -ge $warn ]; then
- echo WARNING - Slave is $seconds seconds behind
- exit $STATE_WARNING;
- fi
- fi
- if [ $seconds -ge $crit ]; then
- echo CRITICAL - Slave is $seconds seconds behind
- exit $STATE_CRITICAL;
- fi
- # 0<=lag<warn
- if [ $seconds -lt $warn ]; then
- echo OK - Slave is $seconds seconds behind
- exit $STATE_OK;
- fi
Add Comment
Please, Sign In to add comment