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()

拓展

参考文档:https://www.cnblogs.com/liu-yao/p/5678157.html