1. 程式人生 > >python監控檔案,並且傳送告警郵件

python監控檔案,並且傳送告警郵件

一、配置檔案

import time,datetime

TODAY = time.time()
TIME_PATH = str(TODAY.year) + "/" + str(TODAY.month) + "/" + str(datetime.datetime.now().date())

MONITOR_CONFIG = {
    "monitor_file":[
        {"key":"py_distribute-datacollect","path":"/home/vagrant/py_distribute/data/" + TIME_PATH + "_error.txt","max_size":100},
    ],
    "send_account":"
[email protected]
", "license_code":"feruwfpsiwkuibge", # 授權碼 "rec_account":["[email protected]"], "host":"smtp.qq.com", "port":465, "sleep_time":60, }

二、監控
#-*- encoding: utf8 -*-
# 騰訊郵箱授權碼
# feruwfpsiwkuibge

import smtplib
import logging
import time
import os
from email.mime.text import MIMEText
from monitor_config import MONITOR_CONFIG

FORMAT = '[%(asctime)-15s] %(message)s'
logging.basicConfig(filename = "monitor.txt", level = logging.DEBUG, filemode = "a", format=FORMAT)

def get_file_size(file_name):
    if os.path.exists(file_name):
        bytes_size = float(os.path.getsize(file_name))
        kb = bytes_size/1024
        mb = kb/1024
        return mb
    return 0

def send_email(file_name,key):
    msg = MIMEText(file_name+"檔案超過限制,可能存在異常,請處理。專案為:"+key)
    msg = [key]
    msg["From"]= MONITOR_CONFIG["send_account"]
    msg["To"] = MONITOR_CONFIG["rec_account"]
    try:
        s = smtplib.SMTP_SSL(MONITOR_CONFIG["host"],MONITOR_CONFIG["port"])
        s.login(MONITOR_CONFIG["send_account"],MONITOR_CONFIG["license_code"])
        s.sendmail(MONITOR_CONFIG["send_account"],MONITOR_CONFIG["rec_account"],msg.as_string())
        s.quit()
        logging.info(file_name + "警告發送成功")
    except Exception as e:
        logging.exception(e)

# check
while True:
    for file in MONITOR_CONFIG["monitor_file"]:
        file_size = get_file_size(file["path"])
        if file_size > file["max_size"]:
            send_email(file["path"],file["key"])
    logging.info("檢查完畢")
    time.sleep(MONITOR_CONFIG["sleep_time"])

三、需在QQ郵箱設定開啟POP3/SMTP服務


四、參考
http://www.cnblogs.com/leetao94/p/5460520.html