🎯 做完你会得到
服务器出问题第一时间收到 Telegram 告警,包含具体指标和建议处理步骤,不再靠运气发现故障。
🛠 需要什么
- healthcheck
- telegram
👤 适合谁
- 运维人员
- 独立开发者
- 服务器拥有者
⚡ 效果预览
服务器异常时30秒内收到 Telegram 告警,附错误信息和建议解决方案
⚠️ 待验证案例:本案例基于 OpenClaw shell 执行能力和 cron 功能的真实描述,需要 OpenClaw 运行在被监控的服务器上(或通过 SSH 连接)。如果你跑通了,欢迎联系站长提交验证记录。
🔧 Step 0:先配置消息接收渠道
⚠️ 本案例需要发送通知到你的手机,先配置消息渠道 👉 去配置 Telegram/飞书/微信接入 →
解决什么问题
服务器宕机、磁盘爆满、进程崩溃,往往是用户先报障才知道。这个场景让 OpenClaw 充当你的值班运维:
- 谁会用到:有服务器需要维护的独立开发者、小团队运维、VPS 用户
- 省了什么:不用盯着监控面板,异常自动通知
- 效果是什么:每30分钟静默检查,正常不打扰,异常立刻告警
监控项:
- CPU 使用率 > 85%
- 内存使用率 > 90%
- 磁盘使用率 > 80%
- 关键进程(如 nginx、docker、你的 App)是否在运行
- 服务端口是否响应
前置条件
- OpenClaw 运行在需要监控的服务器上(Linux/macOS)
- 或 OpenClaw 已配置 SSH 访问目标服务器
- Telegram 已连接到 OpenClaw
- Claude Max 账号,或 Anthropic API Key(轻量判断,用量极少)
如果 OpenClaw 和被监控服务器在同一台机器,直接读取本地系统信息即可,无需 SSH。
用到的工具
| 工具 | 用途 | 获取方式 |
|---|---|---|
| exec(内置) | 执行系统命令获取指标 | OpenClaw 内置 |
| anthropic/claude-haiku | 判断是否异常、生成告警内容 | Claude Max 账号,或 API Key |
| cron(内置) | 每30分钟定时检查 | OpenClaw 内置 |
| Telegram(内置) | 发送告警消息 | OpenClaw 已连接 Telegram |
预期结果
正常时:静默,不发任何消息。
异常时,收到类似这样的 Telegram 告警:
🚨 服务器告警 · 2026-03-12 07:45
主机:my-server (192.168.1.100)
⚠️ 磁盘告警
/dev/sda1:已用 87%(剩余 13GB)
建议:清理 /var/log 或扩容
⚠️ 进程离线
nginx 进程未检测到
建议:执行 sudo systemctl restart nginx
✅ CPU:34% | 内存:62% | 正常
最简上手:直接发这句话
复制以下内容发给你的 OpenClaw:
帮我设置服务器健康监控,每30分钟检查一次:
监控项:
1. CPU 使用率(超过 85% 告警)
2. 内存使用率(超过 90% 告警)
3. 磁盘使用率(超过 80% 告警)
4. 进程检查:nginx、docker
检查方式:直接执行 shell 命令读取本机指标。
规则:
- 所有指标正常 → 不发消息
- 有任何异常 → 立刻发 Telegram 告警,说明异常原因和建议处理步骤
设置 cron:每30分钟执行一次(0,30 * * * *)
监控脚本(可让 OpenClaw 帮你生成)
让 OpenClaw 生成一个完整的检查脚本:
帮我写一个 bash 脚本 /opt/health-check.sh,检查以下内容并输出 JSON 格式结果:
- CPU 使用率(用 top 或 /proc/stat)
- 内存使用率(free -m)
- 各磁盘使用率(df -h)
- nginx 进程是否存在(pgrep nginx)
- 80 端口是否响应(nc -zv localhost 80)
脚本输出格式:
{
"cpu_pct": 34,
"mem_pct": 62,
"disks": [{"mount": "/", "pct": 87}],
"processes": {"nginx": true, "docker": false},
"ports": {"80": true}
}
有了脚本之后,让 OpenClaw 在 cron 里调用这个脚本,解析输出,判断是否需要告警。
cron 配置命令
# 每30分钟检查一次
openclaw cron add \
--name "服务器健康监控" \
--cron "*/30 * * * *" \
--tz "Asia/Shanghai" \
--session isolated \
--message "执行服务器健康检查:运行 /opt/health-check.sh,解析结果,如果有任何指标超过阈值(CPU>85%、内存>90%、磁盘>80%、进程离线)立刻发 Telegram 告警,告警内容包含具体数值和建议处理步骤;所有正常则不发消息。"
# 查看 cron 列表
openclaw cron list
# 临时暂停(深夜维护时)
openclaw cron pause <job-id>
# 恢复
openclaw cron resume <job-id>
多台服务器监控
如果要监控多台机器,可以配置 SSH 访问后批量检查:
帮我设置多台服务器监控,每小时检查一次:
- server-1: 192.168.1.101(已配置 SSH 密钥)
- server-2: 192.168.1.102(已配置 SSH 密钥)
对每台服务器执行相同的健康检查,任何一台异常都发告警,告警里注明是哪台服务器。
怎么验证成功了
- 设置完 cron 后,让 OpenClaw现在手动执行一次健康检查
- 正常情况下应该不发消息(或发全部正常确认消息)
- 验证告警:临时改低阈值,如CPU > 1% 就告警,触发一次告警后再改回来
踩坑记录
执行 shell 命令权限不足
症状:df、free、top 等命令报权限错误。
解法:确认 OpenClaw 进程的运行用户有读取系统信息的权限。大多数 Linux 系统普通用户就能执行这些命令。如果需要检查需要 root 的项目(如某些 docker 命令),用 sudo 并配置 sudoers 免密。
收到太多告警消息(告警轰炸)
症状:某个指标持续异常,每30分钟都收到一条告警,手机被刷屏。
解法:让 OpenClaw 实现冷却期逻辑:同一问题3小时内只告警一次。可以用工作区文件记录上次告警时间来实现:
修改健康监控逻辑:每个告警类型有3小时冷却期,冷却期内同类告警不重复发送。用 /tmp/health-alert-state.json 记录各项上次告警时间。
OpenClaw 不在被监控服务器上
症状:OpenClaw 在本地 Mac,需要监控远程 VPS。
解法:配置 SSH 连接,让 OpenClaw 通过 SSH 执行远程命令:
我的服务器 SSH 地址是 user@your-server.com,密钥在 ~/.ssh/id_rsa。
帮我修改健康检查,通过 SSH 连接到这台服务器执行检查命令。
不满意怎么调
- 想调整检查频率 → 修改 cron 表达式,如改为每10分钟:
*/10 * * * * - 想增加监控项 → 告诉 OpenClaw 追加,如同时监控 MySQL 连接数
- 想接入 PagerDuty/钉钉 → OpenClaw 支持 Webhook,配置后推到任意平台
- 想看历史记录 → 让 OpenClaw 把每次检查结果追加写入日志文件
/var/log/health.log - 想监控网站可访问性 → 加上 HTTP 探测:
curl -o /dev/null -s -w "%{http_code}" https://你的网站
用 AI 替代虚拟助理(VA)
邮件回复、日程安排、信息整理、客户跟进——这些虚拟助理做的事,OpenClaw 能接管大部分,每月省下 VA 费用。
100+ 企业平台一键接入
安装 API Gateway 技能,一口气打通 Google Workspace、Microsoft 365、GitHub、Notion、Slack、HubSpot 等 100+ 平台,统一管理。
数据报表自动生成与定时分发
把你的数据源(Excel/飞书/数据库)接入 OpenClaw,每天/每周自动生成数据报表,并准时发送到对应的人或群,彻底告别"每天早上手动跑数据、发给领导"的重复劳动。"