使用Python建立一個系統監控程式
psutil (程式和系統實用程式)是一個跨平臺的庫,用於檢索 Python 中有關正在執行的程式和系統利用率( CPU ,記憶體,磁碟,網路,感測器)的資訊。它主要用於系統監視,概要分析和限制程式資源以及管理正在執行的程式。
1 、安裝 psutil
pip3 install psutil # python2 使用者直接使用 pip install psutil
2 、建立 get_system_info.py 檔案,獲取系統狀態
1 import psutil as p
2
3
4 def memory(): # 獲取記憶體資訊
5 info = p.virtual_memory()
6 return info[2]
7
8
9 def disk(): # 獲取磁碟使用情況
10 info = p.disk_usage('/')
11 return info[-1], info[-2]
12
13
14 def cpu(): # 獲取 CPU 使用率
15 info = p.cpu_percent(1)
16 return info
# 在此只使用了博主所需的相關功能,詳細說明見
3 、建立郵件傳送 send_Email.py 檔案
1 import smtplib
2 from email.header import Header
3 from email.mime.text import MIMEText
4 from email.utils import formataddr
5
6
7 class send_Email():
8 def __init__(self, mail_host, mail_port, mail_user, mail_pass, sender):
9 self.mail_host = mail_host
10 self.mail_port = mail_port
11 self.mail_user = mail_user
12 self.mail_pass = mail_pass
13 self.sender = sender
14
15 def make_mail(self, title, code, receiver): # 生成郵件
16 mail_msg = """
17 <h1>%s</h1>
18 <p>%s</p>
19 """ % (title, code)
20 self.message = MIMEText(mail_msg, "html", "utf-8")
21 self.message['From'] = formataddr(["XX", self.sender])
22 self.message['To'] = formataddr(["User", receiver])
23 subject = title
24 self.message['Subject'] = Header(subject, "utf-8")
25
26 def send(self, receiver, title, code): # 傳送郵件
27 status = 0
28 self.make_mail(title, code, receiver)
29 try:
30 self.smtpObj = smtplib.SMTP_SSL(self.mail_host, self.mail_port)
31 # print(1)
32 self.smtpObj.login(self.mail_user, self.mail_pass)
33 # print(2)
34 self.smtpObj.sendmail(self.sender, [receiver], self.message.as_string())
35 self.smtpObj.quit()
36 status = 1
37 except smtplib.SMTPException as e:
38 print("Error ! 無法傳送郵件!!! " + e)
39 return status
4 、整合程式碼
from send_Email import send_Email
import get_system_info as gsi
email = send_Email("smtp.163.com", 465, "*******@***.com", "**********", "********@***.com") # 初始化
memory = gsi.memory()
disk, capacity = gsi.disk()
info = str(memory)+" "+str(disk)+" "+str(round(capacity/1024/1024/1024, 2))
email.send(code=info, title=" 系統狀態異常 ", receiver="*******@***.***")
status_d = 0
status_m = 0
while True: # 實時檢測系統狀態,會佔用一定的系統資源
memory = gsi.memory()
disk, capacity = gsi.disk()
if memory >= 80 and status_m == 0:
status_m = 1
data = " 當前記憶體佔用率為 "+str(memory)+"% ,建議清理或擴充記憶體! "
email.send(code=data, title=" 系統狀態異常 ", receiver="*******@***.***")
elif memory < 80:
status_m = 0
if disk >= 80 and status_d == 0:
status_d = 1
data = " 當前硬碟已使用 "+str(disk)+"% ,剩餘 "+str(round(capacity/1024/1024/1024, 2))+"GB ,請及時擴充! "
if disk >=貨幣符號https://www.gendan5.com/currencyworld.html
email.send(receiver="*******@***.***", title=" 系統狀態異常 ", code=data)
elif disk < 80:
status_d = 0
if memory >= 90 and status_m == 1:
status_m = 2
data = " 當前記憶體佔用率為 "+str(memory)+"% ,建議清理或擴充記憶體! "
email.send(code=data, title=" 系統狀態異常 ", receiver="*******@***.***")
elif memory < 90:
status_m = 1
if disk >= 90 and status_d == 1:
status_d = 2
data = " 當前硬碟已使用 "+str(disk)+"% ,剩餘 "+str(round(capacity/1024/1024/1024, 2))+"GB ,請及時擴充! "
email.send(receiver="*******@***.***", title=" 系統狀態異常 ", code=data)
elif disk < 90:
status_d = 1
程式仍有不足之處,請大佬多多指教。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2692814/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用Python建立一個系統監控程式--李渣渣(lizaza.cn)Python
- python搭建系統監控Python
- 實時監控系統,統一監控企業APIAPI
- 使用Sar實現系統監控
- 搭建一個前端監控系統,不再錯過BUG前端
- python使用wmi模組獲取windows下的系統資訊 監控系統PythonWindows
- 使用Python寫一個小小的專案監控Python
- 技術分享| 如何使用Prometheus實現系統程式監控Prometheus
- 使用 Shell 指令碼監控 Linux 系統程式資源指令碼Linux
- 如何使用 IFTTT 零成本建立網站內容監控系統?網站
- Mysql 監控系統MySql
- 監控系統元件元件
- DBA常用系統監控命令(之一)
- Oracle 系統監控建置一(共三)Oracle
- 一種對雲主機進行效能監控的監控系統及其監控方法
- 來!做一個分鐘級業務監控系統 【實戰】
- 監控系統使用情況shell指令碼指令碼
- Mac系統監控工具Mac
- 打造前端監控系統前端
- 手刃前端監控系統前端
- JavaWeb的監控系統JavaWeb
- Cacti 監控 AIX 系統AI
- 智慧工地監控系統
- 智慧影片監控系統
- mysql 的一個監控指令碼,監控heartbeatMySql指令碼
- Python監控日誌程式Python
- [譯] 使用 Pandas 在 Python 中建立一個簡單的推薦系統Python
- python自動統計zabbix系統監控覆蓋率Python
- TenSunS監控REDIS:使用一個redis_exporter監控所有的Redis例項RedisExport
- 分散式監控系統之Zabbix基礎使用分散式
- (轉)使用 Nmon 監控 Linux 的系統效能Linux
- Linux下使用NMON監控、分析系統效能Linux
- REDHAT環境下使用SYSSTAT監控系統效能Redhat
- 使用cloudflare的免費workers建立一個esp32cam監控的方案研究Cloud
- mysql mon 的一個監控指令碼,監控heartbeatMySql指令碼
- 智慧公交監控系統瞭解一下
- 系統監控&JVM監控指標資料查詢JVM指標
- 運維監控系統 PIGOSS BSM的監控策略運維Go