python自动化运维之系统性能信息模块psutil

一 点睛

系统基础信息采集模块作为监控模块的重要组成部分,能够帮助运维人员了解当前系统的健康程度,同时也是衡量业务的服务质量的依 据,比如系统资源吃紧,会直接影响业务的服务质量及用户体验,另外获取设备的流量信息,也可以让运维人员更好地评估带宽、设备资源是否应该扩容。通过运用Python第三方系统基础模块,可以轻松获取服务关键运营指标数据,包括Linux基本性能、块设备、网卡接口、系统信息、网络地址库等信息。在采集到这些数据后,我们就可以全方位了解系统服务的状态,再结合告警机制,可以在第一时间响应,将异常出现在苗头时就得以处理。

psutil是一个跨平台库,能够轻松实现获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息。它主要应用于系统监控,分析和限制系统资源及进程的管理。它实现了同等命令行工具提供的功能,如ps、top、lsof、netstat、 ifconfig、who、df、kill、free、nice、ionice、iostat、iotop、uptime、 pidof、tty、taskset、pmap等。目前支持32位和64位的Linux、 Windows、OS X、FreeBSD和Sun Solaris等操作系统,支持2.4以上的Python版版本。通常我们获取操作系统信息往往采用编写shell来实现,如获取当前物理内存总大小及已使用大小,shell命令如下:

物理内存total值获取方法:

[root@centos ~]# free -m | grep Mem | awk '{print $2}'
1838

物理内存used值获取方法:

[root@centos ~]# free -m | grep Mem | awk '{print $3}'
220

相比较而言,使用psutil库实现则更加简单明了。psutil大小单位一 般都采用字节。

[root@localhost ~]# python
Python 2.7.5 (default, Aug  4 2017, 00:39:18)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import psutil
>>> mem = psutil.virtual_memory()
>>> mem.total,mem.used
(5015011328, 4745338880)

二 安装方法

[root@localhost ~]# pip install psutil

三 获取系统性能信息

1 点睛

采集系统的基本性能信息包括CPU、内存、磁盘、网络等,可以完整描述当前系统的运行状态及质量。psutil模块已经封装了这些方法,用户可以根据自身的应用场景,调用相应的方法来满足需求,非常简单实用。

2 CPU信息

  • Linux操作系统的CPU利用率有以下几个部分:

  • User Time:执行用户进程的时间百分比

  • System Time:执行内核进程和中断的时间百分比

  • Wait IO:由于IO等待而使CPU处于idle(空闲)状态的时间百分比

  • Idle:CPU处于idle状态的时间百分比。

我们使用Python的psutil.cpu_times()方法可以非常简单地得到这些信息,同时也可以获取CPU的硬件相关信息,比如CPU的物理个数与逻辑个数。

3 实战

>>> import psutil
>>> psutil.cpu_times()           #使用cpu_times方法获取CPU完整信息
scputimes(user=431.75, nice=0.0, system=54.94, idle=826.88, iowait=175.3, irq=0.0, softirq=18.23, steal=0.0, guest=0.0, guest_nice=0.0)
>>> psutil.cpu_times(percpu=True)     #需要显示所有逻辑CPU信息,指定方法变量percpu=True即可
[scputimes(user=215.55, nice=0.0, system=27.75, idle=454.92, iowait=88.43, irq=0.0, softirq=12.79, steal=0.0, guest=0.0, guest_nice=0.0), scputimes(user=226.97, nice=0.0, system=28.88, idle=451.16, iowait=93.97, irq=0.0, softirq=6.27, steal=0.0, guest=0.0, guest_nice=0.0)]
>>> psutil.cpu_times().user         #获取单项数据信息,如用户user的CPU时间比
452.08
>>> psutil.cpu_count()      #获取CPU的逻辑个数
2
>>> psutil.cpu_count(logical=False)           #获取CPU的物理个数
2

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值