运维Python自动化之路:基础信息模块之psutil模块

运维Python自动化之路:基础信息模块之psutil模块一 前言 系统信息的收集 对于服务质量的把控 服务的监控等来说是非常重要的组成部分 甚至是核心的基础支持部分 我们可以通过大量的核心指标数据 结合对应的检测体系 快速的发现异常现象苗头 进行可控的措施

大家好,欢迎来到IT知识分享网。

一、前言:

系统信息的收集,对于服务质量的把控、服务的监控等来说是非常重要的组成部分,甚至是核心的基础支持部分。

我们可以通过大量的核心指标数据,结合对应的检测体系,快速的发现异常现象苗头,进行可控的措施。

二、 psutil模块简介:

psutil是一个跨平台库,主要获取两部分信息:

进程信息和系统利用率(包括cpu、内存、磁盘、网络等)信息。主要应用于系统监控,分享和限制系统资源及进程的管理。

它实现等同命令行攻击提供的功能,常见等同命令如下:

进程相关: ps 、top、lsof、kill、nice、pidof、taskset 网络相关: netstat、ifconfig 用户相关: who 磁盘相关: df 内存相关: free io相关: ionice、iostat、iotop 运行时相关: uptime 终端相关: tty

1.信息获取的具体方式:

命令操作 | grep 过滤关键字 | awk 筛选具体数据值 | 其他的数据处理

2.命令实践:获取网卡的ip地址

ifconfig方式:

运维Python自动化之路:基础信息模块之psutil模块

ip address方式:

运维Python自动化之路:基础信息模块之psutil模块

3.命令实践:获取所有网卡的ip地址

ifconfig方式:

运维Python自动化之路:基础信息模块之psutil模块

ip address 方式:

运维Python自动化之路:基础信息模块之psutil模块

4.命令实践:获取所有运行端口的信息–以TCP为例:

运维Python自动化之路:基础信息模块之psutil模块

5.psutil模块安装:

运维Python自动化之路:基础信息模块之psutil模块

6.模块使用:

在python解释器环境中

# 1.导包 import psutil #2.使用包功能 psutil.virtual_memory()
运维Python自动化之路:基础信息模块之psutil模块

ipython方式

安装:

yum  install ipython* -y pip3 install ipython
运维Python自动化之路:基础信息模块之psutil模块

三、cpu信息获取:

目标:

通过psutil获取cpu相关信息

基础信息:

  • User Time:执行用户进程的时间百分比
  • System Time:执行内核进程和中断的时间百分比
  • Wait IO :由于IO等待而使CPU处于idle(空闲)状态的时间百分比
  • Idel :cpu处于idel状态的时间百分比

我们使用psutil.cpu_time()方法可以非常简单的获取这些信息。

操作方法:

基本信息     cpu_times() 注意: 我们可以为该方法添加percup=True获取逻辑cpu信息 cpu核信息    cpu_count() 注意:   我们可以为该方法添加logical=True获取逻辑cpu信息

简单实践:

1.获取cpu的总体信息:

cpu_info = psutil.cpu_times() print("cpu基本信息:{}".format(cpu_info)) print("cpu基本信息格式:{}".format(type(cpu_info)))
运维Python自动化之路:基础信息模块之psutil模块

2.获取cpu的部分信息

cpu_info= psutil.cpu_times() cpu_user = cpu_info.user print("cpu的用户进程占比:{}".format(cpu_user)) cpu_system=cpu_info.system print("cpu的系统进程占比:{}".format(cpu_system)) cpu_iowait=cpu_info.iowait print("cpu的io等待占比:{}".format(cpu_iowait))
运维Python自动化之路:基础信息模块之psutil模块

3.获取cpu核基本信息

cpu_count = psutil.cpu_count() print("cpu的核信息:{}".format(cpu_count))
运维Python自动化之路:基础信息模块之psutil模块

4.获取cpu核逻辑信息

cpu_count = psutil.cpu_count(logical=True) print("cpu的核信息(包含逻辑):{}".format(cpu_count))
运维Python自动化之路:基础信息模块之psutil模块

5.获取所有用户的cpu信息

print(psutil.users())
运维Python自动化之路:基础信息模块之psutil模块

四、内存信息获取:

目标:

通过psutil获取内存相关信息数据

基本介绍:

运维Python自动化之路:基础信息模块之psutil模块

Linux系统的内存利用率信息涉及total(内存总数)、used(已使用的内存数)、free(空闲内存数)、buffers(缓冲使用数)、cache(缓存使用数)、swap(交换分区使用数)等

使用方法:

获取内存基本信息   psutil.virtual_memory() 获取交换内存基本信息   psutil.swap_memory()

简单实践:

1.获取全部内存信息

mem_info = psutil.virtual_memory() print("内存的基本信息:{}".format(mem_info))
运维Python自动化之路:基础信息模块之psutil模块

2.获取部分内存信息

mem_total = mem_info.total print("内存的总量:{}".format(mem_total)) mem_used = mem_info.used print("内存的总量:{}".format(mem_used)) mem_free = mem_info.free print("内存的总量:{}".format(mem_free)) mem_buffers = mem_info.buffers print("内存的总量:{}".format(mem_buffers))
运维Python自动化之路:基础信息模块之psutil模块

3.获取交换内存分区的详细信息

mem_swap = psutil.swap_memory() print("内存的交换信息:{}".format(mem_swap))
运维Python自动化之路:基础信息模块之psutil模块

4.获取交换内存分区的部分信息

swap_total = mem_swap.total print("交换内存总量:{}".format(swap_total))
运维Python自动化之路:基础信息模块之psutil模块

五、磁盘信息:

目标:

通过 psutil获取磁盘相关信息数据

基本信息:

运维Python自动化之路:基础信息模块之psutil模块

运维Python自动化之路:基础信息模块之psutil模块

在系统的所有磁盘信息中,我们更加关注磁盘的利用率及IO信息,其中磁盘利用率使用psutil.disk_usage方法获取。
基本使用:

磁盘的分区信息获取: disk_partitions 磁盘的挂载点信息获取 disk_usage('挂载点') 磁盘io相关操作信息 disk_io_counters()  可以通过perdisk = True 获取具体的分区详情

简单实践:

1.获取磁盘分区的详情信息

disk_info = psutil.disk_partitions() print("所有的分区详情:{}".format(disk_info))
运维Python自动化之路:基础信息模块之psutil模块

2.获取磁盘分区的挂载点基本信息

disk_root = psutil.disk_usage('/') print("根分区详情:{}".format(disk_root))
运维Python自动化之路:基础信息模块之psutil模块

3.获取磁盘分区的部分信息

root_total = disk_root.total print("根分区挂载容量详情:{}".format(root_total))
运维Python自动化之路:基础信息模块之psutil模块

4.获取io基本信息

disk_count = psutil.disk_io_counters() print("分区io信息:{}".format(disk_count))
运维Python自动化之路:基础信息模块之psutil模块

5.获取io部分信息

disk_writer_count = disk_count.write_count print("分区io写数量信息:{}".format(disk_writer_count))
运维Python自动化之路:基础信息模块之psutil模块

6.获取每个分区io的详情信息

disk_per = psutil.disk_io_counters(perdisk=True) print("每个分区的io信息:{}".format(disk_per))
运维Python自动化之路:基础信息模块之psutil模块

六、网络信息:

目标:

通过 psutil获取网络相关信息数据

基本信息:

运维Python自动化之路:基础信息模块之psutil模块

系统的网络信息与IO类似,涉及几个关键点,包括bytes_sent(发送字节数)、bytes_rev=(接收字节数)、packets_sent=(发送数据包数)、packets_recv=(介绍数据包数)等。

使用方式:

获取网络的数据传输信息 net_io_counters()

简单实践:

1.获取网络的详情信息

network_info = psutil.net_io_counters() print("网卡的数据传输信息:{}".format(network_info))
运维Python自动化之路:基础信息模块之psutil模块

2.获取部分信息

network_recv = network_info.bytes_recv print("网卡的接收数据信息: {}".format(network_recv)) network_sent = network_info.bytes_sent print("网卡的发送数据信息:{}".format(network_sent)) network_packet_sent = network_info.packets_sent print("网卡的发送数据包信息:{}".format(network_packet_sent))
运维Python自动化之路:基础信息模块之psutil模块

3.获取网络的其他信息

network_addrs = psutil.net_if_addrs() print("网卡的地址信息:{}".format(network_addrs)) network_stats = psutil.net_if_stats() print("网卡的状态信息:{}".format(network_stats)) network_conn = psutil.net_connections() print("网卡的连接信息:{}".format(network_conn))
运维Python自动化之路:基础信息模块之psutil模块

七、其他信息:

目标:

通过 psutil获取其他相关信息数据

基本语法:

获取连接的用户信息   users() 获取启动时间 boot_time()

1.获取所有连接的用户信息

user_info = psutil.users() print("连接的用户信息:{}".format(user_info))
运维Python自动化之路:基础信息模块之psutil模块

2.获取启动时间

import datetime date_time = psutil.boot_time() print("系统启动的时间信息:{}".format(date_time)) #转换时间格式(时间戳定位) date_time_format = datetime.datetime.fromtimestamp(date_time).strftime("%Y-%m-%d  %H:%M:%S") print("转化格式后的时间信息:{}".format(date_time_format)) 这类用的格式等同于命令: date  +%Y-%m-%d%H:%M:%S
运维Python自动化之路:基础信息模块之psutil模块

八、进程信息:

目标:

通过 psutil获取系统进程相关的信息数据

基本语法:

获取进程相关的信息     pids() 获取指定进程的相关信息     process() 获取进程信息的常见方法     name()/exe()/cwd(),status(),create_time(),     uids(),gids(),cpu_times(),cpu_affinity(),     memory_percent(),memory_info(),io_counters(),     connections*()

简单实践:

1.获取进程所有相关信息

process_id_list = psutil.pids() print("当前所有系统运行的进程号:{}".format(process_id_list))
运维Python自动化之路:基础信息模块之psutil模块

2.判断指定进程id是否存在

pid_num = 658 result = psutil.pid_exists(pid_num) print("{} 进程是否是运行状态:{}".format(pid_num,result))
运维Python自动化之路:基础信息模块之psutil模块

3.获取指定进程相关信息

pid_info = psutil.Process(pid_num) print("{} 进程是否是运行状态:{}".format(pid_num,pid_info))
运维Python自动化之路:基础信息模块之psutil模块

4.传统方式获取指定进程的属性信息

pid_info = psutil.Process(pid_num) print("{} 进程是否是运行状态:{}".format(pid_num,pid_info.name)) 注意:   进程的属性信息,需要借助于专用的方法来进行获取,通用的属性不管用
运维Python自动化之路:基础信息模块之psutil模块

5.进程详情信息获取

pid_info = psutil.Process(pid_num) print("{} 进程的名称是:{}".format(pid_num,pid_info.name())) pid_info = psutil.Process(pid_num) print("{} 进程的执行命令路径:{}".format(pid_num,pid_info.exe())) pid_info = psutil.Process(pid_num) print("{} 进程的工作目录:{}".format(pid_num,pid_info.cwd())) pid_info = psutil.Process(pid_num) print("{} 进程的状态是:{}".format(pid_num,pid_info.status()))
运维Python自动化之路:基础信息模块之psutil模块

九、popen类:

目标:

通过 psutil获取用户启动的应用进程相关的信息数据

基本语法:

基本语法:   psutil.Popen('执行命令','参数','内容'],stdout=信息接收器) 属性解析: exec模式:['执行命令','参数','内容'] shell模式:执行命令  参数  内容

简单实践:

#导包   import psutil   from subprocess import PIPE #指定用户执行程序 #1.1创建用户程序 my_process = psutil.Popen(['/usr/bin/python3','-c','print("hello world")'], stdout = PIPE) #1.2 用户程序的信息获取 print("用户进程的名称:{}".format(my_process.name())) print("用户进程的启动用户:{}".format(my_process.username())) print("用户进程的输出信息:{}".format(my_process.communicate())) 
运维Python自动化之路:基础信息模块之psutil模块

运维Python自动化之路:基础信息模块之psutil模块

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/161485.html

(0)
上一篇 2024-12-09 09:00
下一篇 2024-12-09 09:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信