服务器运维巡检
如果 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 小时内已经发送过相同告警,不要重复发送」,结合记忆系统实现告警去重。
能自动修复问题吗? 技术上可以(比如自动清理日志、重启服务),但建议谨慎使用自动修复。先从「发现 + 通知」开始,等你对系统行为有信心后再逐步添加自动化操作。
相关文档
- 定时任务 — Cron 配置详解
- MCP 工具 — 配置 Shell 执行工具
- 记忆系统 — 实现趋势追踪
- 每日个人简报 — 类似的定时推送模式
- GitHub 仓库监控 — 另一个条件性通知实践