不会写复杂的监控脚本?没关系——2026 年了,让 AI 帮你写。本教程用 Claude AI + Bash 脚本搭建一套 VPS 自动化监控系统,监控 CPU、内存、磁盘、流量,异常时自动发告警到邮箱或 Telegram。
你需要准备什么
| 需要什么 | 说明 | 花费 |
|---|---|---|
| 一台 VPS | Linux 系统(Ubuntu/Debian 推荐) | RackNerd 2GB $35.99/年 |
| Claude AI 访问 | claude.ai 或 API | 免费/付费 |
| Telegram Bot | 用于接收告警消息 | 免费 |
| 基础 Linux 知识 | 会用 SSH、基本命令 | — |
如果你还没有 VPS: 推荐 RackNerd 2GB 套餐($35.99/年,折合 $3.00/月)——2 核 CPU、2GB 内存、35GB SSD、5TB 流量,跑监控脚本绰绰有余。
第 1 步:用 Claude 生成监控脚本
打开 Claude AI(claude.ai),输入以下 prompt:
帮我写一个 Bash 脚本
vps_monitor.sh,功能:
- 检查 CPU 使用率(超过 80% 告警)
- 检查内存使用率(超过 85% 告警)
- 检查磁盘使用率(超过 90% 告警)
- 检查最近 1 小时的网络流量(超过 1GB 告警)
- 所有检查结果写入日志文件
- 如果有告警,通过 Telegram Bot API 发送消息
- 支持通过环境变量配置 Telegram Bot Token 和 Chat ID
Claude 会生成一个完整的脚本。以下是它应该产出的核心逻辑:
核心脚本(Claude 生成 + 优化)
#!/bin/bash
# VPS Monitor Script - AI Generated with Claude
# 监控 CPU、内存、磁盘、流量,异常时发 Telegram 告警
# === 配置 ===
TELEGRAM_BOT_TOKEN="${TELEGRAM_BOT_TOKEN:-your_bot_token_here}"
TELEGRAM_CHAT_ID="${TELEGRAM_CHAT_ID:-your_chat_id_here}"
LOG_FILE="/var/log/vps_monitor.log"
CPU_THRESHOLD=80
MEM_THRESHOLD=85
DISK_THRESHOLD=90
TRAFFIC_THRESHOLD_GB=1
# === 函数 ===
send_alert() {
local message="$1"
echo "[$(date '+%Y-%m-%d %H:%M:%S')] ALERT: $message" >> "$LOG_FILE"
# Telegram 告警
if [[ "$TELEGRAM_BOT_TOKEN" != "your_bot_token_here" ]]; then
curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \
-d "chat_id=${TELEGRAM_CHAT_ID}" \
-d "text=⚠️ VPS 告警: ${message}" \
-d "parse_mode=HTML" > /dev/null 2>&1
fi
# 邮件告警(需要安装 mailutils)
# echo "VPS Alert: $message" | mail -s "VPS Alert" [email protected]
}
log_status() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> "$LOG_FILE"
}
# === CPU 检查 ===
check_cpu() {
local cpu_usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1)
# 备用方法
if [[ -z "$cpu_usage" ]]; then
cpu_usage=$(mpstat 1 1 | awk '/Average/ {print 100 - $NF}')
fi
log_status "CPU: ${cpu_usage}%"
if (( $(echo "$cpu_usage > $CPU_THRESHOLD" | bc -l) )); then
send_alert "CPU 使用率过高: ${cpu_usage}% (阈值: ${CPU_THRESHOLD}%)"
return 1
fi
return 0
}
# === 内存检查 ===
check_memory() {
local mem_info=$(free | awk '/Mem:/ {printf "%.1f", $3/$2 * 100}')
log_status "Memory: ${mem_info}%"
if (( $(echo "$mem_info > $MEM_THRESHOLD" | bc -l) )); then
send_alert "内存使用率过高: ${mem_info}% (阈值: ${MEM_THRESHOLD}%)"
return 1
fi
return 0
}
# === 磁盘检查 ===
check_disk() {
local disk_usage=$(df / | awk 'NR==2 {print $5}' | tr -d '%')
log_status "Disk: ${disk_usage}%"
if (( disk_usage > DISK_THRESHOLD )); then
send_alert "磁盘使用率过高: ${disk_usage}% (阈值: ${DISK_THRESHOLD}%)"
return 1
fi
return 0
}
# === 流量检查 ===
check_traffic() {
local rx_bytes=$(cat /sys/class/net/eth0/statistics/rx_bytes 2>/dev/null || echo 0)
local tx_bytes=$(cat /sys/class/net/eth0/statistics/tx_bytes 2>/dev/null || echo 0)
local total_gb=$(echo "scale=2; ($rx_bytes + $tx_bytes) / 1073741824" | bc)
log_status "Traffic (since boot): ${total_gb} GB"
}
# === 主函数 ===
main() {
log_status "=== VPS Monitor Run ==="
check_cpu
check_memory
check_disk
check_traffic
log_status "=== Monitor Complete ==="
}
main "$@"
第 2 步:创建 Telegram Bot
- 打开 Telegram,搜索 @BotFather
- 发送
/newbot - 按提示给 Bot 起名(如
VPS Monitor Bot) - 获得 Bot Token(格式:
123456789:ABCdefGHIjklMNOpqrsTUVwxyz) - 发送任意消息给你的 Bot
- 访问
https://api.telegram.org/bot<TOKEN>/getUpdates获取 Chat ID
第 3 步:部署脚本到 VPS
# SSH 登录 VPS
ssh root@your-vps-ip
# 创建脚本文件
nano /usr/local/bin/vps_monitor.sh
# 粘贴 Claude 生成的脚本内容,保存退出
# 添加执行权限
chmod +x /usr/local/bin/vps_monitor.sh
# 创建日志目录
touch /var/log/vps_monitor.log
# 设置环境变量
echo 'export TELEGRAM_BOT_TOKEN="your_token_here"' >> /etc/environment
echo 'export TELEGRAM_CHAT_ID="your_chat_id_here"' >> /etc/environment
# 测试运行
source /etc/environment && /usr/local/bin/vps_monitor.sh
第 4 步:设置定时任务
# 编辑 crontab
crontab -e
# 添加以下行(每 5 分钟检查一次)
*/5 * * * * source /etc/environment && /usr/local/bin/vps_monitor.sh >> /var/log/vps_monitor.log 2>&1
第 5 步:用 AI 优化脚本
脚本跑起来后,你可以继续让 Claude 帮你优化:
- “帮我加上 nginx 进程检测,挂了就告警” → Claude 会加上进程检查
- “加上日志自动清理,超过 7 天自动删除” → Claude 会加上 logrotate 逻辑
- “帮我加一个 Web 面板,显示最近 24 小时的监控数据” → Claude 会生成一个简单的 HTML 页面
这就是 AI 加持的威力——你提需求,AI 写代码,你只需要复制粘贴。
效果展示
当 VPS 出现异常时,你会在 Telegram 收到类似这样的消息:
⚠️ VPS 告警: CPU 使用率过高: 92.3% (阈值: 80%)
⚠️ VPS 告警: 磁盘使用率过高: 95% (阈值: 90%)
日志文件 /var/log/vps_monitor.log 会记录每次检查的状态:
[2026-06-01 10:00:01] === VPS Monitor Run ===
[2026-06-01 10:00:01] CPU: 23.5%
[2026-06-01 10:00:01] Memory: 67.2%
[2026-06-01 10:00:01] Disk: 45%
[2026-06-01 10:00:01] Traffic (since boot): 12.34 GB
[2026-06-01 10:00:01] === Monitor Complete ===
进阶玩法(让 AI 帮你继续扩展)
| 需求 | Claude Prompt |
|---|---|
| 加上 SSL 证书过期检测 | “帮我加一个函数,检查 /etc/letsencrypt 下的证书是否 7 天内过期” |
| 加上 Web 面板 | “帮我用 Python Flask 写一个监控面板,显示 CPU/内存/磁盘的实时图表” |
| 加上自动重启 | “如果 nginx 挂了,自动重启并在日志中记录” |
| 加上备份功能 | “每天凌晨 3 点自动备份 /var/www 到 Google Drive” |
AI 的价值不在于它写得多完美,而在于它让不会写代码的人也能实现复杂的自动化。
FAQ
Q: 这个脚本会消耗多少 VPS 资源? A: 几乎可以忽略不计。每次执行只运行几秒,CPU 占用 <1%。
Q: 除了 Telegram,还能用其他方式告警吗? A: 可以。让 Claude 帮你改成 Email(用 mailutils)、Slack Webhook、Discord Webhook 等。
Q: 能监控多台 VPS 吗? A: 可以。在每台 VPS 上部署脚本,用同一个 Telegram Bot,通过不同的 Chat ID 区分。
Q: 我完全不会 Linux,能搞定吗? A: 能。只需要会 SSH 登录和复制粘贴命令。Claude 会给你完整的命令,你按顺序执行就行。
Disclaimer: Some links are affiliate links. We may earn a commission at no extra cost to you.
