python用作监控

发布时间:2019-07-15 10:45:51编辑:auto阅读(1338)


    一.python日志模块

    二.python数据库连接

    三.时间处理模块

    四.python传递参数给shell

    五.发送邮件(py2.7)

    六.python计划任务

    七.supervisor

    /etc/supervisor.conf
    [program:check]
    command = python /data/remote_back/checkbackup.py
    directory = /data/remote_back
    user = root
    
    root@GS_TMN_Data:[/data/remote_back]supervisorctl 
    check          RUNNING    pid 5771, uptime 19:15:25

    八.综合实例

    #coding:utf-8
    import threading
    import MySQLdb
    from datetime import datetime
    import time,os
    import smtplib
    from email.mime.text import MIMEText
    #from log import logger
    import logging
    def get_log():
        logging.basicConfig(level=logging.DEBUG,
        format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
        datefmt='%a, %d %b %Y %H:%M:%S',
        filename='myapp.log',
        filemode='w')
        logger = logging.getLogger('root')
        return logger
    def get_con():
        host = "120.138.75.88"
        port = 5849
        logsdb = "serverlist"
        user = "xxxx"
        password = "xxxxx"
        con = MySQLdb.connect(host=host, user=user, passwd=password, db=logsdb, port=port, charset="utf8")
        return con
    
    def calculate_time():
        now = time.mktime(datetime.now().timetuple())-60*2
        result = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(now))
        return result
    def backup_time():
        now = time.mktime(datetime.now().timetuple())-60*2
        result = time.strftime('%Y%m%d', time.localtime(now))
        backupresult = str(result)
        return backupresult
    
    
    def get_data(agent):
        select_time = calculate_time()
        get_log().info("select time:"+select_time)
        sql = 'SELECT COUNT(DISTINCT gamedatadbname) FROM gameserverinfo WHERE agent="%s" and isdelete!=1  ORDER BY zone' %(agent)
        conn = get_con()
        cursor = conn.cursor()
        cursor.execute(sql)
        results = cursor.fetchall()
        num1 = results[0]
        num = num1[0]
        cursor.close()
        conn.close()
        return num
    def get_backupdata(agent):
    #    backupnum = os.popen('ls *`date +%Y%m%d04`* |wc -l').read().strip('\n')
        shijian = '*' + backup_time() + '04' +'*'
        guize = "%s" %(agent) + shijian
        os.environ['guize'] = str(guize)
        backupnum = os.popen('ls $guize |wc -l').read().strip('\n')
        return backupnum
        	
    def check():
        numdata = int(get_data('ynvng'))
        backupnum = int(get_backupdata('ynvng'))
        if numdata == backupnum:
            result = "备份成功"
        else:
            result = "备份失败"
        return result
    def send_email(content):
     
        sender = "lgl15984@163.com"
        receiver = ["992975991@qq.com","luoguoling@mokylin.com"]
        host = 'smtp.163.com'
        port = 465
        msg = MIMEText(content)
        msg['From'] = "lgl15984@163.com"
        msg['To'] = "992975991@qq.com"
        msg['Subject'] = "vng backup check"
     
        try:
            smtp = smtplib.SMTP_SSL(host, port)
            smtp.login(sender, 'xxxx')
            smtp.sendmail(sender, receiver, msg.as_string())
            get_log().info("send email success")
        except Exception, e:
            get_log().error(e)
    #	print e
    def task():
    #    get_data = get_data()
    #    get_backupdata= get_backupdata()
        while True:
        	data = get_data('ynvng')
        	backupdata= get_backupdata('ynvng')
    	
    	shijian = backup_time()
            get_log().info("monitor running")
            results = check()
    	
    	print results
    	get_log().info(results)
            if results == "备份成功":
                content = "越南备份成功"
            else:
                content = "越南备份失败"
    	print content,data,backupdata
            send_email(content + " 备份时间:" + shijian + "   应该备份个数: " + str(data) + "   备份个数:" +  str(backupdata))
            time.sleep(720*60)
    
    def run_monitor():
        monitor = threading.Thread(target=task)
        monitor.start()
     
     
    if __name__ == "__main__":
        run_monitor()

    九.运行效果

    程序运行效果图程序运行效果图



关键字