Nagios监控Mysql replication主从复制状态

本文介绍如何使用Shell脚本实现MySQL主从状态监控,通过Nagios插件及时发现并处理同步故障,减少业务影响。

简介

当搭建完成mysql的主从复制后,有时可能会遇到同步失败的问题。有时需要手动进行干预,但如果长时间没有同步可能就会需要在slave数据库中重新导入master的数据,然后重新进行数据同步,这是非常繁琐而且影响业务可用性的操作。

所以对于Mysql主从同步的状态的监控变得较为重要,如果能够及时发现同步故障并及时处理能够减少对于业务系统的影响,以及后续大量麻烦的操作。

此文通过shell脚本编写nagios插件,对于mysql的主从状态进行监控。

环境介绍

mysql-slave:   192.168.1.80
nagios服务器:  192.168.1.199

第一步:Slave数据库帐号创建

1.登录Slave数据库:
mysql -h 192.168.1.80 -uroot -p
2.新建监控用户:

mysql>GRANTREPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'newslave'@'192.168.1.199'IDENTIFIED “password”;
mysql>FLUSH PRIVILEGES;

第二步:部署nagios监控脚本

1.将脚本放至到/usr/local/nagios/libexec/check_mysqlslave.sh,并添加执行权限chmod a+x /usr/local/nagios/libexec/check_mysqlslave.sh

2.脚本内容:

执行脚本前先确认nagios服务器上是否已经安装了mysql的客户端,如果执行mysql命令发现command not found.请先执行yum install mysql -y安装mysql客户端连接工具。

/usr/local/nagios/libexec/check_mysqlslave.sh
#!/bin/bash
USAGE="`basename $0` [-H]<hostname> [-P]<port>[-u]<username> [-p]<password>";
critical=""
warning=""
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3
#status_string=Threads_connected
# print usage
if [[ $# -lt 4 ]]
then
echo ""
echo "Wrong Syntax: `basename $0` $*"
echo ""
echo "Usage: $USAGE"
echo ""
exit 0
fi
# read input
while [[ $# -gt 0 ]]
do
case "$1" in
-H|--hostname)
shift
hostname=$1
;;
-P|--port)
shift
port=$1
;;
-u|--user)
shift
user=$1
;;
-p|--password)
shift
password=$1
esac
shift
done
value=$(mysql -h $hostname -P $port -u $user -e "show slavestatus\G;" -p$password|grep \ "Slave_SQL_Running"|awk '{print$2}');
if [[ "$value" != "Yes" ]]
then
status=$(mysql -h $hostname -P $port -u $user -e "show slavestatus\G;" -p$password|grep \ "Last_SQL_Error"|awk '{print$2}');
echo "CRITICAL - $status"
exit 2
fi
if [[ "$value" == "Yes" ]]
then
echo "OK - $value"
exit 0
fi

3.脚本执行说明:

[root@nagios ~]# bash/usr/local/nagios/libexec/check_mysqlslave.sh

Wrong Syntax: check_mysqlslave.sh

Usage: check_mysqlslave.sh[-H]<hostname> [-P]<port> [-u]<username> [-p]<password>

-H 为数据库的ip地址 -P为MYSQL监听端口 -u为数据库用户名-p为数据库密码

4.执行测试:

[root@nagios ~]#check_mysqlslave.sh -H 192.168.1.80 -P 3306 -u slave -p "password"
OK - Yes

执行结果根据在slave数据库中执行show slave status\G;中的Slave_SQL_Running状态而来,如果此字段结果不为“Yes”,则会进行报警。且会输出Last_SQL_Error的状态。

第三步:将脚本部署至nagios进行监控

1.修改commands.cfg
在commands.cfg添加如下代码:

define command{
command_name check_mysqlslave
command_line /usr/local/nagios/libexec/check_mysqlslave.sh $ARG1$
}

2.修改localhost.cfg
在localhost.cfg(当然也可以在你指定的所需监控服务器内添加服务监控项目)添加如下代码:

define service{
use generic-service
host_name mysql-slave
service_description CHECK_MYSQLREPLICATION
check_command check_mysqlslave! -H 192.168.1.199 -P 3306 -u newslave -p"password"
}

感叹号后为被监控数据库的相关信息。

3.验证

重启nagios后即可在nagios的web上查看到新添加的监控项目。


文章来自于: http://learn-learn.top/archives/21.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值