用Python监控海外VPS:实时数据采集脚本实战
文章分类:更新公告 /
创建时间:2025-09-20
管理海外VPS最怕突发状况:凌晨三点用户反馈网站卡慢,登录后台才发现CPU跑满;月底结算时发现带宽超额,却不清楚具体峰值时段——这些问题,一套实时监控脚本就能解决。今天就带大家用Python写个轻量工具,让海外VPS的CPU、内存、带宽状态随时“看得见”。
先搭环境:Python+psutil是基础
要跑这个监控脚本,得先在海外VPS上准备好“工具包”。Python环境建议装3.x版本(现在主流用3.8以上),兼容性和性能都更稳。关键是要装`psutil`库——它就像系统信息的“翻译官”,能把CPU、内存、网络这些硬件数据,转成Python能直接调用的友好格式。
安装很简单,在VPS的终端里敲一行命令就行:
pip install psutil
装完可以试试`import psutil`,没报错就说明成功。这一步搞定,就完成了70%的准备工作。
想清楚采什么:CPU/内存/带宽是核心
监控脚本的灵魂是“目标明确”。我们重点关注三个维度:
- CPU使用率:超过80%可能影响应用响应速度
- 内存占用:已用/空闲内存的具体数值,防止内存泄漏
- 带宽速度:上传/下载的实时速率,避免突发流量超标
举个真实例子:之前帮朋友监控外贸站的海外VPS,发现每天下午3点带宽突然飙高——查了才知道是客服团队集中上传产品图,后来调整了上传策略,带宽成本直接降了20%。这就是明确监控目标的价值。
脚本怎么写?三行函数搞定核心采集
直接上代码!我把脚本拆成三个函数,分别对应CPU、内存、带宽的数据采集,主循环控制采集频率。
import psutil
import time
CPU使用率(1秒间隔采样)
def get_cpu_usage():
return psutil.cpu_percent(interval=1)
内存使用情况(转成MB更直观)
def get_memory_usage():
memory = psutil.virtual_memory()
used = memory.used / (1024 ** 2) # 已用内存MB
free = memory.free / (1024 ** 2) # 空闲内存MB
return round(used, 2), round(free, 2)
带宽速度(计算1秒内的流量差)
def get_network_speed():
# 第一次采样
net1 = psutil.net_io_counters()
sent1, recv1 = net1.bytes_sent, net1.bytes_recv
time.sleep(1)
# 第二次采样
net2 = psutil.net_io_counters()
sent2, recv2 = net2.bytes_sent, net2.bytes_recv
# 计算速度(MB/s)
send_speed = (sent2 - sent1) / (1024 ** 2)
recv_speed = (recv2 - recv1) / (1024 ** 2)
return round(send_speed, 2), round(recv_speed, 2)
主循环:每5秒打印一次数据
while True:
cpu = get_cpu_usage()
used_mem, free_mem = get_memory_usage()
send, recv = get_network_speed()
print(f"CPU: {cpu}% | 内存: 已用{used_mem}MB / 空闲{free_mem}MB | 带宽: 上传{send}MB/s / 下载{recv}MB/s")
print("-" * 60)
time.sleep(5)
简单解释几个关键点:
- `interval=1`让CPU采样更准:等1秒再取结果,避免瞬时值波动
- 内存转MB:用`1024**2`把字节转成兆,比看GB小数点更直观
- 带宽算差值:两次采样间隔1秒,用流量差除以时间,得到实时速率
数据存起来:从“看”到“分析”的进阶
光实时打印还不够,把数据存下来才能做趋势分析。最方便的是存成CSV文件,用Python自带的`csv`模块就能搞定。
修改主循环部分,加上数据写入逻辑:
import csv
初始化CSV文件(主循环前运行一次)
with open('vps_monitor.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(['时间', 'CPU(%)', '已用内存(MB)', '空闲内存(MB)', '上传速度(MB/s)', '下载速度(MB/s)'])
# 持续采集写入
while True:
current_time = time.strftime("%Y-%m-%d %H:%M:%S")
cpu = get_cpu_usage()
used_mem, free_mem = get_memory_usage()
send, recv = get_network_speed()
writer.writerow([current_time, cpu, used_mem, free_mem, send, recv])
time.sleep(5)
存好的CSV文件可以用Excel打开,画个折线图就能看到:CPU是不是每天下午高?内存是不是慢慢涨(可能有泄漏)?带宽峰值出现在几点?这些分析能帮你提前调整资源配置。
掌握这套脚本,相当于给海外VPS配了个24小时值班的“运维小助手”。无论是排查突发故障,还是优化资源成本,实时数据都能让决策更有依据。现在就去你的海外VPS上跑起来,把服务器状态牢牢攥在手里吧!
上一篇: Python脚本批量管理海外VPS:运维自动化实战指南
下一篇: 香港服务器K8s核心概念通俗解读