探测MySQL主从状态,如果从未同步,则发邮件通知运维人员。利用定时任务秒级监测!
# -*- coding: utf-8 -* #! /usr/bin/env python from fabric.api import * from fabric.colors import * from fabric.context_managers import * from fabric.contrib.console import confirm import string import smtplib #client ip env.port=‘9527‘ env.user=‘dyt‘ env.hosts=[‘192.168.129.138‘,‘192.168.129.139‘] env.password=‘dyt2015‘ #env.mysql_port = ‘3306‘ @task def 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 = "[email protected]" FROM = "[email protected]" 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("[email protected]","password") server.sendmail(FROM, [TO], BODY) server.quit()
时间: 2024-10-14 07:36:11