Nagios监控mysql从服务器状态的插件不能正常工作。
问题描述:写了一个脚本,命名为check_mysql_slave. 其内容如下:
- #!/bin/sh
- declare -a slave_is
- slave_is=($(mysql -p&hsg^d3 -e “show slave status\G”|grep Running |awk ‘{print $2}’))
- if [ "${slave_is[0]}” = “Yes” -a “${slave_is[1]}” = “Yes” ]
- then
- echo “OK -slave is running”
- exit 0
- else
- echo “Critical -slave is error”
- exit 2
- fi
把这个脚本放在从mysql服务器的目录/usr/local/nrpe/libexec,先登录到mysql,执行
- mysql> show slave status
了解到从服务器跟主服务器是正常同步的。再手动运行脚本
- ./check_mysql_slave
,其输出为
- OK -slave is running
正是我所期待的结果。接着把nrpe.cfg加入这个项目,然后执行
- libexec/check_nrpe -H 192.168.93.17 -c check_mysql_slave
无论mysql从服务器的状态是啥,都输出“Critical -slave is error”.即脚本check_mysql_slave下没有生效。
原因:手动执行脚本,使用的是root帐号,因此mysql登录也使用默认的mysql root帐号。而使用nrpe, 则是使用默认帐号nagios,但mysql本身并没有这个帐号。
处理:在主服务器上创建帐号nagios
- mysql > grant Replication client on *.* to ‘nagios’@'%’ identified by ‘nagios’;
- mysql> flush privileges;
接着修改脚本check_mysql_slave,其内容为:
- #!/bin/sh
- declare -a slave_is
- slave_is=($(/usr/local/mysql/bin/mysql -unagios -pnagios -e “show slave status\G”|grep Running |awk ‘{print $2}’))
- if [ "${slave_is[0]}” = “Yes” -a “${slave_is[1]}” = “Yes” ]
- then
- echo “OK -slave is running”
- exit 0
- else
- echo “Critical -slave is error”
- exit 2
- fi
修改完毕,手动执行脚本,看是否正常;然后再执行
- libexec/check_nrpe -H 192.168.93.17 -c check_mysql_slave
Nagios监控mysql从服务器状态的插件就可正常工作,一切正常!
【编辑推荐】