标签:python 监控 daemon sendemail thread
一.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()
九.运行效果
本文出自 “自动化rolin” 博客,请务必保留此出处http://luoguoling.blog.51cto.com/1568501/1616617
标签:python 监控 daemon sendemail thread
原文地址:http://luoguoling.blog.51cto.com/1568501/1616617