Python基础——psutil安装及其用法、cpu信息获取、监控设计(服务器端、客户端)

1.安装psutil

  • psutil用于在python中检索有关正在运行的进程和系统利用率的信息
  • cmd下运行pip install psutil

Python基础——psutil安装及其用法、cpu信息获取、监控设计(服务器端、客户端)_第1张图片

2.获取CPU信息

  • 一个是物理数量。一个是逻辑数量,其中logical的值默认为True。

  • psutil获取系统CPU使用率的方法是cpu_percent(),其有两个参数,分别是interval和percpu;
  • interval指定的是计算cpu使用率的时间间隔,percpu则指定是选择总的使用率还是每个cpu的使用率;

Python基础——psutil安装及其用法、cpu信息获取、监控设计(服务器端、客户端)_第2张图片

  • 获取内存信息:使用psutil.virtual_memory() 获取系统内存的使用情况;
  • 使用 psutil.swap_memory()获取系统交换内存的统计信息;

Python基础——psutil安装及其用法、cpu信息获取、监控设计(服务器端、客户端)_第3张图片

  • 使用 psutil.disk_partitions() 获取磁盘分区的信息;
  • 使用psutil.disk_usage('/')获取磁盘的使用情况;
  • 使用psutil.disk_io_counters() 获取磁盘的IO统计信息(读写速度等);

Python基础——psutil安装及其用法、cpu信息获取、监控设计(服务器端、客户端)_第4张图片

获取网络信息:

  • 使用psutil.net_io_counters()获取总的网络IO信息
  • 使用 psutil.net_io_counters(pernic=True)获取网卡的IO信息

Python基础——psutil安装及其用法、cpu信息获取、监控设计(服务器端、客户端)_第5张图片

  • 使用 psutil.net_if_addrs() 获取网络接口信息

Python基础——psutil安装及其用法、cpu信息获取、监控设计(服务器端、客户端)_第6张图片

  • 使用psutil.net_if_stats()获取网络接口状态信息

Python基础——psutil安装及其用法、cpu信息获取、监控设计(服务器端、客户端)_第7张图片

  • 类似于linux的ps:psutil.test()

Python基础——psutil安装及其用法、cpu信息获取、监控设计(服务器端、客户端)_第8张图片

  • 查看系统全部进程:psutil.pids()

Python基础——psutil安装及其用法、cpu信息获取、监控设计(服务器端、客户端)_第9张图片

  • 查看单个进程

3.监控设计

#远程监控服务器

import socket

import time
import threading

s=socket.socket()
s.bind(("0.0.0.0",2345))
s.listen(8)

def tcplink(sock,addr):
    print(f"客户端{addr}已接入")
    print(f"{'time':16s}{'cpu':8s}{'mem':8s}{'host':8s}")
    while 1:
        data=sock.recv(2048)
        result=data.decode()
        print(result+"\t"+addr[0])
        with open("blacklist.txt") as f:
            blacklist=f.read()
        sock.send(blacklist.encode())
        time.sleep(1)
        
while 1:
    sock,addr=s.accept()
    t=threading.Thread(target=tcplink,args=(sock,addr))
    t.start()
#远程监控客户端

import psutil
import socket
import time
import sys

sip=sys.argv[1]
sport=int(sys.argv[2])
s=socket.socket()
while 1:
    try:
        s.connect((sip,sport))
        break
    except:
        time.sleep(10)
while 1:
    c=psutil.cpu_percent(interval=1)
    m=psutil.virtual_memory().percent
    d=psutil.disk_usage("/").percent
    t=time.strftime("%H:%M:%S")
    result=f"{t}\t{c}\t{m}\t{d}"
    s.send(result.encode())
    blacklist=s.recv(1024).decode()
    pids=psutil.pids()
    for pid in pids:
        try:
            p=psutil.Process(pid)
            if p.name() in blacklist:
                p.terminate()
        except:
            pass

执行结果如下:

Python基础——psutil安装及其用法、cpu信息获取、监控设计(服务器端、客户端)_第10张图片

在客户端没有启动时,服务器端并不会报错,隔断时间会重新连接一次。

然后执行客户端程序:

服务器端程序

……

Python基础——psutil安装及其用法、cpu信息获取、监控设计(服务器端、客户端)_第11张图片

你可能感兴趣的:(Python,Python监控设计,Python运维脚本,Python的psutil用法)