使用Python监控VPS服务器负载:实时图表与阈值告警脚本开发
文章分类:技术文档 /
创建时间:2025-07-27
管理VPS服务器时,实时掌握负载状态是运维的核心任务。通过Python开发监控脚本,既能获取CPU、内存等关键指标,还能生成动态图表并设置阈值告警,让服务器状态尽在掌握。
需求拆解与工具选型
监控VPS服务器负载的核心是获取CPU利用率、内存占用、磁盘I/O等关键指标。Python生态中的`psutil`(跨平台系统监控库)可高效采集系统数据,`matplotlib`用于绘制实时趋势图,`smtplib`则能实现异常时的邮件告警,三者组合可搭建完整的监控链路。
实时数据采集:从指标到代码
`psutil`库提供了简洁的API获取系统状态。以下代码每1秒采集一次CPU和内存使用率,是监控的基础数据来源:
import psutil
import time
while True:
# 间隔1秒获取CPU使用率(包含所有核心)
cpu_usage = psutil.cpu_percent(interval=1)
# 获取内存使用率(总内存的已用比例)
mem_usage = psutil.virtual_memory().percent
print(f"当前状态 - CPU: {cpu_usage}% | 内存: {mem_usage}%")
time.sleep(1)
这段代码运行后,终端会持续输出最新负载数据,为后续分析提供原始信息。
动态可视化:用图表说话
仅凭数字难以直观感知负载变化趋势,`matplotlib`的动画模块能将数据转化为实时折线图。以下代码实现了CPU使用率的动态展示:
import psutil
import matplotlib.pyplot as plt
import matplotlib.animation as animation
初始化图表
fig, ax = plt.subplots()
xs, ys = [], [] # 存储时间点与CPU使用率
def update_plot(i):
# 限制只保留最近20个数据点
xs.append(i)
ys.append(psutil.cpu_percent(interval=1))
xs[:] = xs[-20:]
ys[:] = ys[-20:]
ax.clear()
ax.plot(xs, ys, color='blue')
ax.set_title('CPU使用率实时监控(最近20秒)')
ax.set_ylabel('使用率(%)')
ax.set_ylim(0, 100) # 固定Y轴范围增强对比
每1秒更新一次图表
ani = animation.FuncAnimation(fig, update_plot, interval=1000)
plt.show()
实际使用时建议固定Y轴范围(如0-100%),避免因数据波动导致图表上下跳动影响观察。
阈值告警:风险早知道
当负载超过安全阈值(如CPU持续80%以上),需立即触发告警。`smtplib`可通过邮件快速通知运维人员,示例代码如下:
import psutil
import smtplib
from email.mime.text import MIMEText
自定义阈值(根据业务需求调整)
CPU_LIMIT = 80
MEM_LIMIT = 80
def send_alert(subject, content):
# 配置邮件服务(需替换为实际参数)
sender = "alarm@example.com"
receiver = "admin@example.com"
smtp_server = "smtp.example.com"
password = "your_email_password"
msg = MIMEText(content)
msg['Subject'] = subject
msg['From'] = sender
msg['To'] = receiver
with smtplib.SMTP_SSL(smtp_server, 465) as server:
server.login(sender, password)
server.sendmail(sender, receiver, msg.as_string())
实时检查并触发告警
cpu = psutil.cpu_percent(interval=1)
mem = psutil.virtual_memory().percent
if cpu > CPU_LIMIT:
send_alert("CPU过载告警", f"当前CPU使用率:{cpu}%(阈值:{CPU_LIMIT}%)")
if mem > MEM_LIMIT:
send_alert("内存过载告警", f"当前内存使用率:{mem}%(阈值:{MEM_LIMIT}%)")
需注意:邮件账号需开启SMTP服务,密码建议使用专用授权码而非登录密码,避免账户泄露风险。
通过Python的`psutil`、`matplotlib`和`smtplib`库,能快速搭建覆盖数据采集、可视化展示到异常通知的VPS服务器监控体系。在实际运维中,建议结合业务峰值时段调整阈值(如电商大促期间降低CPU阈值),并定期检查脚本运行状态,确保监控机制持续有效。稳定的服务器性能是业务平稳运行的基石,而自动化监控则是运维效率的重要保障。
上一篇: Win11云环境DCOM组件报错修复实战
下一篇: 网站部署香港服务器基线检测实操指南