1、在被监控机(MySQL Slave端)放置检查脚本:
/usr/local/zabbix/bin/check_mysql_repl.py
#!/usr/bin/Python
#coding:utf-8
importMySQLdb
importsys
classcheck_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()
defget_io_status(self):
ifself.io =='Yes':
return1
else:
return0
defget_sql_status(self):
ifself.io =='Yes':
return1
else:
return0
if__name__ =="__main__":
iflen(sys.argv) !=2:
print"Usage: %s [io|sql]"% sys.argv[0]
sys.exit(1)
mysql = check_mysql_repl()
ifsys.argv[1] =="io":
printmysql.get_io_status()
elifsys.argv[1] =="sql":
printmysql.get_sql_status()
2、配置zabbix_agent.conf,添加Key和监控脚本:
vi /usr/local/zabbix/etc/zabbix_agentd.conf,文件最后添加以下两行:
UserParameter=mysql.repl_io,/usr/local/zabbix/bin/check_mysql_repl.py io UserParameter=mysql.repl_sql,/usr/local/zabbix/bin/check_mysql_repl.py sql
UserParameter是固定的
mysql.repl_io 是自定的Key,下面添加监控项的时候用到
/usr/local/zabbix/bin/check_mysql_repl.py io 这一段就是上面的脚本及参数
重启zabbix_agentd
3、添加监控项:
4、添加触发器:
此触发器的作用是检测到脚本的返回值不是1就会报警。
就这样一个简单的监控主从配置就完成!~~