Zabbix 监控Mysql 主从状态(Python脚本)
1、在被监控机(Mysql Slave端)放置检查脚本:/usr/local/zabbix/bin/check_mysql_repl.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['Slave_IO_Running']
[*] self.sql = self.data['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 " % sys.argv
[*] sys.exit(1)
[*] mysql = check_mysql_repl()
[*] if sys.argv == "io":
[*] print mysql.get_io_status()
[*] elif sys.argv == "sql":
[*] print mysql.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、添加监控项:
http://blog.运维网.com/attachment/201212/134602951.png
4、添加触发器:
http://blog.运维网.com/attachment/201212/134624905.png
此触发器的作用是检测到脚本的返回值不是1就会报警。
就这样一个简单的监控主从配置就完成!~~
页:
[1]