python监控数据主从复制的脚本

#!/usr/bin/python
#-*- coding: UTF-8 -*-
#
#因登录权限问题,更改IP登录的方式,改为sock识别不同的数据库实例
#
import os
import  MySQLdb
from email import encoders
from email.header import Header
from email.mime.text import  MIMEText
from email.utils import parseaddr,formataddr
import smtplib

#check module
def check_status(socket,username,password,portnum):
        try:
                conn = MySQLdb.connect( host=‘localhost‘,user=username,passwd=password,port=portnum,unix_socket=socket)
                cursor = conn.cursor(MySQLdb.cursors.DictCursor)
                cursor.execute(‘show slave status;‘)
                res = cursor.fetchall()
                iostats=res[0].get(‘Slave_IO_Running‘)
                sqlstats=res[0].get(‘Slave_SQL_Running‘)
                last_error=res[0].get(‘Last_SQL_Error‘)
                rp = open(‘report.txt‘,‘w‘)
                if iostats != ‘Yes‘:
                        rp.write(‘iostat:‘+iostat+‘\n‘)
                if sqlstats != ‘Yes‘:
                        rp.write(‘sqlstat:‘+sqlstat+‘\n‘)
#               print iostats,sqlstats,last_error
                rp.close()
                cursor.close()
                conn.close()
        except MySQLdb.Error,e:
                print "Mysql Error %d: %s" %(e.args[0],e.args[1])

#
#mail module
def mailto(title,t):

#发送邮件函数,从文件t中读取内容,并发送给管理员

        def _format_addr(s):
                #格式化邮件信息头
                name,addr = parseaddr(s)
                return  formataddr((Header(name,‘utf-8‘).encode(),addr))
        from_addr = ‘*********@126.com‘
        password = ‘***********‘
        to_addr = ‘*******@qq.com‘
        smtp_server = ‘smtp.126.com‘
        msg = MIMEText(_text=open(t,‘r‘).read(),_subtype=‘plain‘ ,_charset=‘utf-8‘)
        msg[‘From‘] = _format_addr(‘数据库状态监控<%s>‘ % from_addr)
        msg[‘To‘] = to_addr
        msg[‘Subject‘] = Header(title ,‘utf-8‘.encode())
        try:
                server = smtplib.SMTP(smtp_server,25)
                server.starttls()
                server.set_debuglevel(0)
                server.login(from_addr,password)
                server.sendmail(from_addr,[to_addr],msg.as_string())
                server.quit()
                return True
        except Exception,e:
                print str(e)
                return False

if __name__==‘__main__‘:

        try:
                check_status(‘/home/data/mysql3309/mysql.sock‘,‘root‘,‘************‘,3309)
                er = os.path.getsize(‘./report.txt‘)
                if er != 0:
                        mailto(‘Slave-Status Of 192.168.1.204:3309‘,‘./report.txt‘)
        except Exception,e:
                print str(e)
#               with open(‘./report.txt‘,‘w‘) as f:
#                       f.write(str(e))
#                       mailto(‘check_error‘,‘./report.txt‘)
时间: 2024-10-20 09:01:09

python监控数据主从复制的脚本的相关文章

Python监控进程性能数据并画图保存为PDF文档

引言 利用psutil模块(https://pypi.python.org/pypi/psutil/),可以很方便的监控系统的CPU.内存.磁盘IO.网络带宽等性能參数,下面是否代码为监控某个特定程序的CPU资源消耗.打印监控数据,终于画图显示,而且保存为指定的 PDF 文档备份. 示范代码 #!/usr/bin/env python # -*- coding: utf-8 -*- ''' Copyright (C) 2015 By Thomas Hu. All rights reserved.

【Python运维脚本】Python监控内存(swap)的使用率

#!/usr/bin/env python # -*- coding=utf-8 -*- #Using GPL v2.7 #Author: [email protected] #Python监控内存(swap)的使用率 ''' 1.实现原理:通过SNMP协议获取系统信息,再进行相应的计算和格式化,最后输出结果 2.特别注意:被监控的机器上需要支持snmp.yum install -y net-snmp*安装 ''' #!/usr/bin/python import os def getAllit

【Python运维脚本】Python监控磁盘

#!/usr/bin/env python # -*- coding=utf-8 -*- #Using GPL v3.3 #Author: [email protected] #Python监控磁盘 """ 1.实现原理:通过SNMP协议获取系统信息,再进行相应的计算和格式化,最后输出结果 2.特别注意:被监控的机器上需要支持snmp.yum install -y net-snmp*安装 """ #!/usr/bin/python import

【Python运维脚本】Python监控网卡流量

#!/usr/bin/env python # -*- coding=utf-8 -*- #Using GPL v2.7 #Author: [email protected]126.com #Python监控网卡流量 """ 1.实现原理:通过SNMP协议获取系统信息,再进行相应的计算和格式化,最后输出结果 2.特别注意:被监控的机器上需要支持snmp.yum install -y net-snmp*安装 """ #!/usr/bin/pytho

【Python运维脚本】Python监控系统负载

#!/usr/bin/env python # -*- coding=utf-8 -*- #Using GPL v2.7 #Author: [email protected]126.com #Python监控系统负载 """ 1.实现原理:通过SNMP协议获取系统信息,再进行相应的计算和格式化,最后输出结果 2.特别注意:被监控的机器上需要支持snmp.yum install -y net-snmp*安装 """ #!/usr/bin/pytho

【Python运维脚本】Python监控CPU情况

#!/usr/bin/env python # -*- coding=utf-8 -*- #Using GPL v2.7 #Author: [email protected]126.com #Python监控CPU情况 """ 1.实现原理:通过SNMP协议获取系统信息,再进行相应的计算和格式化,最后输出结果 2.特别注意:被监控的机器上需要支持snmp.yum install -y net-snmp*安装 """ #!/usr/bin/pyth

zabbix企业应用之定时获取监控数据做报表

最近某项目突然提出一个新需求,需要每周五14点,获取他们监控项目每天20-24点监控平均数据,以小时为单位的,输出文件是excel的,要求以每天为单位单独一个sheet,汇总邮件转给业务. 他们主要是做业务使用量报表,每周周报使用,虽然需求困难,但作为运维也得解决,下面是邮件的效果图. 可以看到邮件标题是带有项目名称与时间,收集人是业务与我. 下面是excel的格式 每天一个sheet,获取这些项目自己每天20-24点的监控平均数据,以小时为单位. 主要是使用sql查看上面的监控数据,并通过py

如何从Zabbix数据库中获取监控数据

做过Zabbix的同学都知道,Zabbix通过专用的Agent或者SNMP收集相关的监控数据,然后存储到数据库里面实时在前台展示.Zabbix监控数据主要分为以下两类: 历史数据:history相关表,从history_uint表里面可以查询到设备监控项目的最大,最小和平均值,即存储监控数据的原始数据. 趋势数据:trends相关表,趋势数据是经过Zabbix计算的数据,数据是从history_uint里面汇总的,从trends_uint可以查看到监控数据每小时最大,最小和平均值流量. Zabb

用python监控您的window服务

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://world77.blog.51cto.com/414605/782935 最近比较烦,研发给的pc服务版本在虚拟机上已经开始给客户使用了,服务老是莫名的死翘翘,客户不停的电话给我,搞的我心情很差,于是在一个下午,静下心来,用python写了个简单的监控进程的脚本,当发现进程消失的时候,立即调用服务,开启服务... 脚本的工作原理是这样的:脚本读取配置文件,读取预先配置好的调用系统