不花钱做监控:教你用 10 行 Python 代码自动检测 VPS 和博客状态

作为一个正在学习编程的学生,我最近刚刚在 RackNerd 的 VPS 上搭建了自己的 WordPress 博客。虽然网站跑起来了,但我总担心它会不会突然挂掉(比如 Docker 崩溃或者 Nginx 报错)。

市面上的服务器监控服务(如 UptimeRobot)虽然好用,但很多高级功能都要收费。我想:既然我有 VPS,为什么不利用 Python 自己写一个简单的监控脚本呢?

今天这就教大家如何用不到 10 行 Python 代码,配合 Linux 的 Crontab 定时任务,给你的博客做一个“24小时免费体检医生”。

解决方案如下:

Step 1: 安装依赖

首先,我们需要在 Debian/Ubuntu 系统中安装 Python 的请求库 requests。为了避免 pip 报错,推荐直接用 apt 安装:

apt update && apt install python3-requests -y

Step 2: 编写监控脚本

我们在 /root 目录下创建一个名为 monitor.py 的文件。这个脚本的逻辑很简单:尝试访问博客主页,如果返回状态码 200,就记录“正常”;否则记录“异常”。

import requests
import datetime

# 你的博客地址
url = "https://usnstygvo.info"
# 日志文件保存路径
log_file = "/root/website_status.log"

def check_website():
    timestamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    try:
        # 发送请求,超时时间设为 10 秒
        response = requests.get(url, timeout=10)
        
        if response.status_code == 200:
            status = "✅ 正常 (200)"
        else:
            status = f"❌ 异常 ({response.status_code})"
            
    except Exception as e:
        status = f"💥 无法连接 ({str(e)})"

    # 写入日志
    log_entry = f"[{timestamp}] {status}\n"
    with open(log_file, "a") as f:
        f.write(log_entry)
    
    print(log_entry.strip())

if __name__ == "__main__":
    check_website()

Step 3: 验证运行 (关键截图)

写好后,我们先手动运行一次,看看效果:

python3 monitor.py

运行结果如下:

Step 4: 设置自动化 (Crontab)

脚本没问题了,最后一步是让它每 30 分钟自动跑一次。我们要编辑 Crontab 配置:

crontab -e

在文件末尾添加这一行:

*/30 * * * * /usr/bin/python3 /root/monitor.py

这样,系统就会在后台默默守护你的网站了。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注