利用Python監測MySQL主從狀態
- 2020 年 1 月 7 日
- 筆記
探測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 statusG'|grep Slave_IO_Running:|awk '{print $2}'") slave_sql = run("mysql -uroot -S /tmp/mysql_3306.sock -e 'show slave statusG'|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 ), "rn") server = smtplib.SMTP() server.connect(HOST,"25") server.starttls() server.login("[email protected]","password") server.sendmail(FROM, [TO], BODY) server.quit()