Featured image of post 用AI搭建VPS自动化监控告警:Claude + Bash实战教程

用AI搭建VPS自动化监控告警:Claude + Bash实战教程

手把手教你用Claude AI + Bash脚本搭建VPS自动化监控系统——CPU、内存、磁盘、流量全监控,异常自动告警到邮箱/Telegram。

不会写复杂的监控脚本?没关系——2026 年了,让 AI 帮你写。本教程用 Claude AI + Bash 脚本搭建一套 VPS 自动化监控系统,监控 CPU、内存、磁盘、流量,异常时自动发告警到邮箱或 Telegram。


你需要准备什么

需要什么说明花费
一台 VPSLinux 系统(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,功能:

  1. 检查 CPU 使用率(超过 80% 告警)
  2. 检查内存使用率(超过 85% 告警)
  3. 检查磁盘使用率(超过 90% 告警)
  4. 检查最近 1 小时的网络流量(超过 1GB 告警)
  5. 所有检查结果写入日志文件
  6. 如果有告警,通过 Telegram Bot API 发送消息
  7. 支持通过环境变量配置 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

  1. 打开 Telegram,搜索 @BotFather
  2. 发送 /newbot
  3. 按提示给 Bot 起名(如 VPS Monitor Bot
  4. 获得 Bot Token(格式:123456789:ABCdefGHIjklMNOpqrsTUVwxyz
  5. 发送任意消息给你的 Bot
  6. 访问 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.