文章目录

  • 系统性能信息模块psutil
  • 获取系统性能信息
  • 系统进程管理方法
  • 项目实战: Linux服务器主机监控脚本


系统性能信息模块psutil

  • psutil(python system and process utilities), 是系统监控及进程管理且
    跨平台的系统管理库,实现命令行中类似ps、top、lsof、netstat、ifconfig、who、df、kill、free、nice、ionice、iostat、iotop等等命令的功能。
  • psutil官方文档: https://pythonhosted.org/psutil/
  • psutil支持的操作系统有: Linux系统、Windows系统、Mac系统。

获取系统性能信息

python spf计算 python计算psi的函数_系统性能

系统进程管理方法

  • 获取当前系统的进程信息,可以让运维人员得知应用程序的运行状态,包括进程的启动时间、查看或设置CPU使用率、内存使用率、IO信息、Socket连接、线程数等,这些信息可以呈现出指定进程是否存活,资源利用情况,为开发人员的代码优化、问题定位提供很好的数据参考。
  • pids方法
  • Process类
  • python spf计算 python计算psi的函数_python_02

  • 安装模块
    pip3 install psutil -i https://pypi.douban.com/simple
    pip3 install prettytable -i https://pypi.douban.com/simple
import psutil
import prettytable
##绘制出表格
##物理CPU个数
#逻辑CPU=物理CPU个数*核数
print("物理CPU个数:",psutil.cpu_count(logical=False))
print("逻辑CPU个数:",psutil.cpu_count())
##CPU使用率
print("CPU的使用率:",psutil.cpu_percent())
print("-------------------内存信息------------------")
memory = psutil.virtual_memory()
print("总内存大小:",memory.total)
print("已使用的内存大小:",memory.used)
print("内存使用率:",memory.percent)
print("-------------------磁盘信息------------------")
pt = prettytable.PrettyTable(field_names=["分区名称","挂载点",
                                          "文件系统类型","属性",
                                          "磁盘总容量","磁盘使用百分比(单位%)"])
parts =psutil.disk_partitions()
for part in parts:
    #查看当前磁盘分区的使用率
    usage = psutil.disk_usage(part.device)
    #往表格中添加一行记录
    pt.add_row([part.device,part.mountpoint,part.fstype,part.opts,usage.total,usage.percent])
print(pt)
import  time
print("---------------------其他信息---------------------")
print("当前登录的所用用户信息:",psutil.users())
print("开机时间:",psutil.boot_time())
##time.ctime:将时间戳转换为字符串实际的时间
print("开机时间:",time.ctime(psutil.boot_time()))

python spf计算 python计算psi的函数_系统性能_03

项目实战: Linux服务器主机监控脚本

  1. 基于psutil模块实现系统信息监控,监控详情如下表。
  • 先以简单的实现一下(windows下)
#os模块,operate system,跟操作系统相关的方法,多是文件操作
import os
import platform
from datetime import datetime
import time
import psutil
try:
    #os.uname在windows系统中不能执行
    system_info =os.uname()
except Exception as e:
    system_info = platform.uname()
##开机时间以及当前时间
boot_time=psutil.boot_time()
boot_time=datetime.fromtimestamp(boot_time)
now_time=datetime.fromtimestamp(time.time())

print("""
*******************主机信息监控***********************
主机名:%s
操作系统:%s
内核名称:%s
发行版本号:%s
内核版本:%s
系统架构:%s
当前时间:%s
开机时间:%s
开机时长:%s

"""%(system_info.node,system_info.system,system_info.system,system_info.release,
     system_info.version,system_info.machine,now_time,boot_time,now_time-boot_time))

python spf计算 python计算psi的函数_python_04

  • linux环境下代码略有不同
# os模块, operate system, 跟操作系统相关的方法, 多是文件操作等
import os
import  platform
from datetime import  datetime
import  time
try:
    # 如果是Linux系统,执行下面内容
    # os.uname在windows系统中不能执行
    system_info = os.uname()
    node = system_info.nodename
    system = system_info.sysname
except Exception as e:
    # 如果是Windows系统,执行下面内容
    system_info = platform.uname()
    node = system_info.node
    system = system_info.system

import psutil
boot_time = psutil.boot_time()
boot_time =  datetime.fromtimestamp(boot_time)
now_time =  datetime.fromtimestamp(time.time())

print("""
***********************************主机信息监控********************************
        主机名: %s
        操作系统: %s
        内核名称: %s
        发行版本号: %s
        内核版本: %s
        系统架构: %s
        当前时间: %s
        开机时间: %s
        开机时长: %s
""" %(node, system, system,
      system_info.release, system_info.version, system_info.machine,
      now_time, boot_time, now_time-boot_time
      ))

python spf计算 python计算psi的函数_服务器_05

  • 可以在windows下的pycharm运行,监控到linux中的情况:
  • 远程SSH调用服务器python解释器(具体步骤请点击下面链接)
    远程SSH调用服务器