zoukankan      html  css  js  c++  java
  • Zabbix监控mysql主从复制状态

    原理

    mysql slave

      show slave statusG

      在输出信息中查看I/O线程和SQL线程的状态值(YES为正常,NO为错误)

      Slave_IO_Running: Yes

      Slave_SQL_Running: Yes

    配置

    定义zabbix监控item key

    vim zabbix-agent/etc/zabbix_agentd.conf.d/userparameter_mysql.conf

    UserParameter=mysql.repl[*],/storage/server/zabbix-agent/scripts/mysql_repl.py $1

    定义mysql slave监控账号

    GRANT SUPER, REPLICATION CLIENT ON *.* TO 'zabbix_check'@'localhost' IDENTIFIED BY PASSWORD 'zabbix@check'

    mysql_repl.py  # if Slave_IO_Running=Yes && Slave_SQL_Running=Yes print 1 else print 0

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    # check mysql slave status
    # 2016/1/18 pdd
    
    '''
        sys.argv[1] -> (/tmp/mysql3306.sock,/tmp/mysql3307.sock ...) 因为有多个mysql slave运行在mysqld_multi上
    '''
    
    import MySQLdb
    import sys
    
    class check_mysql_repl:
        def __init__(self,sock):
            self.dbhost = 'localhost'
            self.dbuser = 'zabbix_check'
            self.dbpass = 'zabbix@check'
            self.sock = sock
    
        def execution(self):
            try:
                conn = MySQLdb.connect(host=self.dbhost,user=self.dbuser,passwd=self.dbpass,unix_socket=self.sock)
                cursor = conn.cursor(cursorclass = MySQLdb.cursors.DictCursor)
                execute = 'show slave status'
                cursor.execute(execute)
                data = cursor.fetchall()
                conn.close()
                return data
    
            except MySQLdb.Error,e:
                print "Mysql Error %d: %s" % (e.args[0], e.args[1])
                sys.exit(1)
    
        def get_repl_status(self):
            result = self.execution()
            io = result[0]['Slave_IO_Running']
            sql = result[0]['Slave_SQL_Running']
            if io == 'Yes' and sql == 'Yes':
                return 1
            else:
                return 0
    
    if __name__ == "__main__":
        if len(sys.argv) != 2:
            print "Usage: %s mysql.sock" % sys.argv[0]
            sys.exit(1)
        mysql = check_mysql_repl(sys.argv[1])
        print mysql.get_repl_status()

    测试

    重启zabbix_agentd使监控key生效

    客户端测试

    服务器端 # 页面监控主机添加对应的application items

      

  • 相关阅读:
    【协议分析】Wireshark 过滤表达式实例
    学习Javascript闭包(Closure)
    如何解决 touchstart 事件与 click 事件的冲突
    JS实现控制HTML5背景音乐播放暂停
    $.ajax()方法详解
    js将汉字转为相应的拼音
    js 滚动到一定位置导航定位在页面最顶部
    javascript获取网页地址栏的id
    jquery 上传图片转为base64,ajax提交到后台
    jquery 图片转为base64
  • 原文地址:https://www.cnblogs.com/metasequoia/p/5832364.html
Copyright © 2011-2022 走看看