Python脚本——监控系统脚本

Python脚本——监控系统脚本,第1张

概述Python脚本——监控系统脚本监测系统的CPU、内存、硬盘、网卡和服务端口信息,并发送邮件信息Linux和Windows都可以使用使用psutil模块获取检测数据字典services:定义端口数据方法send_mail:定义了邮件信息#运行输出信息------------------------------服务状 Python脚本——监控系统脚本@H_301_5@监测系统的cpu、内存、硬盘、网卡和服务端口信息,并发送邮件信息linux和windows都可以使用使用psutil模块获取检测数据字典services:定义端口数据方法send_mail:定义了邮件信息
    # 运行输出信息    ------------------------------    服务状态:	Nginx:		Off!	PHP:		Off!	MysqL:		Off!	redis:		Off!	zabbix:		Off!    ------------------------------    cpu使用率:		23.00%    ------------------------------    内存使用率:	32.80%    内存总容量:	16227M    已使用内存:	5317M    ------------------------------    磁盘使用率:	54.30%    磁盘总容量:	376Gb    已使用磁盘:	204Gb    ------------------------------    网卡发送流量:	113Mb    网卡接收流量:	2184Mb    ------------------------------
import psutil  # 载入psutil模块import smtplib  # 载入smtplib模块from email.mime.text import MIMETextfrom email.header import header# 定义检查的服务名称和端口services = {    'Nginx': 80,    'PHP': 9000,    'MysqL': 3306,    'redis': 6379,    'zabbix': 10050,}# 获取cpu信息def cpu_info():  # 定义cpu使用率函数    cpu = '%.2f%%' % psutil.cpu_percent(1)  # 截取1秒内cpu的使用率。    return cpu    # %.2f表示输出浮点数并保留两位小数。%%表示直接输出一个%。# 获取内存信息def mem_info():  # 定义内存使用率    mem = psutil.virtual_memory()    mem_per = '%.2f%%' % mem[2]    mem_total = str(int(mem[0] / 1024 / 1024)) + 'M'    mem_used = str(int(mem[3] / 1024 / 1024)) + 'M'    info = {        'mem_per': mem_per,        'mem_total': mem_total,        'mem_used': mem_used    }  # 建立字典,方便后边调用值    return info# 获取硬盘信息def disk_info():    all_disk = psutil.disk_usage('/')    disk_per = '%.2f%%' % all_disk[3]    disk_total = str(int(all_disk[0] / 1024 / 1024 / 1024)) + 'Gb'    disk_used = str(int(all_disk[1] / 1024 / 1024 / 1024)) + 'Gb'    info = {        'disk_per': disk_per,        'disk_total': disk_total,        'disk_used': disk_used,    }    return info# 获取网卡信息def network_info():    network = psutil.net_io_counters()    network_sent = str(int(network[0] / 1024 / 1024)) + 'Mb'    network_resv = str(int(network[1] / 1024 / 1024)) + 'Mb'    info = {        'network_sent': network_sent,        'network_resv': network_resv    }    return info# 获取服务端口信息def port_check():    info = dict.fromkeys(services.keys(), 'Off!')    for i in services.items():        for j in psutil.net_connections():            if j.status == 'ListEN' and j.laddr.port == i[1]:                info[i[0]] = 'ok'    return info# 放送报警邮件def send_mail(message):  # 定义发邮件函数    a = ['[email protected]', ]  # 定义一个列表a为接收方    sender = '[email protected]'  # 发送方    for i in a:        receiver = i        subject = '报警'        username = '[email protected]'  # 发送方使用的账户名        password = 'xxxxxxxxxxxxx'  # 发送方的授权码密码        msg = MIMEText(message, 'plain', 'utf-8')        msg['Subject'] = header(subject, 'utf-8')        msg['From'] = sender        msg['To'] = receiver        smtp = smtplib.SMTP_SSL('smtp.qq.com')        smtp.ehlo('smtp.qq.com')  # 邮件服务器        smtp.login(username, password)        smtp.sendmail(sender, receiver, msg.as_string())    smtp.quit()    # 接收方只有一个用户时,网易、QQ都好使;接收方为多用户时,QQ好使def main():  # 主函数    cpu = cpu_info()    mem = mem_info()    disk = disk_info()    network = network_info()    port = port_check()    port_result = '    ------------------------------\n    服务状态:\n'    for each in port.items():        port_result += f'\t{each[0]}:\t\t{each[1]}\n'    info = port_result + f'''    ------------------------------    cpu使用率:\t\t{cpu}    ------------------------------    内存使用率:\t{mem.get('mem_per')}    内存总容量:\t{mem.get('mem_total')}    已使用内存:\t{mem.get('mem_used')}    ------------------------------    磁盘使用率:\t{disk.get('disk_per')}    磁盘总容量:\t{disk.get('disk_total')}    已使用磁盘:\t{disk.get('disk_used')}    ------------------------------    网卡发送流量:\t{network.get('network_sent')}    网卡接收流量:\t{network.get('network_resv')}    ------------------------------    '''    flag = 0    services_msg = ''    for i in port.items():        if not i[1]:            flag = 1            services_msg += i[0] + '报错\n'    if flag:        info = services_msg + '\n' + info        # 根据需求进行阈值设置        # send_mail(info)     elif int(cpu[:-4]) > 80:        info = 'cpu过载\n' + info        # 根据需求进行阈值设置        # send_mail(info)      elif int(mem.get('mem_per')[:-4]) > 80:        info = '内存过载\n' + info        # 根据需求进行阈值设置        # send_mail(info)      print(info)if __name__ == '__main__':    main()
总结

以上是内存溢出为你收集整理的Python脚本——监控系统脚本全部内容,希望文章能够帮你解决Python脚本——监控系统脚本所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/1189048.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存