python3 系统监控脚本(CPU,memory,网络,disk等)
#!/usr/bin/env python3 #create at 2018-11-30 'this is a system monitor scripts' __author__="yjt"import os import time import sys import datetime import socket #用于获取主机名 import psutil #用于获取CPU等信息(该模块属于第三方模块,需要安装;或者安装anaconda3,anaconda3默认已经安装好改模块) import re#以下是变量值,自己定义 CPUT = 2 #计算CPU利用率的时间间隔 NETT = 2 #计算网卡流量的时间间隔 LOOPT = 2 #脚本循环时间间隔#获取系统基本信息 def baseinfo():hostname = socket.gethostname()start_time = datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S")now_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())) # sys_runtime = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time() - psutil.boot_time()))sys_runtime = os.popen('w').readline().split('users')[0].split('up')[1].strip()[:-1].strip()[:-1]print("\033[31mbase_info:\033[0m")print("hostname: %-10s"%(hostname))print("start_time: %-15s"%(start_time))print("now_time: %-15s"%(now_time))print("sys_runtime: %-10s"%(sys_runtime)) def userconninfo():print("\033[31muser_conn_info:\033[0m")user_conn = len(psutil.users())print("user_conn_num:%s"%(user_conn))print("conn_user%-10s conn_terminal%-10s remmote_ip%-10s start_time%-15s pid%-15s"%('','','','',''))for info in range(user_conn):user = psutil.users()[info].nameterminal = psutil.users()[info].terminalhost = psutil.users()[info].hoststart_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(psutil.users()[0].started))pid = psutil.users()[info].pid#print("conn_user:%-10s conn_terminal:%-10s from_host:%-15s start_time:%-20s pid:%-10d"%(user,terminal,host,start_time,pid))print("%-19s %-23s %-20s %-25s %-15d"%(user,terminal,host,start_time,pid)) #获取CPU信息 def cpuinfo():ave_load = os.popen('uptime').readline().split(":")[-1].split()ave_load = ' '.join(ave_load) #CPU平均负载#以下四项值都是获取的瞬时值user_use = psutil.cpu_times().user #用户态使用CPU时间sys_use = psutil.cpu_times().system #系统态使用CPU时间idle = psutil.cpu_times().idle #CPU空闲时间iowait = psutil.cpu_times().iowait #IO等待时间total_cpu = 0for i in range(len(psutil.cpu_times())):total_cpu += psutil.cpu_times()[i] cpu_pre = psutil.cpu_percent(CPUT)logical_cpu = psutil.cpu_count()pyhsical_cpu = psutil.cpu_count(logical=False)print("\033[31mcpu_info:\033[0m")print("cpu_ave_load: %-20s" %ave_load)print("cpu_user_use: %-.2f%%" %(user_use / total_cpu * 100))print("cpu_sys_use: %-.2f%%" %(sys_use / total_cpu * 100))print("cpu_idle: %-.2f%%" %(idle / total_cpu * 100 ))print("cpu_iowait: %-.2f%%" %(iowait / total_cpu * 100 ))print("cpu_ave_use: %-.2f%%" %cpu_pre)print("logica_cpu: %-4d"%logical_cpu) #获取逻辑CPU个数print("pyhsical_cpu: %-4d"%pyhsical_cpu)#获取物理CPU个数 #获取内存信息 def meminfo():total_mem = psutil.virtual_memory().totaluse_mem = psutil.virtual_memory().usedmem_percent = psutil.virtual_memory().percentfree_mem = psutil.virtual_memory().freeswap_mem = psutil.swap_memory().totalswap_use = psutil.swap_memory().usedswap_free = psutil.swap_memory().freeswap_percent = psutil.swap_memory().percentprint("\033[31mmem_info:\033[0m")print("total_mem: %d M"%(total_mem / 1024 /1024))print("use_mem: %d M"%(use_mem / 1024 /1024))print("free_mem: %d M"%(free_mem / 1024 /1024))print("mem_percent: %s%%"%(mem_percent))print("swap_mem: %d M"%(swap_mem / 1024 /1024))print("swap_use: %d M"%(swap_use / 1024 /1024))print("swap_free: %d M"%(swap_free / 1024 /1024))print("swap_percent: %s%%"%(swap_percent)) #获取磁盘信息 def diskinfo():print("\033[31mdisk_info:\033[0m")print("disk%-10s total%-10s free%-10s used%-10s percent%-10s"%('','(G)','(G)','(G)','(%)'))disk_len = len(psutil.disk_partitions())for info in range(disk_len):disk = psutil.disk_partitions()[info][1]if len(disk) < 10:total = str(round(psutil.disk_usage(disk).total /1024/1024/1024)) + 'G'free = str(round(psutil.disk_usage(disk).free /1024/1024/1024)) + 'G'used = str(round(psutil.disk_usage(disk).used /1024/1024/1024)) + 'G'percent = str(psutil.disk_usage(disk).percent) + '%'print('%-15s'%(disk),end='')#print(' %-10s total: %-10s free: %-10s used:%-10s percent:%-s'%('',total,free,used,percent))print('%-13s %-13s %-13s %-s'%(total,free,used,percent)) #获取网卡信息 def netinfo():print('\033[31mnet_info\033[0m')net_item = list(psutil.net_if_addrs())for net in net_item:if re.search(r'bond.*|em.*|eno.*|^eth.*',net):network_card = netip = psutil.net_if_addrs()[net][0].addressrecv_1,recv_2,send_1,send_2=0,0,0,0with open ('/proc/net/dev','r') as f:net_info = f.readlines()net_list = str(net_info).lower().split()if net_list[0] == net:recv_1 = float(net_list[1])send_1 = float(net_list[9])time.sleep(NETT)with open ('/proc/net/dev','r') as f:net_info = f.readlines()net_list = str(net_info).lower().split()if net_list[0] == net:recv_2 = float(net_list[1])send_2 = float(net_list[9])print("network_card%-10s ip%-20s received%-10s transmit%-10s "%('','','(kb/s)','(kb/s)'))#print("network_card: %-10s ip: %-20s received: %-.3f Kb/s transmit: %-.3f kb/s" % (network_card,ip,(recv_2/1024 - recv_1/1024),(send_2/1024 - send_1/1024)))print("%-21s %-22s %-.3f%13s %-.3f " % (network_card,ip,(recv_2/1024 - recv_1/1024),'',(send_2/1024 - send_1/1024))) #获取TCP连接数 def tcpinfo():print('\033[31mtcp_info\033[0m')status_list = ["LISTEN","ESTABLISHED","TIME_WAIT","CLOSE_WAIT","LAST_ACK","SYN_SENT"]status_init = []net_conn = psutil.net_connections()for key in net_conn:status_init.append(key.status)for value in status_list:print(value,status_init.count(value))if __name__ == '__main__':while True:try:os.system('clear')baseinfo()print("********************************************************")userconninfo()print("########################################################")cpuinfo()print("========================================================")meminfo()print("########################################################")diskinfo()print("********************************************************")netinfo()print("++++++++++++++++++++++++++++++++++++++++++++++++++++++++")tcpinfo()time.sleep(LOOPT)except KeyboardInterrupt as e:print ('')print("Bye-Bye")sys.exit(0)
或者:
#!/usr/bin/env python3 #create at 2018-11-29 'this is a system monitor scripts' __author__="yjt"import os import time import sys import datetime import socket #用于获取主机名 import psutil #用于获取CPU信息 def sysinfo():hostname = socket.gethostname()sys_runtime = os.popen('w').readline().split('users')[0].split('up')[1].strip()[:-1].strip()[:-1]start_time = datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S")now_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))user_conn = os.popen('w').readline().split('users')[0].split('up')[1].strip()[-1]print("\033[31msysinfo:\033[0m")print("Hostname: {0}".format(hostname))print("Sys_runtime: {0}".format(sys_runtime))print("start_Time: {0}".format(start_time))print("now_Time: {0}".format(now_time))print("User_Conn: {0}".format(user_conn)) def cpuinfo():""" get cpuinfo from '/proc/stat' """with open('/proc/stat','r') as f:#f = open('/proc/stat','r')cpu = f.readline()#f.close()cpu = cpu.split(' ')total_1 = 0for info in cpu:if info.isdigit():total_1 += float(info)cpu_1 = float(cpu[5]) #空闲态占用CPU时间#以下三种状态计算瞬时值cpu_2 = float(cpu[2]) #用户态占用CPU时间cpu_3 = float(cpu[4]) #系统态占用CPU时间cpu_4 = float(cpu[6]) #IO等待时间time.sleep(2)total_2 = 0with open('/proc/stat','r') as f:cpu = f.readline()cpu = cpu.split(' ')total_2 = 0for info in cpu:if info.isdigit():total_2 += float(info)cpu_5 = float(cpu[5])cpu_idle = cpu_5 - cpu_1total_time = total_2 - total_1cpu_use = 1 - cpu_idle / total_timeave_load = os.popen('uptime').readline().split(":")[-1].split() ave_load = ' '.join(ave_load) #CPU平均负载logical_cpu = psutil.cpu_count()pyhsical_cpu = psutil.cpu_count(logical=False)print("\033[31mcpuinfo: \033[0m")print("cpu_ave_load: %s" %ave_load)print("cpu_user_use: %.2f%%" %(cpu_2/total_1 * 100))print("cpu_sys_use: %.2f%%" %(cpu_3/total_1 * 100))print("cpu_io_wait: %.2f%%" %(cpu_4/total_1 * 100))print("cpu_ave_use: %.2f%%" %cpu_use)print("logica_cpu: %d"%logical_cpu) #获取逻辑CPU个数print("pyhsical_cpu: %d"%pyhsical_cpu)#获取物理CPU个数def meminfo():with open('/proc/meminfo','r') as f:mem = f.readlines()total,free,buffers,cached,swap_total,swap_free = 0,0,0,0,0,0for info in mem:mem_item = info.lower().split()if mem_item[0] == 'memtotal:':total = float(mem_item[1])if mem_item[0] == 'memfree:':free = float(mem_item[1])if mem_item[0] == 'buffers:':buffers = float(mem_item[1])if mem_item[0] == 'cached:':cached = float(mem_item[1])if mem_item[0] == 'swaptotal:':swap_total = float(mem_item[1])if mem_item[0] == 'swapfree:':swap_free = float(mem_item[1])user_use = total - buffers - cacheduser_use_swap = swap_total - swap_freeuser_usemem_rate = user_use / total * 100user_useswap_rate = user_use_swap / swap_total * 100print("\033[31mmeminfo:\033[0m")print("total_mem: %d M"%(total / 1024))print("free_mem: %d M"%(free / 1024))print("user_use_rate: %.2f%%"%user_usemem_rate)print("swap_total: %d M"%(swap_total / 1024))print("swap_free: %d M"%(swap_free / 1024))print("user_useswap_rate: %.2f%%"%user_useswap_rate)def diskinfo(): # passdisk = os.popen('df -h').readlines()for info in disk:disk_item = info.split()if disk_item[-1] == '/':disk_root = disk_item[-1]disk_root_total = disk_item[1]disk_root_use = disk_item[2]disk_root_rate = disk_item[4]if disk_item[-1] == '/home':disk_home = disk_item[-1]disk_home_total = disk_item[1]disk_home_use = disk_item[2]disk_home_rate = disk_item[4]if disk_item[-1] == '/boot':disk_boot = disk_item[-1]disk_boot_total = disk_item[1]disk_boot_use = disk_item[2]disk_boot_rate = disk_item[4]if disk_item[-1] == '/data':disk_data = disk_item[-1]disk_data_total = disk_item[1]disk_data_use = disk_item[2]disk_data_rate = disk_item[4]#disk_io = psutil.disk_io_counters(perdisk=True)print("\033[31mdiskinfo:\033[0m")print("root: %-10s root_total: %-5s root_use: %-5s root_use_pre: %-5s"%(disk_root,disk_root_total,disk_root_use,disk_root_rate))print("home: %-10s home_total: %-5s home_use: %-5s home_use_pre: %-5s"%(disk_home,disk_home_total,disk_home_use,disk_home_rate))print("boot: %-10s boot_total: %-5s boot_use: %-5s boot_use_pre: %-5s"%(disk_boot,disk_boot_total,disk_boot_use,disk_boot_rate))print("data: %-10s data_total: %-5s data_use: %-5s data_use_pre: %-5s"%(disk_data,disk_data_total,disk_data_use,disk_data_rate)) def netinfo():passif __name__ == '__main__':while True:try:os.system('clear')sysinfo()print("********************************************************")cpuinfo()print("========================================================")meminfo()print("########################################################")diskinfo()time.sleep(5)except KeyboardInterrupt as e:print ('')print("Bye-Bye")sys.exit(0)
转载于:https://www.cnblogs.com/yjt1993/p/10045858.html
python3 系统监控脚本(CPU,memory,网络,disk等)相关推荐
- 利用Python实现系统监控脚本
利用Python实现系统监控脚本 简介 该 Python 脚本,用于监控计算机或网络的性能和状态.该脚本可用于跟踪各种指标,例如 CPU 使用率.内存使用率.磁盘空间.网络流量和系统正常运行时间.该脚 ...
- 无法读取源文件或磁盘_系统监控之磁盘和网络监控工具
一:硬盘基础知识: 1.1:硬盘IOPS理论: IOPS (Input/Output Per Second) 是衡量磁盘性能的重要指标,IOPS指的是每秒磁盘可以处理的请求数据和返回数据的次数,一次请 ...
- linux系统中的基础监控(硬盘,内存,系统负载,CPU,网络等)
Linux系统常见日常监控 系统信息 查看 CentOS 版本号:cat /etc/redhat-release 综合监控 nmon 系统负载 命令:w(判断整体瓶颈) 12:04:52 up 16 ...
- linux 系统监控脚本
Linux下性能预警及应急处理 自己编写一个脚本程序,该程序在工作时段(8:00-22:00),每隔一个小时执行一次:在其他时段每隔两小时执行一次. 每次执行都要完成如下任务: 1.检测进程CPU占用 ...
- linux 监控进程撤销,linux 系统监控脚本
Linux下性能预警及应急处理 自己编写一个脚本程序,该程序在工作时段(8:00-22:00),每隔一个小时执行一次:在其他时段每隔两小时执行一次. 每次执行都要完成如下任务: 1.检测进程CPU占用 ...
- linux io读写次数 oid,Linux系统监控的CPU、Mem、IO的OID
一.负载OID OID:1.3.6.1.4.1.2021 名称 OID 1 minute Load: 10.1.3.1 5 minute Load: ...
- 老李分享:shell 监控cpu,memory,load average 1
老李分享:shell 监控cpu,memory,load average poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课 ...
- linux 服务器硬件报警,Linux服务器硬件运行状态及故障邮件提醒的监控脚本分享...
监控硬件运行状况 shell 监控cpu,memory,load average,记录到log,当负载压力时,发电邮通知管理员. 原理: 1.获取cpu,memory,load average的数值 ...
- linux系统CPU,内存,磁盘,网络流量监控脚本
前序 1, #cat /proc/stat/ 信息包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累积到当前时刻 2, #vmstat –s 或者 #vmstat 虚拟内存统 ...
最新文章
- Windows 7 的系统优化方案
- 竞拍AI教父Hinton
- python 文本模式读写文件时 不应使用 os.linesep 简介
- Python列表变字典
- Python数据分析学习笔记之Pandas入门
- 1026 程序运行时间 (15 分)(c语言)
- 【译】索引进阶(十一):SQL SERVER中的索引碎片【上篇】
- 在struts2中push方法的使用_【干货】网版印刷中水墨使用注意事项及助剂使用方法...
- 如何用百度MIP快速搭建体验友好的移动页面
- Copy Clone
- thttpd服务器修改时间后导致CPU占用率过高
- Vue中使用echarts图表插件
- oracle和mysql数据实时同步_Canal 实现 Mysql数据库实时数据同步
- mysql存储引擎分类
- java 坦克大战设计论文,java坦克大战毕业设计论文
- Win10相机打不开提示:我们找不到你的相机 错误代码0xa00f4244!
- cpi 计算机体系结构 转移指令,高等计算机体系结构基本概念总结
- 【贪心法】黑白连线问题
- Spring Cloud Gateway — 网关基本功能API暴露
- 不会编程却想做APP ? 让Power Apps 来帮你
热门文章
- android中xml文件的生成与读取(Pull)
- 北京冬奥一项AI黑科技即将走进大众:实时动捕三维姿态,误差不到5毫米
- 只需1秒,无人机就能平地翻跟头 | IEEE
- 英伟达“神笔马良”GauGAN发布Windows应用程序,可导出PSD文件
- Jupyter Notebook已出现“返祖现象”,这款工具让你在终端里使用它
- 明尼苏达大学研究团队道歉,Linux内核维护人员:拒绝
- iPhone12要来了,苹果第一款5G手机,哪些值得期待?
- 高通5G旗舰升级!骁龙855Plus发布,主打游戏和AI;网友:牙膏厂
- 企业级java springboot b2bc商城系统开源源码二次开发-(四)断路器(Hystrix)
- 物联网技术周报第 145 期: ESP8266 和 IFTTT 自制 WiFi 智能秤