百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

一文讲清怎么用Python实现Linux系统CPU、内存和磁盘监控管理工具

gudong366 2025-06-13 06:59 6 浏览

摘要:在日常的服务器运维和管理工作当中,监控系统资源的使用情况是非常重要的一项任务。特别是在Linux服务器环境中,如果我们能及时了解CPU、内存和硬盘的使用状态,就能更快发现系统的性能瓶颈,提前预防可能出现的问题,从而保障业务稳定、持续地运行。很多人可能会觉得,想要实现这样的监控,必须依赖专业的监控软件才行。其实不然,用Python同样可以轻松开发出一个实用的Linux系统资源监控工具。

Python凭借简洁的语法、丰富的库和强大的数据处理能力,成为Linux系统管理的理想工具。通过Python,我们可以轻松实现对CPU使用率、内存占用、磁盘空间等系统资源的监控与分析。

本文主要讲解如何用Python实现Linux系统CPU、内存和磁盘资源的监控管理,帮助读者掌握实用技能,提升系统运维效率。详细内容请查阅下文。

一、访问Linux系统

1.登录Linux系统

2.查看Python环境

二、Linux系统监控管理工具

说明:这里是一个用 Python 编写的Linux系统的CPU、内存和磁盘等资源管理工具。

1.基本需求

说明:这里要实现的监控工具,主要有以下功能:

(1)实时获取CPU、内存、磁盘的使用情况;

(2)可以定时采集数据,并保存历史记录;

(3)当资源使用率超过阈值时,自动告警(如邮件、日志等);

(4)有简单的命令行或Web界面,方便查看和管理。

2.Python核心库

说明:本例主要用到以下Python库,以实现上述基本需求。

(1)psutil:获取系统资源信息的利器,跨平台,功能强大。

(2)time:用于定时采集。

(3)flask:实现Web界面(可选)。

(4)matplotlib/pandas:数据可视化和历史数据分析(可选)。

3.Linux监控管理工具的实现步骤

步骤一:获取系统资源信息

(1)获取CPU使用率

import psutil

# 获取CPU总使用率(百分比)

cpu_percent = psutil.cpu_percent(interval=1)

print(f"CPU使用率:{cpu_percent}%")

# 获取每个CPU核心的使用率

cpu_per_core = psutil.cpu_percent(interval=1, percpu=True)

print(f"每个核心使用率:{cpu_per_core}")

(2)获取内存使用情况

mem = psutil.virtual_memory()

print(f"内存总量:{mem.total / 1024 / 1024:.2f} MB")

print(f"已用内存:{mem.used / 1024 / 1024:.2f} MB")

print(f"剩余内存:{mem.available / 1024 / 1024:.2f} MB")

print(f"内存使用率:{mem.percent}%")

(3)获取磁盘使用情况

disk = psutil.disk_usage('/')

print(f"磁盘总量:{disk.total / 1024 / 1024 / 1024:.2f} GB")

print(f"已用磁盘:{disk.used / 1024 / 1024 / 1024:.2f} GB")

print(f"剩余磁盘:{disk.free / 1024 / 1024 / 1024:.2f} GB")

print(f"磁盘使用率:{disk.percent}%")

(4)获取磁盘IO和网络IO

# 获取磁盘IO

disk_io = psutil.disk_io_counters()

print(f"读字节数:{disk_io.read_bytes}, 写字节数:{disk_io.write_bytes}")

# 获取网络IO

net_io = psutil.net_io_counters()

print(f"发送字节数:{net_io.bytes_sent}, 接收字节数:{net_io.bytes_recv}")

步骤二:定时采集与历史记录

说明:这里主要是用一个循环,每隔一段时间采集一次数据,并保存到本地文件(如CSV)中。

import time

import csv

def collect_and_save(interval=60, filename="sys_monitor.csv"):

with open(filename, "a", newline='') as f:

writer = csv.writer(f)

# 写表头(只写一次)

if f.tell() == 0:

writer.writerow(["时间", "CPU使用率", "内存使用率", "磁盘使用率"])

while True:

now = time.strftime("%Y-%m-%d %H:%M:%S")

cpu = psutil.cpu_percent(interval=1)

mem = psutil.virtual_memory().percent

disk = psutil.disk_usage('/').percent

writer.writerow([now, cpu, mem, disk])

f.flush()

print(f"{now} | CPU: {cpu}% | 内存: {mem}% | 磁盘: {disk}%")

time.sleep(interval - 1) # 减去cpu_percent的1秒

# 下方取消注释即可运行

# collect_and_save()

步骤三:自动告警功能

说明:当某项资源使用率超过阈值时,可以自动发送邮件或写入日志,本实例主要使用的是集成到监控循环日志。

def monitor_with_alert(cpu_th=90, mem_th=90, disk_th=90):

while True:

cpu = psutil.cpu_percent(interval=1)

mem = psutil.virtual_memory().percent

disk = psutil.disk_usage('/').percent

alert_msgs = []

if cpu > cpu_th:

alert_msgs.append(f"CPU使用率过高:{cpu}%")

if mem > mem_th:

alert_msgs.append(f"内存使用率过高:{mem}%")

if disk > disk_th:

alert_msgs.append(f"磁盘使用率过高:{disk}%")

if alert_msgs:

print(f"CPU: {cpu}% | 内存: {mem}% | 磁盘: {disk}%")

time.sleep(60)

步骤四:Web管理界面展示

说明:这里可以用Flask做一个简单的Web页面。

from flask import Flask, render_template_string

import psutil

app = Flask(__name__)

@app.route('/')

def index():

cpu = psutil.cpu_percent(interval=1)

mem = psutil.virtual_memory().percent

disk = psutil.disk_usage('/').percent

html = f"""

<h2>Linux系统资源监控</h2>

<p>CPU使用率:{cpu}%</p>

<p>内存使用率:{mem}%</p>

<p>磁盘使用率:{disk}%</p>

"""

return html

if __name__ == '__main__':

app.run(host='0.0.0.0', port=5000)

三、完整实例:Linux系统资源监控管理工具

说明:这里将编写一个Linux系统资源监控管理程序,实现数据的可视化与历史分析,实现仪表盘展示功能,支持历史查询。

1.编写程序

说明:使用Linux系统的vim编写Python程序,提前创建程序的存放目录./sys_monitor_app。

执行指令# vim system_monitor.py编写程序

2.运行程序

说明:使用Python3运行程序,提前进入程序的存放目录./sys_monitor_app。

执行指令# python3 system_monitor.py运行程序

3.使用程序

说明:在客户端通过浏览器访问Linux系统资源管理工具,如下图

输入账号密码登录,如下图

可以选定时间段查询历史数据,如下

还可以下载全部历史数据,如下

4.程序功能说明

(1)登录认证页面

访问 http://服务器IP:5000/ 时,首先会跳转到登录页面;输入正确的用户名和密码(如 admin/admin123)才能进入监控仪表盘。

(2)资源监控仪表盘

  • 页面布局美观

页面整体采用卡片式和分区布局,适配PC和移动端。右上角有“退出登录”按钮,点击可安全退出账号。

  • 实时资源概览

页面顶部以卡片形式展示当前CPU、内存、磁盘使用率,数据每次刷新页面时实时获取。

  • 资源趋势可视化

左侧折线图:展示最近一段时间的CPU、内存、磁盘使用率变化趋势。

右侧饼图:展示当前CPU、内存、磁盘的占比。

  • IO分区分行展示

磁盘IO分区:单独一行展示磁盘读速率、写速率,并有磁盘IO速率趋势折线图。

网络IO分区:单独一行展示网络发送速率、接收速率,并有网络IO速率趋势折线图。

  • 历史数据查询与下载

支持通过时间区间筛选历史数据(起始时间、结束时间)。

历史数据以表格形式展示,包含所有监控指标。

支持一键下载全部历史监控数据(CSV格式)。

(3)数据采集与存储

后台线程每隔10秒自动采集一次系统资源数据(CPU、内存、磁盘、磁盘IO、网络IO),并自动追加保存到./data/sys_monitor.csv文件中。历史数据可长期保存,也可下载到本地磁盘,便于后续分析。

相关推荐

由浅入深学shell,70页shell脚本编程入门,满满干货建议收藏

不会Linux的程序员不是好程序员,不会shell编程就不能说自己会Linux。shell作为Unix第一个脚本语言,结合了延展性和高效的优点,保持独有的编程特色,并不断地优化,使得它能与其他脚本语言...

小白7天掌握Shell编程:脚本的创建和执行

一、课前声明1、本分享仅做学习交流,请自觉遵守法律法规!2、搜索:Kali与编程,学习更多网络攻防干货!二、知识点详解Shell脚本的格式要求:脚本要以!#/bin/bash开头,其中bash可以替换...

飞牛fnNAS搭建Web版Linux系统(飞牛网改版升级说明)

飞牛NAS本身就是Linux内核(Debian发行版),那为何还要安装一个Linux呢?因为飞牛的Linux是特殊版本,并不能运行PC端的带UI的程序,比如我需要登录微信,需要使用wps打字……,这是...

如何在 Linux 中使用 Sysctl 命令?

sysctl是一个用于配置和查询Linux内核参数的命令行工具。它通过与/proc/sys虚拟文件系统交互,允许用户在运行时动态修改内核参数。这些参数控制着系统的各种行为,包括网络设置、文件...

Apple尝试使用轻量级Linux虚拟机实现容器化

Apple于本周一发布了一个开源的容器化框架,用于在Mac上创建和运行Linux容器镜像。软件容器将应用程序及其依赖项组合成一个单元,在主机上运行于隔离环境中。由于它们基于符合OCI标准...

Docker 安全与权限控制:别让你的容器变成“漏洞盒子”

在享受容器带来的轻量与灵活的同时,我们也必须面对一个现实问题:安全隐患。容器并不是天然安全,错误配置甚至可能让攻击者“越狱”入侵主机!本篇将带你从多个层面强化Docker的安全防护,构建真正可放心...

网络安全必备!Linux firewalld 防火墙原理 + 配置实战(放行http)

5.1了解firewall防火墙基础概念与原理5.1.1Linux防火墙概述在网络安全领域,防火墙是保障网络安全的关键屏障,Linux系统中的firewall防火墙(firewalld服...

从零开始搭建 Linux PXE 无盘启动服务器

在企业环境或实验室中,PXE(PrebootExecutionEnvironment,无盘启动)被广泛用于大规模批量部署操作系统。通过PXE,无需U盘或CD,就能远程启动和安装Linux...

[250417] Fedora 42 正式发布,搭载 Linux 6.14 内核和 GNOME 48 桌面环境

Fedora42正式发布FedoraLinux42现已正式发布!此版本基于最新的Linux内核6.14构建,带来了众多激动人心的新特性和改进,旨在提供更现代化、更强大、更易用的Li...

Linux Kernel学习003——内核源码

Linux学习笔记:老版本内核的坑,新工具救场,代码门道藏着啥秘密.最近想学Linux内核,网上查资料发现现在的稳定版本都已经到5.x了,但我跟着教程选的是2.6.34。官网下载链接卡着老卡,后来用清...

Linux:实现Hadoop集群Master无密码登录

以下所介绍的安装方式都是在线安装方式,如果你需要连网请参考:Linux:宿主机通过桥接方式连接的VMware内部Linux14.04虚拟机(静态IP)实现上网方案环境:OS:LinuxUbuntu1...

除了Win10,微软还发布了一套“专业版Linux”系统

IT之家讯9月21消息,不知道大家是否还记得,微软CEO纳德拉曾在去年的一次活动中公开宣称“微软爱Linux”,其实那个时候的微软就已经在服务器方面拥抱Linux了。而最近,除了最新Windows1...

Linux系统匿名上网小技巧(linux匿名文件)

Tails可以做什么+优点Tails所有数据连接通过Tor网络传输,可以为个人用户提供最好的匿名性和安全性,并且它是一个Linux系统,不会感染Windows系统的病毒,它可以存储在闪存盘上运行。-...

Linux环境中DeepSeek AI大模型使用与管理之七:安装Cherry Studio

简介:在Linux系统中成功通过Ollama部署DeepSeek-R1大模型后,用户通常需要一个直观且易于操作的客户端来访问和交互。为了满足这一需求,本文将详细介绍如何在Linux环境中安装和配置Ch...

Linux系统部署Go编程环境(一)使用Go语言编写简单web服务器

摘要:Go语言是一个开源的编程语言,Go语言被称为“互联网时代的C语言”。Go语言的风格类似于C语言。其语法在C语言的基础上进行了大幅的简化,去掉了不需要的表达式括号,循环也只有for一种表示...