nagios系列(七)nagios通过自定义脚本的方式监控mysql主从同步
生活随笔
收集整理的這篇文章主要介紹了
nagios系列(七)nagios通过自定义脚本的方式监控mysql主从同步
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
nagios監控mysql主從同步
起因:nagios可能監控到mysql服務的運行情況,但確不能監控mysql的主從復制是否正常:有時候,同步已經停止,但管理人員卻不知道。
登陸mysql從服務器,通過執行 mysql> show slave status/G 查看其輸出,即可判定主從復制是否正常。下面是某個從服務器的輸出:?
mysql> show slave status\G
*************************** 1. row ***************************
? ? ? ? ? ? ? ?Slave_IO_State: Waiting for master to send event
? ? ? ? ? ? ? ? ? Master_Host: 192.168.8.40
? ? ? ? ? ? ? ? ? Master_User: repluser
? ? ? ? ? ? ? ? ? Master_Port: 3306
? ? ? ? ? ? ? ? Connect_Retry: 60
? ? ? ? ? ? ? Master_Log_File: mysql-bin.000008
? ? ? ? ? Read_Master_Log_Pos: 34797869
? ? ? ? ? ? ? ?Relay_Log_File: relay-bin.000003
? ? ? ? ? ? ? ? Relay_Log_Pos: 34797915
? ? ? ? Relay_Master_Log_File: mysql-bin.000008
? ? ? ? ? ? ?Slave_IO_Running: Yes
? ? ? ? ? ? Slave_SQL_Running: Yes
? ? ? ? ? ? ? Replicate_Do_DB:?
? ? ? ? ? Replicate_Ignore_DB:?
? ? ? ? ? ?Replicate_Do_Table:?
? ? ? ?Replicate_Ignore_Table:?
? ? ? Replicate_Wild_Do_Table: TD_OA.%
? Replicate_Wild_Ignore_Table: mysql.%
? ? ? ? ? ? ? ? ? ?Last_Errno: 0
? ? ? ? ? ? ? ? ? ?Last_Error:?
? ? ? ? ? ? ? ? ?Skip_Counter: 0
? ? ? ? ? Exec_Master_Log_Pos: 34797869
? ? ? ? ? ? ? Relay_Log_Space: 34798311
? ? ? ? ? ? ? Until_Condition: None
? ? ? ? ? ? ? ?Until_Log_File:?
? ? ? ? ? ? ? ? Until_Log_Pos: 0
? ? ? ? ? ?Master_SSL_Allowed: No
? ? ? ? ? ?Master_SSL_CA_File:?
? ? ? ? ? ?Master_SSL_CA_Path:?
? ? ? ? ? ? ? Master_SSL_Cert:?
? ? ? ? ? ? Master_SSL_Cipher:?
? ? ? ? ? ? ? ?Master_SSL_Key:?
? ? ? ? Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
? ? ? ? ? ? ? ? Last_IO_Errno: 0
? ? ? ? ? ? ? ? Last_IO_Error:?
? ? ? ? ? ? ? ?Last_SQL_Errno: 0
? ? ? ? ? ? ? ?Last_SQL_Error:?
? Replicate_Ignore_Server_Ids:?
? ? ? ? ? ? ?Master_Server_Id: 1
1 row in set (0.00 sec)
這個輸出,最關鍵處就是"Slave_IO_Running: Yes “和“Slave_SQL_Running: Yes ”,這兩個值全是"Yes"就表明主從復制正常,否則就是有問題。?
操作步驟:?
1、在從數據庫服務器增加一個用戶,給予較低的權限,操作為
mysql> grant replication client on *.* to 'nagios'@'%' identified by 'nagios';
mysql> flush privileges;
2、登陸主服務器驗證一下,看是否正常。操作為
/usr/local/mysql/bin/mysql -h192.168.8.45 -unagios -pnagios -e "show slave status\G"
注意:這個操作是在 shell下操作的
3、在從服務器安裝 nrpe,然后在配置文件/usr/local/nagios/etc/nrpe.cfg加入一行
command[check_mysql_slave]=/usr/local/nagios/libexec/check_mysql_slave
4、在nagios client端即mysql從服務器編寫腳本vim /usr/local/nagios/libexec/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
chmod +x /usr/local/nagios/libexec/check_mysql_slave
5、手動運行這個腳本,觀察輸出。?
# /usr/local/mysql/bin/mysql -unagios -pnagios -e "show slave status\G"|grep Running |awk '{print $2}'
報錯:
ERROR 1045 (28000): Access denied for user 'nagios'@'localhost' (using password: YES)
發現刪除系統mysql庫中user表自帶的一些'::1'等匿名用戶,并且對root配置密碼后,問題解決
6、nagios服務端執行
# /usr/local/nagios/libexec/check_nrpe -H 192.168.8.45 -c check_mysql_slave
OK -slave is running
7、修改nagios服務端service.cfg文件。
/usr/local/nagios/etc/objects/service.cfg
添加
define service{
? ? ? ? use ? ? ? ? ? ? generic-service
? ? ? ? host_name ? ? ? node45.chinasoft.com
? ? ? ? service_description ? ? check_mysql_slave
? ? ? ? check_command ? ? ? ? ? check_nrpe!check_mysql_slave
}
起因:nagios可能監控到mysql服務的運行情況,但確不能監控mysql的主從復制是否正常:有時候,同步已經停止,但管理人員卻不知道。
登陸mysql從服務器,通過執行 mysql> show slave status/G 查看其輸出,即可判定主從復制是否正常。下面是某個從服務器的輸出:?
mysql> show slave status\G
*************************** 1. row ***************************
? ? ? ? ? ? ? ?Slave_IO_State: Waiting for master to send event
? ? ? ? ? ? ? ? ? Master_Host: 192.168.8.40
? ? ? ? ? ? ? ? ? Master_User: repluser
? ? ? ? ? ? ? ? ? Master_Port: 3306
? ? ? ? ? ? ? ? Connect_Retry: 60
? ? ? ? ? ? ? Master_Log_File: mysql-bin.000008
? ? ? ? ? Read_Master_Log_Pos: 34797869
? ? ? ? ? ? ? ?Relay_Log_File: relay-bin.000003
? ? ? ? ? ? ? ? Relay_Log_Pos: 34797915
? ? ? ? Relay_Master_Log_File: mysql-bin.000008
? ? ? ? ? ? ?Slave_IO_Running: Yes
? ? ? ? ? ? Slave_SQL_Running: Yes
? ? ? ? ? ? ? Replicate_Do_DB:?
? ? ? ? ? Replicate_Ignore_DB:?
? ? ? ? ? ?Replicate_Do_Table:?
? ? ? ?Replicate_Ignore_Table:?
? ? ? Replicate_Wild_Do_Table: TD_OA.%
? Replicate_Wild_Ignore_Table: mysql.%
? ? ? ? ? ? ? ? ? ?Last_Errno: 0
? ? ? ? ? ? ? ? ? ?Last_Error:?
? ? ? ? ? ? ? ? ?Skip_Counter: 0
? ? ? ? ? Exec_Master_Log_Pos: 34797869
? ? ? ? ? ? ? Relay_Log_Space: 34798311
? ? ? ? ? ? ? Until_Condition: None
? ? ? ? ? ? ? ?Until_Log_File:?
? ? ? ? ? ? ? ? Until_Log_Pos: 0
? ? ? ? ? ?Master_SSL_Allowed: No
? ? ? ? ? ?Master_SSL_CA_File:?
? ? ? ? ? ?Master_SSL_CA_Path:?
? ? ? ? ? ? ? Master_SSL_Cert:?
? ? ? ? ? ? Master_SSL_Cipher:?
? ? ? ? ? ? ? ?Master_SSL_Key:?
? ? ? ? Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
? ? ? ? ? ? ? ? Last_IO_Errno: 0
? ? ? ? ? ? ? ? Last_IO_Error:?
? ? ? ? ? ? ? ?Last_SQL_Errno: 0
? ? ? ? ? ? ? ?Last_SQL_Error:?
? Replicate_Ignore_Server_Ids:?
? ? ? ? ? ? ?Master_Server_Id: 1
1 row in set (0.00 sec)
這個輸出,最關鍵處就是"Slave_IO_Running: Yes “和“Slave_SQL_Running: Yes ”,這兩個值全是"Yes"就表明主從復制正常,否則就是有問題。?
操作步驟:?
1、在從數據庫服務器增加一個用戶,給予較低的權限,操作為
mysql> grant replication client on *.* to 'nagios'@'%' identified by 'nagios';
mysql> flush privileges;
2、登陸主服務器驗證一下,看是否正常。操作為
/usr/local/mysql/bin/mysql -h192.168.8.45 -unagios -pnagios -e "show slave status\G"
注意:這個操作是在 shell下操作的
3、在從服務器安裝 nrpe,然后在配置文件/usr/local/nagios/etc/nrpe.cfg加入一行
command[check_mysql_slave]=/usr/local/nagios/libexec/check_mysql_slave
4、在nagios client端即mysql從服務器編寫腳本vim /usr/local/nagios/libexec/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
chmod +x /usr/local/nagios/libexec/check_mysql_slave
5、手動運行這個腳本,觀察輸出。?
# /usr/local/mysql/bin/mysql -unagios -pnagios -e "show slave status\G"|grep Running |awk '{print $2}'
報錯:
ERROR 1045 (28000): Access denied for user 'nagios'@'localhost' (using password: YES)
發現刪除系統mysql庫中user表自帶的一些'::1'等匿名用戶,并且對root配置密碼后,問題解決
6、nagios服務端執行
# /usr/local/nagios/libexec/check_nrpe -H 192.168.8.45 -c check_mysql_slave
OK -slave is running
7、修改nagios服務端service.cfg文件。
/usr/local/nagios/etc/objects/service.cfg
添加
define service{
? ? ? ? use ? ? ? ? ? ? generic-service
? ? ? ? host_name ? ? ? node45.chinasoft.com
? ? ? ? service_description ? ? check_mysql_slave
? ? ? ? check_command ? ? ? ? ? check_nrpe!check_mysql_slave
}
8、功能測試
轉載于:https://www.cnblogs.com/reblue520/p/6239759.html
總結
以上是生活随笔為你收集整理的nagios系列(七)nagios通过自定义脚本的方式监控mysql主从同步的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 人生中的过客经典句子135个
- 下一篇: 华氏度和摄氏度的换算