监控脚本:Python3 CPU 内存 磁盘 端口监控脚本

1. 背景介绍

在服务器运维和应用开发过程中,我们经常需要对服务器的资源进行监控,以及对资源使用情况进行分析和优化。其中,CPU、内存、磁盘和端口是最常见的资源。本文将介绍如何使用Python3编写一个简单的监控脚本,用于监控这些资源的使用情况。

2. 脚本功能概览

本脚本可以实时监控服务器的CPU利用率、内存使用情况、磁盘空间以及端口的连接情况,并将这些信息输出到屏幕上。该脚本还可以将这些信息保存到日志文件中,方便后续分析和追踪问题。

3. 脚本实现

3.1 安装依赖库

在编写脚本之前,我们需要先安装一些Python依赖库,用于获取服务器资源的使用情况。可以通过以下命令来安装这些依赖库:

pip install psutil
pip install psutil[process]

3.2 引入依赖库

在Python脚本中,我们需要引入psutil库来获取CPU、内存和磁盘信息。同时,我们还需要引入socket库来获取端口连接情况。可以在脚本开头添加以下代码:

import psutil
import socket

3.3 获取CPU利用率

使用psutil库可以方便地获取CPU的使用情况。可以通过以下代码获取CPU利用率:

cpu_percent = psutil.cpu_percent(interval=1)
print("CPU利用率:{}%".format(cpu_percent))

3.4 获取内存使用情况

使用psutil库可以方便地获取内存的使用情况。可以通过以下代码获取内存使用情况:

memory = psutil.virtual_memory()
print("内存使用情况:总共 {}M,已使用 {}M,剩余 {}M".format(
    memory.total / 1024 / 1024,
    memory.used / 1024 / 1024,
    memory.available / 1024 / 1024
))

3.5 获取磁盘空间

使用psutil库可以方便地获取磁盘空间的使用情况。可以通过以下代码获取磁盘空间使用情况:

disk_usage = psutil.disk_usage('/')
print("磁盘空间使用情况:总共 {}G,已使用 {}G,剩余 {}G".format(
    disk_usage.total / 1024 / 1024 / 1024,
    disk_usage.used / 1024 / 1024 / 1024,
    disk_usage.free / 1024 / 1024 / 1024
))

3.6 获取端口连接情况

使用socket库可以方便地获取端口的连接情况。可以通过以下代码获取端口连接情况:

def check_port(port):
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    result = sock.connect_ex(('localhost', port))
    sock.close()
    return result == 0

port_list = [80, 443, 3306, 6379]
for port in port_list:
    if check_port(port):
        print("端口{}连接正常".format(port))
    else:
        print("端口{}连接异常".format(port))

4. 流程图

下面是该脚本的流程图:

flowchart TD
    A[开始] --> B[安装依赖库]
    B --> C[引入依赖库]
    C --> D[获取CPU利用率]
    D --> E[获取内存使用情况]
    E --> F[获取磁盘空间]
    F --> G[获取端口连接情况]
    G --> H[输出监控信息]
    H --> I[保存日志文件]
    I --> J[结束]

5. 序列图

下面是使用该脚本获取资源使用情况的序列图:

sequenceDiagram