Zabbix 监控MySQL主从状态(Python脚本)


1、在被监控机(Mysql Slave端)放置检查脚本:

/usr/local/zabbix/bin/check_mysql_repl.py

  1. #!/usr/bin/python
  2. #coding:utf-8
  3. import MySQLdb
  4. import sys
  5. class check_mysql_repl():
  6. def __init__(self):
  7. self.dbhost = 'localhost'
  8. self.dbuser = 'root'
  9. self.dbpass = 'wisp888'
  10. self.dbport = 3306
  11. self.sock = "/data/db_misc/mysql_3306.sock"
  12. self.conn = MySQLdb.connect(unix_socket=self.sock) #根据实际情况连接
  13. self.cursor = self.conn.cursor(cursorclass = MySQLdb.cursors.DictCursor)
  14. self.sql = 'show slave status'
  15. self.cursor.execute(self.sql)
  16. self.data = self.cursor.fetchall()
  17. self.io = self.data[0]['Slave_IO_Running']
  18. self.sql = self.data[0]['Slave_SQL_Running']
  19. self.conn.close()
  20. def get_io_status(self):
  21. ifself.io == 'Yes':
  22. return1
  23. else:
  24. return0
  25. def get_sql_status(self):
  26. ifself.io == 'Yes':
  27. return1
  28. else:
  29. return0
  30. if __name__ == "__main__":
  31. if len(sys.argv) != 2:
  32. print"Usage: %s [io|sql]" % sys.argv[0]
  33. sys.exit(1)
  34. mysql = check_mysql_repl()
  35. if sys.argv[1] == "io":
  36. print mysql.get_io_status()
  37. elif sys.argv[1] == "sql":
  38. 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、添加监控项:

4、添加触发器:

此触发器的作用是检测到脚本的返回值不是1就会报警。

就这样一个简单的监控主从配置就完成!~~

相关内容