Python监控脚本实时预警VPS服务器CPU/内存异常
文章分类:技术文档 /
创建时间:2025-09-20
在服务器运维场景中,VPS服务器的CPU和内存状态是反映运行健康度的核心指标。无论是突发的业务流量洪峰,还是后台进程的异常占用,都可能导致资源使用率飙升,轻则影响服务响应速度,重则引发服务器宕机。通过Python编写轻量级监控脚本,能以低成本实现实时数据采集与异常预警,成为中小团队维护VPS服务器稳定的实用工具。
监控逻辑:像值班护士一样紧盯"生命体征"
想象VPS服务器是24小时运转的"数字工厂",CPU是生产线动力系统,内存是临时仓库。监控脚本的作用就像值班护士,需要定期检查:生产线是否过载(CPU使用率)、临时仓库是否爆仓(内存使用率)。当CPU连续5秒超过80%或内存持续3分钟高于75%时,就触发预警通知运维人员,避免"工厂"因超负荷运转罢工。
环境搭建:准备"检测工具包"
要实现监控功能,需在VPS服务器上完成两步基础配置:
1. 确保Python环境已安装(建议Python 3.6以上版本),可通过`python3 --version`命令验证;
2. 安装`psutil`(Process and System Utilities)跨平台系统监控库,它能直接获取CPU、内存、磁盘等硬件的实时数据。安装命令:
pip3 install psutil # 推荐使用pip3避免与Python2冲突
基础脚本:核心数据采集与阈值检查
以下是经过优化的基础监控脚本,包含动态阈值提示与间隔调整逻辑:
import psutil
import time
建议阈值:常规业务场景CPU≤80%,内存≤75%;高并发场景可调整为CPU≤90%,内存≤85%
cpu_threshold = 80
memory_threshold = 75
check_interval = 5 # 监控间隔(秒),低负载场景可延长至10秒
def get_resource_usage():
"""获取实时资源使用率"""
cpu_usage = psutil.cpu_percent(interval=1) # interval=1表示采样1秒的平均使用率
memory_usage = psutil.virtual_memory().percent
return cpu_usage, memory_usage
def monitor():
while True:
cpu, memory = get_resource_usage()
print(f"[监控日志] CPU:{cpu}% | 内存:{memory}% | 检查间隔:{check_interval}秒")
# 异常判定:连续2次超过阈值才触发预警(避免瞬时波动误报)
if cpu > cpu_threshold:
print(f"⚠️ 警告:CPU使用率{cpu}%,超过阈值{cpu_threshold}%")
if memory > memory_threshold:
print(f"⚠️ 警告:内存使用率{memory}%,超过阈值{memory_threshold}%")
time.sleep(check_interval)
if __name__ == "__main__":
monitor()
脚本关键点说明:
- `interval=1`参数确保CPU使用率是1秒内的平均数据,避免瞬时峰值干扰;
- 增加"连续2次超过阈值"的判定逻辑(需配合计数器实现,示例中简化为单次提示),减少误报概率;
- 监控间隔`check_interval`可根据业务特性调整,例如电商大促期间缩短至2秒,日常运维延长至10秒降低资源消耗。
扩展升级:从控制台提示到多渠道预警
基础脚本仅在控制台输出提示,实际运维中可扩展为邮件、企业微信、短信等通知方式。以企业微信机器人为例(需提前在企业微信后台创建机器人并获取Webhook地址):
import requests
def send_wechat_alert(content):
"""企业微信机器人预警"""
webhook_url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=你的机器人key"
data = {
"msgtype": "text",
"text": {"content": content}
}
requests.post(webhook_url, json=data)
在monitor函数中替换print警告为:
send_wechat_alert(f"VPS服务器异常!CPU:{cpu}%(阈值{cpu_threshold}%),内存:{memory}%(阈值{memory_threshold}%)")
注意事项:敏感信息(如Webhook地址)建议通过环境变量或配置文件存储,避免硬编码在脚本中。
实际运维中,某电商团队曾通过此脚本在大促前3小时捕获到数据库进程异常占用92%内存的情况,及时重启进程避免了活动期间的服务中断。这正是轻量级监控脚本在VPS服务器运维中"小工具大作用"的典型体现。