探测MySQL主从状态,如果从未同步,则发邮件通知运维人员。利用定时任务秒级监测!
# -*- coding: utf-8 -*#! /usr/bin/env pythonfrom fabric.api import *from fabric.colors import *from fabric.context_managers import *from fabric.contrib.console import confirmimport stringimport smtplib#client ipenv.port='9527'env.user='dyt'env.hosts=['192.168.129.138','192.168.129.139']env.password='dyt2015'#env.mysql_port = '3306'@taskdef check(): slave_ip = run("ip add|grep global") for ip in env.hosts: if ip in slave_ip: slave_ip = ip slave_io = run("mysql -uroot -S /tmp/mysql_3306.sock -e 'show slave status\G'|grep Slave_IO_Running:|awk '{print $2}'") slave_sql = run("mysql -uroot -S /tmp/mysql_3306.sock -e 'show slave status\G'|grep Slave_SQL_Running:|awk '{print $2}'") if slave_io == 'Yes' and slave_sql == 'Yes': pass else: HOST = "smtp.qq.com" SUBJECT = "MySQL Master-Slave Warning . " TO = "test@qq.com" FROM = "test@qq.com" text = "%-20s MySQL Master-Slave status : down" % slave_ip BODY = string.join(( "From: %s" % FROM, "To: %s" % TO, "Subject: %s" % SUBJECT , "", text ), "\r\n") server = smtplib.SMTP() server.connect(HOST,"25") server.starttls() server.login("test@qq.com","password") server.sendmail(FROM, [TO], BODY) server.quit()