商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > CentOS Python资源如何监控

CentOS Python资源如何监控

  发布于2026-07-01 阅读(0)

扫一扫,手机访问

在CentOS环境下,Python应用的资源监控是个老生常谈却又绕不开的话题。无论是排查性能瓶颈,还是保障服务稳定性,手里有几套趁手的监控方案总没错。下面整理了几种从轻量到企业级的监控手段,覆盖了系统资源、进程管理、可视化面板和性能分析,大家可以根据实际场景按需选用。

1. 使用psutil库监控系统资源

psutil是Python生态里最经典的跨平台资源库,CPU、内存、磁盘、网络,一个库全搞定。在CentOS上用它监控Python进程和周边系统资源,基本是开箱即用。

来看一个实际例子:

CentOS Python资源如何监控

import psutil

# 获取CPU使用率(间隔1秒)
cpu_percent = psutil.cpu_percent(interval=1)
print(f"CPU使用率: {cpu_percent}%")

# 获取内存信息(总内存、已用、可用、使用率)
memory = psutil.virtual_memory()
print(f"总内存: {memory.total / (1024**3):.2f}GB, 已用: {memory.used / (1024**3):.2f}GB, 使用率: {memory.percent}%")

# 获取磁盘使用情况(根分区)
disk = psutil.disk_usage('/')
print(f"磁盘总空间: {disk.total / (1024**3):.2f}GB, 已用: {disk.used / (1024**3):.2f}GB, 使用率: {disk.percent}%")

# 获取网络IO(发送/接收字节数)
net_io = psutil.net_io_counters()
print(f"发送字节数: {net_io.bytes_sent / (1024**2):.2f}MB, 接收字节数: {net_io.bytes_recv / (1024**2):.2f}MB")

循环调用这几个函数,就能实现定时监控。如果配合matplotlib库,还能把资源变化趋势画成折线图,直观程度直接拉满。

2. 构建Web监控面板(Flask+psutil)

光有命令行输出不够过瘾?用Flask搭一个简单的Web面板,实时数据直接展示在浏览器上。步骤也不复杂:

  • 安装依赖:pip install flask psutil
  • 创建Flask应用(app.py):
from flask import Flask, jsonify, render_template
import psutil

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')  # 创建templates/index.html展示数据

@app.route('/api/resource')
def resource():
    cpu = psutil.cpu_percent(interval=1)
    memory = psutil.virtual_memory().percent
    return jsonify({"cpu": cpu, "memory": memory})

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)
  • 创建HTML模板(templates/index.html):



CPU使用率: -%

内存使用率: -%

运行python app.py后,访问http://服务器IP:5000,CPU和内存使用率就会每秒自动刷新。对于轻量级场景,这个方案够用了。

3. 利用Supervisor管理Python进程

脚本跑着跑着挂了怎么办?Supervisor就是干这个的——保证Python脚本持续运行,崩了自动重启,还能管理日志。配置起来也很清晰:

  • 安装Supervisor:sudo yum install -y supervisor
  • 创建配置文件(/etc/supervisor/conf.d/python_script.conf):
[program:my_python_script]
command=/usr/bin/python3 /path/to/your_script.py  # 替换为实际脚本路径
directory=/path/to/your_script_directory          # 脚本工作目录
autostart=true                                    # 开机自启
autorestart=true                                  # 崩溃自动重启
stderr_logfile=/var/log/my_python_script.err.log  # 错误日志路径
stdout_logfile=/var/log/my_python_script.out.log  # 输出日志路径
  • 启动Supervisor并加载配置:
sudo systemctl start supervisord
sudo supervisorctl reread    # 重新读取配置
sudo supervisorctl update    # 更新进程列表
sudo supervisorctl status    # 查看进程状态

之后用supervisorctl命令就能手动启停进程,日志文件也方便排查运行问题。

4. 使用Glances工具监控系统与Python进程

如果不想写代码,Glances是个不错的选择。它本身就是Python写的跨平台监控工具,支持终端模式和Web模式,对Python进程的CPU、内存、线程数一目了然。

  • 安装Glances:sudo yum install -y epel-release && sudo yum install -y glances
  • 启动方式:
    • 终端模式:直接运行glances,按q退出
    • Web模式:glances -w,然后访问http://服务器IP:61208

Glances会自动显示所有运行中的Python进程及其资源占用,还支持排序和过滤,日常快速巡检非常方便。

5. 使用Prometheus+Grafana实现高级监控

对于大规模Python应用,时序监控是标配。Prometheus负责收集数据,Grafana负责可视化。集成方式也很成熟:

  • 安装Prometheus,配置prometheus.yml,添加Python应用的监控目标,例如:job_name: 'python_app', static_configs: [{'targets': ['localhost:5000']}]
  • 在Python应用中集成prometheus_client库(pip install prometheus_client),暴露指标:
from prometheus_client import start_http_server, Gauge
import random
import time

# 定义指标
cpu_usage = Gauge('python_app_cpu_usage', 'Python应用CPU使用率')
memory_usage = Gauge('python_app_memory_usage', 'Python应用内存使用率')

# 模拟数据收集
start_http_server(5000)  # 启动HTTP服务器,暴露指标
while True:
    cpu_usage.set(random.uniform(10, 50))   # 模拟CPU使用率
    memory_usage.set(random.uniform(20, 60)) # 模拟内存使用率
    time.sleep(5)
  • 安装Grafana并配置Dashboard,导入Prometheus数据源,创建面板展示CPU、内存等指标的趋势图。这套方案适合需要长期存储、告警和复杂聚合的场景。

6. 使用Py-spy进行性能分析

当Python应用出现性能问题时,Py-spy是个无侵入的利器。它不需要修改代码,就能生成火焰图,精确看到哪些函数耗时最多。

  • 安装Py-spy:pip install py-spy
  • 生成火焰图:
py-spy record -o profile.svg --pid $(pgrep -f your_script.py)

生成的profile.svg文件用浏览器打开,函数调用关系和时间占比一目了然,定位瓶颈非常高效。

以上就是CentOS下Python资源监控的几种主流方案,从轻量级脚本到企业级监控栈都有覆盖。实际项目中可以根据团队规模、运维成本和实时性要求灵活组合——比如用psutil做本地快照,用Prometheus+Grafana做全局大盘,再用Py-spy做定点性能剖析。工具不在多,用对就行。

本文转载于:https://www.yisu.com/ask/51667373.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注