zoukankan      html  css  js  c++  java
  • mysql监控报警工具

    #!/usr/bin/env python
    # coding:utf-8
    
    import MySQLdb
    import requests, json
    import time
    
    url = "http://api.sendcloud.net/apiv2/mail/send"
    
    key = {}
    params = {}
    #目标用户的邮箱
    to_email = {'root': ["xxxx@xxx.com ", ], 'tianyi': ["x@qq.com", "x@sina.com", ]}
    
    #对发送邮件的格式的配置
    def sendmail(mail_list, sql):
        for number in range(len(mail_list)):
            params['apiUser'] = "xxx"
            params['apiKey'] = "0Mxb0ag"
            params['from'] = "x@foxmail.com"
            params['fromName'] = "bill"
            params['subject'] = "warning"
            params['html'] = "your sqlserver is dangerous: " + sql
            params['to'] = mail_list[number]
            r = requests.post(url, files={}, data=params)
            print r.text
            time.sleep(1)
    
    
    if __name__ == "__main__":
        while True:
            #配置数据库,root用户可以看见所有用户的线程
            conn = MySQLdb.connect(host='127.0.0.1', user='root', passwd='x')
            cur = conn.cursor()
            reCount = cur.execute('show processlist;')
    
            for i in cur.fetchall():
                print i
    
                # 判断对用户的操作
                number = 0
                #i[4]对应的是Command,i[5]是Time,当sql语句处于执行的状态,并且时间大于1秒的时候
                if i[4] == 'Query' and i[5] >= 1:
                    while number < i[5]:
                        # 发送邮件
                        sendmail(to_email[i[1]], str(i[7]))
                        number = number + 1
                        # 如果此时大于5秒就杀死进程
                        if number == 4:
                            id = str(i[0])
                            print id
                            sql = 'kill ' + id + ';'
                            cur.execute(sql)
                            break
                        time.sleep(1)
    
            cur.close()
            conn.close()
            time.sleep(1)
    
    
    #配置说明
    #修改所处mysql服务器的连接信息: conn = MySQLdb.connect(host='127.0.0.1', user='root', passwd='x')
    #所拥有用户及其对应的邮箱地址:to_email = {'root': ["x@xx.com ", ], 'tianyi': ["x@qq.com", "x@sina.com", ]}
    #使用的相关的sendcloud api配置:sendmail()
    

    参考资料:https://dev.mysql.com/doc/refman/5.7/en/show-processlist.html

         http://www.linuxidc.com/Linux/2016-02/128558.htm

  • 相关阅读:
    Appium python环境搭建
    打印各种三角形 正方形
    python学习笔记之---多进程实例
    selenium简介及发展
    python使用selenium自动化实现126邮箱登录的简单实例
    使用多进程访问网址的实例
    python学习笔记之---多进程【理论】
    爬虫设置定时任务
    python中eval和exec用法比较
    python使用文件处理加函数的方式写ATM简易操作
  • 原文地址:https://www.cnblogs.com/bill2014/p/7120416.html
Copyright © 2011-2022 走看看