Nagios監(jiān)控Mysql服務器狀態(tài)的插件不能正常工作
Nagios監(jiān)控mysql從服務器狀態(tài)的插件不能正常工作。
問題描述:寫了一個腳本,命名為check_mysql_slave. 其內(nèi)容如下:
- #!/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,執(zhí)行
- mysql> show slave status
了解到從服務器跟主服務器是正常同步的。再手動運行腳本
- ./check_mysql_slave
,其輸出為
- OK -slave is running
正是我所期待的結(jié)果。接著把nrpe.cfg加入這個項目,然后執(zhí)行
- libexec/check_nrpe -H 192.168.93.17 -c check_mysql_slave
無論mysql從服務器的狀態(tài)是啥,都輸出“Critical -slave is error”.即腳本check_mysql_slave下沒有生效。
原因:手動執(zhí)行腳本,使用的是root帳號,因此mysql登錄也使用默認的mysql root帳號。而使用nrpe, 則是使用默認帳號nagios,但mysql本身并沒有這個帳號。
處理:在主服務器上創(chuàng)建帳號nagios
- mysql > grant Replication client on *.* to ‘nagios’@'%’ identified by ‘nagios’;
- mysql> flush privileges;
接著修改腳本check_mysql_slave,其內(nèi)容為:
- #!/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
修改完畢,手動執(zhí)行腳本,看是否正常;然后再執(zhí)行
- libexec/check_nrpe -H 192.168.93.17 -c check_mysql_slave
Nagios監(jiān)控mysql從服務器狀態(tài)的插件就可正常工作,一切正常!
【編輯推薦】