乐于分享
好东西不私藏

OpenClaw 监控修复系统:让 AI 助手自己学会"看病"

OpenClaw 监控修复系统:让 AI 助手自己学会"看病"

你有没有想过,如果你的 AI 助手能自己发现问题、自己修复问题,那会是一种什么体验?

最近,我给 OpenClaw 装了一套”智能监控系统”,它不仅能 7×24 小时监控运行状态,还能在出问题的时候自动修复,甚至不需要我动一根手指。

今天,就来聊聊这个监控系统是怎么实现的。


为什么需要监控系统?

作为一个小团队的技术负责人,我每天都要处理各种意外情况:

  • 早上醒来发现定时任务没跑
  • Gateway 突然停止响应
  • 服务器资源被占满

这些问题总是来得猝不及防。与其被动救火,不如让系统自己学会”看病”。

于是,OpenClaw 监控修复系统诞生了。


系统架构:三道防线保驾护航

第一道:独立于 OpenClaw 之外

传统的监控都是”寄生”在主系统上的,主系统一挂,监控也跟着挂。

我采用了一个更聪明的方案:让监控进程独立运行

┌─────────────────────────────────────────┐│         独立监控进程 (PM2 守护)          ││  ┌─────────┐  ┌─────────┐  ┌─────────┐ ││  │ 监控模块 │→ │ 修复模块 │→ │ 通知模块 │ ││  └─────────┘  └─────────┘  └─────────┘ │└─────────────────────────────────────────┘         ↓              ↓              ↓    检查状态        执行修复        飞书通知

这套系统跑在 PM2 进程管理器上,即使 OpenClaw Gateway 彻底宕机,监控进程依然能正常运行,发现问题并尝试修复。

第二道:全方位状态检查

监控系统每 5 分钟执行一次全面”体检”:

检查项
检查方式
异常阈值
Gateway 状态
openclaw gateway status
无法连接
定时任务
openclaw cron list
任务失败
进程存活
检查 node 进程
进程消失
内存使用
系统 API
> 85%
磁盘空间
系统 API
> 90%
网络连通
ping 测试
超时

第三道:智能修复策略

发现问题后,系统会自动执行修复:

问题类型
修复策略
Gateway 停止
自动重启服务
定时任务失败
重试任务
进程崩溃
重启服务
内存占用高
清理缓存

修复完成后,系统会通过飞书自动通知我修复结果。


核心代码实现

1. 监控模块 (monitor.js)

asyncfunctionrunMonitor({// 优先检查 Gatewayconst gatewayStatus = await checkGatewayStatus();// Gateway 不可用时,只报告 Gateway 问题if (!gatewayStatus.healthy) {return { healthyfalseissues: [{ type'gateway', ...gatewayStatus }] };  }// Gateway 正常,继续检查其他项目const checks = {gateway: gatewayStatus,cronawait checkCronTasks(),processawait checkProcessAlive(),resourcesawait checkSystemResources(),networkawait checkNetwork()  };// 汇总问题const issues = [];if (!checks.gateway.healthy) issues.push({ type'gateway', ...checks.gateway });if (!checks.cron.healthy) issues.push({ type'cron', ...checks.cron });// ... 其他检查return { healthy: issues.length === 0, issues };}

2. 修复模块 (fixer.js)

asyncfunctionrestartGateway({  log('INFO''尝试重启 Gateway...');const result = await execCommand('openclaw gateway restart');// 等待 15 秒让 Gateway 启动awaitnewPromise(r => setTimeout(r, 15000));// 验证是否真的恢复const statusResult = await execCommand('openclaw gateway status');if (statusResult.stdout.includes('ok')) {return { fixedtrue };  }return { fixedfalse };}

3. 静默执行(不弹窗)

为了让监控在后台安静运行,所有命令都用了静默模式:

functionexecCommand(command{const silentCommand = `powershell.exe -WindowStyle Hidden -Command "${command}"`;returnnewPromise((resolve) => {    exec(silentCommand, { shell'cmd.exe' }, callback);  });}

实际测试效果

测试场景 1:手动停止 Gateway

我在测试中手动停止了 Gateway:

🔧 OpenClaw 自动修复中发现的问题:gateway: Gateway已停止运行

系统检测到问题后,自动执行了重启:

[INFO] 尝试重启 Gateway...[INFO] Gateway 重启命令已发送,等待启动...[SUCCESS] Gateway 重启并验证成功

✅ 2 分钟后,Gateway 自动恢复正常。

测试场景 2:定时任务异常

当 cron 任务失败时:

发现的问题:cron: 存在失败的任务

系统会列出失败任务并尝试重试。


通知效果

每次检查和修复,系统都会通过飞书自动通知:

  • 🚨 异常告警
  • 🔧 修复中通知
  • ✅ 修复成功 / ❌ 修复失败

再也不用担心半夜出问题了。


总结

这套监控系统虽然不大,但解决了实际问题:

  1. 独立运行 – 不依赖 OpenClaw 主进程
  2. 自动修复 – 大部分问题无需人工介入
  3. 静默运行 – 后台执行,不弹窗打扰
  4. 及时通知 – 异常第一时间推送

如果你也在用 OpenClaw 或者类似的自动化平台,建议也给它配一套监控系统。毕竟,真正的自动化,是连”看病”都能自己完成的。


本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » OpenClaw 监控修复系统:让 AI 助手自己学会"看病"

猜你喜欢

  • 暂无文章