Python系统信息监控报警
来自CloudWiki
应用:使用函数模块对系统信息进行报警
import psutil import json def cpu_info(): cpu = psutil.cpu_percent(1) return cpu def mem_info(): mem = psutil.virtual_memory() info = {'mem_total':ch(mem[0]),'mem_free':ch(mem[1]),'mem_percent':ch(mem[2]),\ 'mem_used':ch(mem[3])} return info def disk_info(): disk = psutil.disk_usage(r'c:') info = {'total':ch(disk[0]),'used':ch(disk[1]),'free':ch(disk[2]), 'percent':ch(disk[3])} return info def ch(m): m =m/1024 #转化为KB m =m/1024 #转化为MB m =m/1024 #转化为GB m = round(m,2) return m def main(): m_cpu = cpu_info() print("cpu利用率:",m_cpu) m_mem = mem_info() print("内存利用率",m_mem) print("内存利用率",json.dumps(m_mem)) m_disk = disk_info() print("硬盘利用率",m_disk) if m_cpu >50: #---》设置报警值,下同 print('cpu情况:报警') #---》给分函数mail的形参传参 else: print('cpu情况:正常') if m_mem['mem_percent'] > 50: print('内存情况:警告,内存占用过半!') else: print('内存情况:一切正常') if m_disk['percent'] > 50: print('磁盘情况:磁盘超负荷!') else: print('磁盘情况:一切正常') if __name__ =='__main__': main()
应用:使用函数模块持续对系统信息进行报警
import psutil #导入psutil模块 import json def cpu_info(): #----》函数名尽可能切合内容 cpu = psutil.cpu_percent(1) return cpu #----》返回cpu,可以被调用,此return的结果就是调用的结果 def mem_info(): mem = psutil.virtual_memory() #---》通过ps模块输出内存情况 info1={'mem_total':mem[0],'mem_free':mem[1],'mem_percent':mem[2],'mem_used':mem[3]} #--》将内存情况放入一个字典,方便调用 return info1 def disk_info(): disk = psutil.disk_usage(r'c:') #---》(r'c:')为查看盘的固定写法 info2 = {'total': disk[0], 'used': disk[1], 'free': disk[2], 'percent': disk[3]} # ---》同样写入一个字典 return info2 def main(): #----->定义一个主函数 m_cpu = cpu_info() print(m_cpu) m_mem = mem_info() print(m_mem) print(json.dumps(m_mem)) m_disk = disk_info() #--->将各个分函数的调用结果当作函数体输入 print(m_disk) if m_cpu >50: #---》设置报警值,下同 print('cpu正常') #---》给分函数mail的形参传参 else: print('cpu正常') if m_mem['mem_percent'] > 50: print('悠着点,内存占用过半了') else: print('relax') if m_disk['percent'] > 50: print('悠着点,磁盘快炸了') else: print('放轻松,没事哦') if __name__=='__main__': #--》主函数调用固定格式 main()
应用:使用邮件模块对系统信息进行报警(未验证)
安装yagmail模块:
pip install yagmail
#连接邮箱服务器 import yagmail #请先下载yagmail包,再导入 import psutil #导入psutil模块 import json def mail(subject,contents): #---》形参为邮件的标题和内容 yag = yagmail.SMTP(user='z1065132644@163.com', password='yn369369', host='smtp.163.com') #passwd为授权的密码不是登陆密码 #发送邮件 yag.send(to='z1065132644@163.com',subject=subject, contents=contents) # ————》定义变量subject和contents #断开连接 yag.close() import psutil def cpu_info(): #----》函数名尽可能切合内容 cpu = psutil.cpu_percent(1) return cpu #----》返回cpu,可以被调用,此return的结果就是调用的结果 res=cpu_info() #----》给调用结果赋值。可以省略,下同 def mem_info(): mem = psutil.virtual_memory() #---》通过ps模块输出内存情况 info1={'mem_total':mem[0],'mem_free':mem[1],'mem_percent':mem[2],'mem_used':mem[3]} #--》将内存情况放入一个字典,方便调用 return info1 res2=mem_info() def disk_info(): disk = psutil.disk_usage(r'c:') #---》(r'c:')为查看盘的固定写法 info2 = {'total': disk[0], 'used': disk[1], 'free': disk[2], 'percent': disk[3]} # ---》同样写入一个字典 return info2 res3=disk_info() def main(): #----->定义一个主函数 m_cpu = cpu_info() print(m_cpu) m_mem = mem_info() print(m_mem) print(json.dumps(m_mem)) m_disk = disk_info() #--->将各个分函数的调用结果当作函数体输入 print(m_disk) if m_cpu >50: #---》设置报警值,下同 mail('cpu报警',msg) #---》给分函数mail的形参传参 else: print('cpu正常') if m_mem['mem_percent'] > 50: print('悠着点,内存占用过半了') else: print('relax') if m_disk['percent'] > 50: print('悠着点,磁盘快炸了') else: print('放轻松,没事哦') if __name__=='__main__': #--》主函数调用固定格式 main()