html做网站步骤大全,网站建商城,wordpress 主题名称修改,网页视频下载器破解版1.系统信息的收集 系统信息的收集#xff0c;对于服务质量的把控#xff0c;服务的监控等来说是非常重要的组成部分#xff0c;甚至是核心的基础支撑部分。我们可以通过大量的核心指标数据#xff0c;结合对应的检测体系#xff0c;快速的发现异常现象的苗头#xff0c;进…1.系统信息的收集 系统信息的收集对于服务质量的把控服务的监控等来说是非常重要的组成部分甚至是核心的基础支撑部分。我们可以通过大量的核心指标数据结合对应的检测体系快速的发现异常现象的苗头进行可控的措施。 我们的运维就像是医生如果我们在诊断之前对病人的信息以及症状都不了解的话如何对症下药。 基础信息之psutil模块
要在Linux中下载和安装psutil库可以按照以下步骤进行操作
打开终端。使用以下命令安装pip如果已经安装了pip请跳过此步骤 对于Debian/Ubuntu系统sudo apt-get install python3-pip对于CentOS/RHEL系统sudo yum install python3-pip使用以下命令安装psutil库 对于Python 2.xsudo pip install psutil对于Python 3.xsudo pip3 install psutil
现在您已经成功在Linux中安装了psutil库。您可以在Python脚本中导入它并开始使用它。例如
psutil是一个跨平台库我们主要去用它来获取两部分信息 进程信息 系统利用率 - cpu、内存、磁盘、网络等。
它实现了提供同等命令行的一些相关功能比如ps、top、lsof、netstat、ifconfig、who、df、kill、free、nice、ionice、iostat、iotop、uptime、pidof、tty、taskset、pmap 感兴趣的可以去百度一下这些命令的具体作用以及原理学到就是赚到
通常我们获取操作系统信息往往采用编写shell来实现如获取当前物理内存总大小以及使用大小、shell命令如下
物理内存total值 free -m | grep Mem | awk {print $2}
物理内存used值free -m | grep Mem | awk {print $3}
这样长长的一段shell 往往我们编写起来会很麻烦 容易出错 同时也不容易记忆
相较而言使用psutil库实现则更加简单明了
安装完成之后我们就可以在python文件中使用啦 当然也可以在终端中去使用 psutil模块已经封装了这些方法根据需要调用就可以 1 CPU信息
User Time执行用户进程时间的百分比
System Time执行内核进程和中断的时间百分比
WaitIO由于IO等待而使CPU处于idle空闲状态的时间百分比
idleCPU处于idle状态的时间百分比
import psutil
psutil.cpu_times() # 使用cpu_time方法获取cpu完整信息,需要现实所有逻辑CPU信息
# 指定方法变量 percpuTrue即可如psutil.cpu_times(percpuTrue)
print(psutil.cpu_times())
psutil.cpu_times().user
print(psutil.cpu_times().user)
psutil.cpu_count() # 获取CPU的逻辑个数默认logicalTrue4
print(psutil.cpu_count())
psutil.cpu_count(logicalFalse) # 获取CPU的物理个数
print(psutil.cpu_count(logicalFalse) ) 我们使用Python的psutil.cpu_times()方法可以非常简单的得到这些信息同时也可以获取CPU的硬件相关的信息比如CPU的物理个数与逻辑个数 2内存信息
linux系统的内存利用率信息涉及total(内存总数)、used(已使用的内存数)、free(空闲的内存数)、buffers(缓冲使用数)、cache(缓存使用数)、swap(交换分区使用数)分别使用psutil.virtual_memory()与psutil.swap_memory()方法获取这些信息
import psutil
mem psutil.virtual_memory() # 使用psutil.virtual_memory方法获取内存完整信息
print(mem)mem.total # 获取内存总数
print(mem.total)
mem.free # 获取空闲内存数
print(mem.free)psutil.swap_memory() # 获取swap分区信息
print(psutil.swap_memory()) 3磁盘信息
在系统的所有磁盘信息中磁盘刘勇率使用psutil.disk_usage方法获取。磁盘io信息包括read_count(读io数)、write_count(写io数)、read_bytes(io读字节数)、warite_bytesIO写字节数、read_time磁盘读时间、write_time(磁盘写时间)。这些io信息可以使用psutil.disk_io_counters获取
import psutil
psutil.disk_partitions() # 使用psutil.disk_partitions方法获取磁盘完整信息
print(psutil.disk_partitions())psutil.disk_usage(/) # 使用psutil.disk_usage方法获取分区参数的使用情况
print(psutil.disk_usage(/)) 4网络信息
系统的网络信息和磁盘IO信息类似涉及到几个关键点包括bytes_sent发送字节数、bytes_recv接受字节数、packets_sent200987发送数据包数、packets_recv接受数据包数等。这些信息都可以使用psutil.net_io_counters()获取
import psutil
psutil.net_io_counters() # 使用psutil.net_io_counters()获取网络总的IO信息默认pernic False
print(psutil.net_io_counters())psutil.net_io_counters(pernic True) # 输出每个网络接口的IO信息
print(psutil.net_io_counters(pernic True)) 5其他系统信息
除了上面介绍的几个获取系统基本信息的方法psutil模块还支持获取用户登录开机时间等信息
import psutil,datetime
psutil.users() # 使用psutil.users方法返回当前登录系统的用户信息
print(psutil.users())
psutil.boot_time() # 获取开机时间以linux时间戳格式返回
print(psutil.boot_time())
# 使用psutil.boot_time方式获取开机时间以Linux时间戳格式返回
datetime.datetime.fromtimestamp(psutil.boot_time()).strftime(%Y-%m-%d%H:%M:%S)
print(datetime.datetime.fromtimestamp(psutil.boot_time()).strftime(%Y-%m-%d%H:%M:%S)) 2.系统进程管理方法
1进程信息
获得当前系统的进程信息可以让运维人员得知应用程序的运行状态包括进程的启动时间、查看或者设置CPU亲和度、内存使用率、IO信息、socket链接、线程数等、这些信息可以呈现出指定进程是否存活、资源利用情况、问题定位提供很好的数据参考
import psutil
psutil.pids() # 列出所有进程
p psutil.Process(2424) # 实例化一个Process对象参考为一进程PID
p.name(java) # 进程名
p.exe(/usr/bin/java) # 进程bin路径
p.cwd(/usr/local/hadoop-1) # 进程工作目录绝对路径
p.status(sleeping) # 进程状态
p.create_time()
p.uids() # 进程信息
p.gids() # 进程gid信息
p.cpu_times() # 进程CPU时间信息包括user、system两个cpu时间
p.cpu_affinity() # get进程CPU亲和度如要设置进程CPU亲和度将CPU号作为参数即可
p.memory_percent() # 进程内存利用率
p.memory_info() # 进程内存rss、vms信息
p.io_counters() # 进程io信息包括读写io数及字节数
p.connections() # 返回打开进程socket的namedutples列表,包括fs、family、ladder等信息
p.num_threads() # 进程开启的线程数
(2)popen类的使用
psutil提供的popen类的作用是获取用户启动的应用程序的进程信息以便跟踪进程的运行状态
import psutil
from subprocess import PIPE
# 通过psutil的Popen方法启动应用程序可以根据该程序运行的所有相关信息
p psutil.Popen([/usr/bin/python,-c,print(hello)],stdout PIPE)
p.name()
p.username()
p.communicate()
p.cpu_times() # 得到进程运行的CPU时间