日常管理03-监控MYSQL主从延时3秒脚本;

#!/bin/env python
# -*- encoding: utf-8 -*-
import time
import os
import sys
import json
import re
import thread
mysql_stat_list = []
class MySQLMonitorInfo():
      def __init__(self):
            pass
      def is_slave(self):
            m = "mysql -e 'SHOW Slave status\G' "
            data = os.popen(m).readlines()
            if data == []:
               return '',False
            else:
                return data,True
      def stat_info(self):
           data,isslave = self.is_slave()
           if is slave:
                Str_string = {}
                for d in data[1:]:
                ds = d.replace("  ","").replace("\t","").split(":")
                Str_string[ds[0].strip()] = ds[1].strip()
                #print Str_string
                result = {
                'name': '%s' % ('slave.iorun'),
                'groups': "MysqlDelay3",
                'value': 1 if Str_string['Slave_IO_Running'] == 'Yes' else 2,
                'status': 1 if Str_string['Slave_IO_Running'] == 'Yes' else 2,
                'command': sys.argv[0],
                'messages': "%s %s"%('Slave_IO_Running', '正常' if Str_string['Slave_IO_Running'] == 'Yes' else "停止"),
                }
                mysql_stat_list.append(result)
                result = {
                'name': '%s' % ('slave.delay3'),
                'groups': "MysqlDelay3",
                'value': Str_string['Seconds_Behind_Master'],
                'status': 1 if int(Str_string['Seconds_Behind_Master']) < int(sys.argv[1]) else 2,
                'command': sys.argv[0],
                'messages': "%s %s"%('Seconds_Behind_Master', Str_string['Seconds_Behind_Master']),
                }
                mysql_stat_list.append(result)
                result = {
                'name': '%s' % ('slave.sqlrun'),
                'groups': "MysqlNew",
                'value': 1 if Str_string['Slave_SQL_Running'] == 'Yes' else 2,
                'status': 1 if Str_string['Slave_SQL_Running'] == 'Yes' else 2,
                'command': sys.argv[0],
                'messages': "%s %s"%('Slave_SQL_Running', "正常" if Str_string['Slave_SQL_Running'] == 'Yes' else "停止"),
                }
                return mysql_stat_list.append(result)
                else:
                      return {}
        def get_data(host,tid):
            return MySQLMonitorInfo().stat_info()
       if len(sys.argv) > 4:
          for host in sys.argv[1].split(","):
              thread.start_new_thread(get_data, (host, 1))
          else:
              get_data("", "")
              print json.dumps(mysql_stat_list)

原文地址:http://blog.51cto.com/breaklinux/2150207

时间: 2024-10-06 18:55:53

日常管理03-监控MYSQL主从延时3秒脚本;的相关文章

使用zabbix监控mysql主从状态

公司mysql架构为一主多从.在日常使用过程中我们经常会遇到主从不同步的情况,为了及时处理此问题现使用zabbix监控mysql主从状态并设置触发器,如有异常则发送邮件报警. 我们都知道使用命令"show slave status \G"可以查看mysql从的状态,下面用脚本方式检查其状态. 在mysql-slave中进入zabbix-agent目录创建脚本文件. cat mysql_slave_status.sh #!/bin/bash /usr/local/mysql/bin/my

zabbix自定义监控mysql主从状态,并做邮件告警

 通过zabbix自定义监控mysql主从状态,并做邮件告警 分析: mysql主要是通过主从来提供安全性,一个完整的主从体系,就应该包括数据同步.开启二进制日志.全备.还有对Slave_IO_Running和Slave_SQL_Running两个线程的实时监测,并做告警,而zabbix监控软件就提供了很好的方法:对于zabbix这个监控软件,个人来说也是比较熟悉,现在的企业们都基本用的是zabbix软件来做系统的资源的监控,zabbix的强大不仅仅体现于,它自身自带的监控模板比较全面,而是通过

监控mysql主从同步状态是否异常,如果异常,则发生短信或邮寄给管理员

阶段1:开发一个守护进程脚本每30秒实现检测一次. 阶段2:如果同步出现如下错误号(1158,1159,1008,1007,1062),请跳过错误 阶段3:请使用数组技术实现上述脚本(获取主从判断及错误号部分) [[email protected] ~]# mysql -u root -proot -e "show slave status\G;" *************************** 1. row ***************************       

监控MySQL主从同步

脚本监控数据库主从同步 来源:http://oldboy.blog.51cto.com/2561410/1632876 来源: (生产实战案例):监控MySQL主从同步是否异常,如果异常,则发送短信或者邮件给管理员.提示:如果没主从同步环境,可以用下面文本放到文件里读取来模拟: 阶段1:开发一个守护进程脚本每30秒实现检测一次. 阶段2:如果同步出现如下错误号(1158,1159,1008,1007,1062),则跳过错误. 阶段3:请使用数组技术实现上述脚本(获取主从判断及错误号部分 [[em

监控MySQL主从同步是否异常并报警企业案例模拟

企业面试题1:(生产实战案例):监控MySQL主从同步是否异常,如果异常,则发送短信或者邮件给管理员.提示:如果没主从同步环境,可以用下面文本放到文件里读取来模拟:阶段1:开发一个守护进程脚本每30秒实现检测一次.阶段2:如果同步出现如下错误号(1158,1159,1008,1007,1062),则跳过错误.阶段3:请使用数组技术实现上述脚本(获取主从判断及错误号部分) 此题来自:http://oldboy.blog.51cto.com/2561410/1632876 解答参考1: #!/bin

shell监控MySQL主从状态脚本两则

内容为自己的一点总结,如有不对欢迎狠劲儿拍砖 本文来自http://yijiu.blog.51cto.com/转载请经博主同意,翻版可耻 监控主从复制正常与否 相比各位都应该知道,监控主从是否工作正常,涉及命令如下: show slave status\G; 那么,我们需要关注的参数如下: 1. 首先查看SQL和IO线程是否为YES状态(想必各位都明白了) 2. 是否有延迟 是否大于0   #一般生成环境延迟是否大于500秒,如果大于500则报警,如大于1000则严重报警 #比如传递一个sql到

利用Zabbix监控mysql主从

mysql主从监控 #脚本如下,截取主从关键字 cat check_mysql_slave.sh  #!/bin/bash # declare -a 定义数组,slave_is 会被视为数组 declare -a slave_is slave_is=($(/data/mysql/bin/mysql -e "show slave status\G"|grep -E "Slave_IO_Running|Slave_SQL_Running:"|awk '{print $2

监控mysql主从脚本

一.下载并解压sendEmail cd /usr/local/src wget tar -zxvf sendEmail-v1.56.tar.gz cp sendEmail-v1.56/sendEmail /usr/local/bin/     拷贝之后就能用了 发邮件命令: sendEmail [email protected] -t [email protected] -s smtp.163.com -u "test"-xu zhang_peicheng -xp xxxxxxxxxx

实战处理mysql主从延时不一致之手动修复

前2天经常被同事反应crm后台系统和前台,经常报前后查询不一致的问题.一开始也很抓狂,从集群.日志跟踪.网络转包等方面排查,都没找到原因,后来经过和研发同事一起沟通,提出线上mysql主从数据库可能不一致导致,于是立马登陆mysql主从服务器,查看复制状态,到这很明显问题就找到. 手动修复主从延时不一致,主库完整mysqldump导出,注意用的参数.经过实践,是线上成功修复主从不一致的结果哦.还有个奇葩的问题,就是刚修复主从不一致,很快又出现,延时又拉很大.到这你是否会想到,主库有大量数据的写入