使用Zabbix監控服務器的時候,用到了監控mysql的主從狀態,咱們知道,Mysql主從複製同步(復使 用Zabbix監控服務器的時候,用到了監控mysql的主從狀態,咱們知道,Mysql主從複製)啓動後,要知足如下兩個條件纔算是成功,即:python
Slave_IO_Running: yesSlave_SQL_Running: Yes
新建一個腳本文件,mysqlms.shmysql
#!/bin/bash /usr/local/mysql/bin/mysql -uzabbix -e 'show slave status\G' |grep -E "Slave_IO_Running|Slave_SQL_Running"|awk '{print $2}'|grep -c Yes
將其放置到某目錄(須要有權限),我這裏放到/etc/zabbix/mysqlms.sh,在zabbix_agentd.conf中下方加入如下一條語句:linux
UserParameter=mysql.slavestatus,/etc/zabbix/mysqlms.sh
重啓zabbix-agent:web
sudo service zabbix-agent restart
截下來在Zabbix-Server所在服務器執行如下語句,測試是否成功:sql
zabbix_get -s 192.168.1.106 -k mysql.slavestatus
其中192.168.1.106爲剛剛腳本所在服務器,mysql.slavestatus爲Key值。若返回2,則表示主從服務正常。而後將該監控項在web平臺測加入items,設置好報警通知便可。bash
新建腳本mysqlms2.py服務器
#!/usr/bin/python #coding:utf-8 import MySQLdb import sys class check_mysql_repl(): def __init__(self): self.dbhost = 'localhost' self.dbuser = 'root' self.dbpass = 'wisp888' self.dbport = 3306 self.sock = "/data/db_misc/mysql_3306.sock" self.conn = MySQLdb.connect(unix_socket=self.sock) #根據實際狀況鏈接 self.cursor = self.conn.cursor(cursorclass = MySQLdb.cursors.DictCursor) self.sql = 'show slave status' self.cursor.execute(self.sql) self.data = self.cursor.fetchall() self.io = self.data[0]['Slave_IO_Running'] self.sql = self.data[0]['Slave_SQL_Running'] self.conn.close() def get_io_status(self): if self.io == 'Yes': return 1 else: return 0 def get_sql_status(self): if self.io == 'Yes': return 1 else: return 0 if __name__ == "__main__": if len(sys.argv) != 2: print "Usage: %s [io|sql]" % sys.argv[0] sys.exit(1) mysql = check_mysql_repl() if sys.argv[1] == "io": print mysql.get_io_status() elif sys.argv[1] == "sql": print mysql.get_sql_status()
(該腳原本自網絡)打開編輯文件網絡
vi /etc/zabbix/zabbix_agentd.conf
下方加入如下內容:socket
UserParameter=mysql.repl_io,/etc/zabbix/mysqlms2.py io UserParameter=mysql.repl_sql,/etc/zabbix/mysqlms2.py sql
其餘設置同腳本一。ide
完。