用python做一個系統監控程式

來源:互聯網
上載者:User

標籤:linux   windows   python   自動化營運   

#coding:utf8
from email.mime.text import MIMEText
import smtplib,psutil,time,os,datetime


destination = ["[email protected]"] #定義郵件接收者
source = "[email protected]" #定義郵件寄件者
mail_server = ‘smtp.qq.com‘
username = ‘775465751‘
password = ‘wrromyiywqijbdia‘


def send_mail(des,title,content):
    csj = MIMEText(content)
    csj[‘Subject‘] = title
    csj[‘From‘] = source
    csj[‘To‘] = ‘;‘.join(destination)
    try:
        a = smtplib.SMTP_SSL(mail_server,465)
        a.connect(mail_server)
        a.login(username,password)
        a.sendmail(source,destination,csj.as_string())
        a.close()
        return True
    except Exception,e:
        print e
        return False


def hostname():
    com = ‘hostname‘
    res = os.popen(com)
    content = res.read()
    return content


def mem_use():
    total_mem = psutil.virtual_memory().total
    free_mem = psutil.virtual_memory().available
    res = (psutil.virtual_memory().available/float(psutil.virtual_memory().total))*100
    return res


def system(a,b):
    cpu_info = []
    mem_info = []
    now_time = "Date %s"%datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d")
    count = 1
    print "Start monitoring "
    while True:
        time.sleep(60) #定義採集系統資訊的頻率,單位為秒
        if count <= 10: #定義每採集十次系統資訊後輸出平均值
            cpu_info.append(psutil.cpu_percent())
            mem_info.append(mem_use())
            count += 1
        else:
            cpu_info.pop(0)
            mem_info.pop(0)
            cpu_info.append(psutil.cpu_percent())
            mem_info.append(mem_use())
            cpu_avg = sum(cpu_info)/10
            mem_avg = sum(mem_info)/10
            if (cpu_avg >= a) or (mem_avg >= b):
                print("---------------------------------------------------------")
                print now_time
                warning_cpu = ("Warning CPU Used:%.2f%%")%cpu_avg
                warning_mem = ("Warning CPU Used:%.2f%%")%mem_avg
                print warning_cpu
                print warning_mem
                send_mail(destination,"Warning Server Overload",hostname()) #發送郵件,格式為:(目的,標題,本文)
            else:
                print now_time
                print("---------------------------------------------------------")
                print("Info,CPU Used:%.2f%%")%cpu_avg
                print("Info,Memory Used:%.2f%%")%mem_avg
system(0,0) #這兩個0代表設定cpu和記憶體的閾值,前者為CPU,後者為記憶體

本文出自 “工作家” 部落格,請務必保留此出處http://scorp.blog.51cto.com/11208059/1909174

用python做一個系統監控程式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.