Nagios監控mysql從服務器狀態
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
【編輯推薦】