Skip to content

服务器运维巡检

如果 Moltbot 运行在你的 VPS 上,它天然具备执行系统命令的能力。利用定时任务,你可以让它定期检查服务器健康状态——磁盘、内存、错误日志——只在发现异常时通知你。这相当于一个轻量级的监控系统,不需要额外部署 Prometheus 或 Grafana。

前置条件

  • Moltbot 部署在 VPS 上:必须在被监控的服务器上运行(或有 SSH 访问能力)
  • Telegram Bot 已配置
  • 定时任务(Cron)已启用:参考 定时任务文档
  • Shell 命令执行能力:Moltbot 需要能够执行系统命令(通过 MCP 工具或内置能力)

配置步骤

第一步:基础健康检查

配置一个每 6 小时执行的巡检任务:

yaml
cron:
  - name: server-health
    schedule: "0 */6 * * *"
    channel: telegram
    prompt: |
      执行以下检查:
      1. 磁盘使用率(df -h)
      2. 内存使用率(free -m)
      3. 最近的错误日志(journalctl -p err --since "6 hours ago")
      如果磁盘使用超过 80% 或有严重错误,立即通知我。
      否则不要发消息。

关键设计:只在异常时通知,不打扰日常。

第二步:定义告警阈值

明确什么情况需要通知:

yaml
cron:
  - name: server-health
    schedule: "0 */6 * * *"
    channel: telegram
    prompt: |
      执行服务器健康检查,以下情况需要告警:

      **磁盘(df -h):**
      - 🔴 任何分区使用率 > 90%:紧急
      - 🟡 任何分区使用率 > 80%:警告

      **内存(free -m):**
      - 🔴 可用内存 < 200MB:紧急
      - 🟡 可用内存 < 500MB:警告

      **错误日志(journalctl -p err --since "6 hours ago"):**
      - 🔴 出现 OOM、Segfault、kernel panic:紧急
      - 🟡 其他错误日志 > 10 条:警告

      **系统负载(uptime):**
      - 🔴 15 分钟平均负载 > CPU 核心数 * 2:紧急
      - 🟡 15 分钟平均负载 > CPU 核心数:警告

      只在有 🔴 或 🟡 告警时发送通知。
      🔴 紧急告警在消息开头标注「⚠️ 紧急」。
      一切正常时不要发送任何消息。

第三步:添加服务状态检查

除了系统资源,还检查关键服务是否正常运行:

yaml
cron:
  - name: service-check
    schedule: "*/15 * * * *"
    channel: telegram
    prompt: |
      检查以下服务的运行状态:
      - moltbot(systemctl status moltbot)
      - nginx(systemctl status nginx)
      - postgresql(systemctl status postgresql)

      如果任何服务不在 active (running) 状态,立即通知我,
      包含服务名称和最近的日志输出。
      所有服务正常时不要发送。

第四步:SSL 证书和域名检查

yaml
cron:
  - name: ssl-check
    schedule: "0 9 * * 1"
    channel: telegram
    prompt: |
      检查以下域名的 SSL 证书到期时间:
      - example.com
      - api.example.com

      如果任何证书在 14 天内到期,通知我。
      否则不要发送。

进阶技巧

Docker 容器监控

如果你使用 Docker 部署服务:

yaml
prompt: |
  检查 Docker 容器状态(docker ps -a):
  - 列出所有非 running 状态的容器
  - 检查是否有容器在过去 6 小时内重启过(可能是崩溃重启)
  - 检查各容器的资源使用情况(docker stats --no-stream)

  有异常时通知,正常时不发送。

备份验证

yaml
cron:
  - name: backup-check
    schedule: "0 7 * * *"
    channel: telegram
    prompt: |
      检查备份状态:
      1. /backup/ 目录下最新的备份文件是否是今天创建的
      2. 备份文件大小是否合理(不为 0,不异常小)
      3. 如果可以,验证备份文件的完整性

      备份缺失或异常时告警,正常时不发送。

性能趋势追踪

结合记忆系统做趋势分析:

yaml
prompt: |
  执行常规巡检并记录当前指标到记忆中:
  - 磁盘使用率
  - 内存使用率
  - 系统负载

  与记忆中过去 7 天的指标对比:
  - 磁盘使用率是否持续增长?(预测何时满)
  - 内存是否有泄漏趋势?

  只在发现异常趋势时通知。

安全审计

yaml
cron:
  - name: security-audit
    schedule: "0 8 * * *"
    channel: telegram
    prompt: |
      执行安全检查:
      1. 过去 24 小时的 SSH 登录尝试(grep sshd /var/log/auth.log)
      2. 有没有异常的登录成功记录
      3. 系统是否有可用的安全更新(apt list --upgradable 2>/dev/null)

      发现可疑活动或关键安全更新时通知。

多服务器巡检

如果你有多台服务器,可以通过 SSH 远程检查:

yaml
prompt: |
  通过 SSH 检查以下服务器状态:
  - server1 (192.168.1.10)
  - server2 (192.168.1.11)

  每台服务器执行磁盘和内存检查。
  汇总结果,只报告异常的服务器。

常见问题

Moltbot 有权限执行系统命令吗? 取决于你的 MCP 工具配置。Shell 执行工具需要有相应权限。建议以最小权限原则配置,只授予读取系统状态的权限。

告警太频繁怎么办? 调整阈值或降低检查频率。也可以在 prompt 中添加「如果过去 6 小时内已经发送过相同告警,不要重复发送」,结合记忆系统实现告警去重。

能自动修复问题吗? 技术上可以(比如自动清理日志、重启服务),但建议谨慎使用自动修复。先从「发现 + 通知」开始,等你对系统行为有信心后再逐步添加自动化操作。


相关文档

本站为第三方教程站,与 Moltbot 官方无关