怎么在Python中使用psutil监控服务器

  介绍

本篇文章为大家展示了怎么在Python中使用psutil监控服务器,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

服务器的监控通过安装一些常用的监控软件之外,有时也需要运行一些外壳或Python脚本;壳下可以使用系统自带的ps/自由/高级/df等壳命令,Python可以调用子流程等模块来运行shell命令,不过这么做就比较麻烦。这里有一个比较好用的第三方模块:psutil。

psutil是一个跨平台的库,用于在Python中检索有关运行进程和系统利用率(CPU、内存,磁盘,网络,传感器)的信息。它主要用于系统监视,分析,限制进程资源和运行进程的管理。它实现了UNIX命令行工具提供的许多功能,例如:ps,顶部,lsof, netstat, ifconfig,谁,df,杀了,免费的,不错,ionice, iostat, iotop,正常运行时间,pidof, tty, taskset, pmap. psutil目前支持以下平台:

<李> Linux

<李> Windows

<李>

OSX,

<李>

FreeBSD, OpenBSD, NetBSD

<李>

Sun Solaris

<李> AIX


等装有Python2.6至3.6的32位和64位架构。也可以在PyPy上运行。

安装

文中示例均在Python版本3.6环境下运行;

#, pip3  install  psutil

<强>常用模块

获取psutil版本信息

拷贝[1]:import  psutil   [2]:拷贝psutil.version_info   [2]:,(5,,4,,3

获取CPU信息

拷贝[3]:,psutil.cpu_count(), #,逻辑CPU核数   [3]:4   [4]:拷贝,psutil.cpu_count(逻辑=False), #,物理CPU核数   [4]:2   [5]:拷贝,psutil.cpu_times (), #, CPU的用户,系统,空闲时间   [5]:,scputimes(用户=240773.0,=0.0,,系统=96416.32,闲置=1161930.41)   [9]:拷贝,psutil.cpu_percent (percpu=True), #,获取每个CPU的使用率,类似前命令   [9]:,(43.3,22.0,42.0,23.0)   [10]:拷贝,top =, (psutil.cpu_percent(间隔=我,,percpu=True), for 小姐:拷贝范围(10)),#设置每秒刷新时间间隔,统计十次的结果   [11]:拷贝上   [11]:   [[40.8,19.7,38.5,20.7),   (25.7,5.9,13.0,5.0),   (35.0,15.6,30.0,14.4),   (23.7,7.0,18.3,7.4),   (38.5,17.0,34.2,17.5),   (37.2,19.6,36.3,20.0),   (29.6,16.6,28.8,16.8),   (37.7,19.0,35.4,18.7),   (30.8,16.3,26.9,16.5),   (44.2,27.9,41.5,28.6]]

获取内存信息

拷贝[13]:,psutil.virtual_memory(), #获取内存统计数据,单位字节,我这里8 g内存   [13]:,svmem(可用=总=8589934592,,1891045376,,%=78.0,=6053986304,使用,免费=15130624,活跃=1878392832,,活动=1875914752,,连接=2299678720)   [14]:拷贝,psutil.swap_memory(), #,获取互换的统计数据   [14]:,sswap(总=2147483648,,使用=1340866560,,自由=806617088,,=62.4,百分比,罪=126090076160,,多=3524710400)

获取磁盘信息

拷贝[17]:,psutil.disk_partitions(), #获取磁盘分区信息   出[17]:[sdiskpart(设备=& # 39;/dev/disk1 # 39;,,挂载点=& # 39;/& # 39;,,fstype=& # 39; hfs # 39;,,选择=& # 39;rw,地方、rootfs, dovolfs,日志,multilabel& # 39;))   [20]:拷贝,psutil.disk_usage(& # 39;/& # 39;), #,获取分区使用情况,这里使用了25.4%   [20]:,sdiskusage(总=499055067136,,使用=126482944000,,自由=372309979136,,%=25.4)   [22]:拷贝,psutil.disk_io_counters(), #磁盘IO情况   出[22]:sdiskio (read_count=7364142,, write_count=6510641,, read_bytes=282106464256,, write_bytes=261763244544,, read_time=2608778,, write_time=1095259)

获取网络信息

拷贝[23]:,psutil.net_if_stats(), #,获取网卡接口状态   [23]:   {& # 39;awdl0& # 39;:, snicstats (isup=True,双=& lt; NicDuplex.NIC_DUPLEX_UNKNOWN:, 0祝辞,,速度=0,,mtu=1484),   & # 39;bridge0& # 39;:, snicstats (isup=True,双=& lt; NicDuplex.NIC_DUPLEX_UNKNOWN:, 0祝辞,,速度=0,,mtu=1500),   & # 39;en0 # 39;:, snicstats (isup=True,双=& lt; NicDuplex.NIC_DUPLEX_UNKNOWN:, 0祝辞,,速度=0,,mtu=1500),   & # 39;en1 # 39;:, snicstats (isup=True,双=& lt; NicDuplex.NIC_DUPLEX_FULL:, 2比,,,速度=0,,mtu=1500),   & # 39;en2 # 39;:, snicstats (isup=True,双=& lt; NicDuplex.NIC_DUPLEX_FULL:, 2比,,,速度=0,,mtu=1500),   & # 39;gif0& # 39;:, snicstats (isup=False,双=& lt; NicDuplex.NIC_DUPLEX_UNKNOWN:, 0祝辞,,速度=0,,mtu=1280),   & # 39;lo0& # 39;:, snicstats (isup=True,双=& lt; NicDuplex.NIC_DUPLEX_UNKNOWN:, 0祝辞,,速度=0,,mtu=16384),   & # 39;p2p0& # 39;:, snicstats (isup=True,双=& lt; NicDuplex.NIC_DUPLEX_UNKNOWN:, 0祝辞,,速度=0,,mtu=2304),   & # 39;stf0& # 39;:, snicstats (isup=False,双=& lt; NicDuplex.NIC_DUPLEX_UNKNOWN:, 0祝辞,,速度=0,,mtu=1280),   & # 39;utun0& # 39;:, snicstats (isup=True,双=& lt; NicDuplex.NIC_DUPLEX_UNKNOWN:, 0祝辞,,速度=0,,mtu=2000),   & # 39;utun1& # 39;:, snicstats (isup=True,双=& lt; NicDuplex.NIC_DUPLEX_UNKNOWN:, 0祝辞,,速度=0,,mtu=1352)}   [25]:拷贝,psutil.net_if_stats () . get (“en0"), #获取单个网卡en0的状态   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

怎么在Python中使用psutil监控服务器