python脚本,实现监控系统的各项资源

shigen坚持日更的博客写手,擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。坚持记录和分享从业两年以来的技术积累和思考,不断沉淀和成长。

今天的文章涉及到docker的操作和一个python脚本,实现监控网络的流量、CPU使用率、内存使用率和磁盘使用情况。来和shigen一起先看看效果吧:

这是在控制台中出现的数据,可以很简单的看到我们想要的监控指标。如果实现定时任务和数据的存储、数据的展示,就是很好看的数据监控图表了。

我的代码主要是运行在一个centos的docker容器中。

是的,你没有看错,我还暴露了容器的22端口,供我在宿主机进行连接。

但是这不是重点,我拉取的centos其实是一个裸机,跟我们最开始买的服务器一样的。运行代码,肯定是需要安装python解释器的,这里shigen找到了珍藏许久的shell脚本,直接复制粘贴即可配置好python的环境。

这里我选取的python版本是:3.9.2。

go 复制代码
 wget https://registry.npmmirror.com/-/binary/python/3.9.2/Python-3.9.2.tgz
 tar -zxvf Python*
 yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel
 ./configure
 make && make install

验证python是否安装成功,只需要执行一下命令即可:

bash 复制代码
 which python3 && python3 --version

那其实还有很重要的一步:配置pip的镜像,不然网络会慢到你怀疑人生。

arduino 复制代码
 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

现在,我们的前置的准备工作全部的完成了。我们直接在vscode中编辑好代码:

python 复制代码
 # -*- encoding: utf-8 -*-
 __date__ = '2023/11/02 19:01:26'
 ​
 import psutil
 from rich.table import Table
 from rich.console import Console
 ​
 # 创建新表格
 table = Table(show_header=True, header_style="bold magenta", expand=True)
 table.add_column("指标", style="dim", width=12)
 table.add_column("数值", justify="right")
 ​
 # 获取系统信息
 cpu_percent = psutil.cpu_percent(interval=1)
 cpu_freq = psutil.cpu_freq()
 cpu_cores = psutil.cpu_count(logical=False)
 memory = psutil.virtual_memory()
 network_stats = psutil.net_io_counters()
 disk_stats = psutil.disk_partitions(all=True)
 ​
 # 添加 CPU 信息到表格
 table.add_row("CPU 使用率", f"{cpu_percent}%")
 if cpu_freq is not None:
     table.add_row("CPU 频率", f"{cpu_freq.current:.2f} MHz")
 else:
     table.add_row("CPU 频率", "N/A")
 table.add_row("CPU 核心数", f"{cpu_cores} 核")
 ​
 # 添加内存信息到表格
 table.add_row("总内存", f"{memory.total / (1024**3):.2f} GB")
 table.add_row("已用内存", f"{memory.used / (1024**3):.2f} GB")
 table.add_row("内存使用百分比", f"{memory.percent}%")
 ​
 # 添加网络信息到表格
 table.add_row("发送字节数", f"{network_stats.bytes_sent / (1024**2):.2f} MB")
 table.add_row("接收字节数", f"{network_stats.bytes_recv / (1024**2):.2f} MB")
 ​
 # 添加磁盘信息到表格
 for partition in disk_stats:
     disk_usage = psutil.disk_usage(partition.mountpoint)
     table.add_row(f"{partition.device} ({partition.mountpoint})", f"{disk_usage.percent}%")
 ​
 # 创建 console 对象并输出表格
 console = Console()
 console.print(table)

这里主要用到了两个库:psutilrich,借助psutil我们可以轻易的获得系统的各种指标,那rich主要是在控制台实现炫酷的效果。这里是时间关系,shigen写的比较简单。

那文件在我的主机上,centos的服务器在我的docker里边,文件到我的docker容器就需要docker cp派上用场了。在主机执行:

bash 复制代码
 docker cp xx.py dockerId:/shigen/python

我们安装一下需要的库:

复制代码
 pip3 install psutil rich

现在环境配置成功,我们就可以看到上边的表格指标数据了。其实还是主要的复习一下docker的使用,顺便写了一个脚本实现服务器资源的监控,算是一个日常的练手吧。


以上就是今天分享的全部内容了,觉得不错的话,记得点赞 在看 关注支持一下哈,您的鼓励和支持将是shigen坚持日更的动力。同时,shigen在多个平台都有文章的同步,也可以同步的浏览和订阅:

平台 备注 链接
CSDN 知名博客平台,很少关注 shigen的CSDN主页
知乎 专注内容分享和问题解答 shigen的知乎主页
掘金 高质量博客平台 shigen的掘金主页
腾讯云开发者社区 腾讯云开发者社区 shigen的腾讯云开发者社区主页
微信公众平台 个人微信公众号,分享技术和日常 公众号名:shigen

shigen一起,每天不一样!

相关推荐
Marktowin3 小时前
Mybatis-Plus更新操作时的一个坑
java·后端
赵文宇3 小时前
CNCF Dragonfly 毕业啦!基于P2P的镜像和文件分发系统快速入门,在线体验
后端
程序员爱钓鱼3 小时前
Node.js 编程实战:即时聊天应用 —— WebSocket 实现实时通信
前端·后端·node.js
Libby博仙4 小时前
Spring Boot 条件化注解深度解析
java·spring boot·后端
源代码•宸4 小时前
Golang原理剖析(Map 源码梳理)
经验分享·后端·算法·leetcode·golang·map
小周在成长4 小时前
动态SQL与MyBatis动态SQL最佳实践
后端
瓦尔登湖懒羊羊5 小时前
TCP的自我介绍
后端
小周在成长5 小时前
MyBatis 动态SQL学习
后端
子非鱼9215 小时前
SpringBoot快速上手
java·spring boot·后端