13 KiB
13 KiB
OpenClaw 系统健康检查标准流程
文档版本: v1.0
创建日期: 2026-02-06
用途: OpenClaw 守护者日常自我健康检查标准流程
执行方式:/root/.openclaw/scripts/standard-check.sh
📋 检查概述
本标准流程用于 OpenClaw 守护者 (2号机) 进行系统性自我健康检查,确保所有核心组件正常运行。
检查频率:
- ⏰ 每日自动: 通过 cron 定时任务执行 (每日 00:00)
- 🔧 手动执行:
/root/.openclaw/scripts/standard-check.sh - 🚨 异常时执行: 服务不稳定或收到告警时
通过标准: 0 个失败项 (允许最多 1-2 个警告项)
🛡️ 九步检查流程
【第一步】系统基础信息
检查目的: 确认系统基本信息,记录运行状态
检查项:
| 项目 | 说明 | 正常范围 |
|---|---|---|
| 主机名 | 当前运行主机 | yh6788-ThinkPad-X230 |
| 内核版本 | Linux 内核 | 6.x.x |
| 运行时间 | 系统启动后持续运行时间 | > 0 |
执行命令:
hostname
uname -r
uptime -p
预期结果:
- ✅ 系统正常运行,无异常重启
- ✅ 运行时间符合预期 (通常 > 1小时)
【第二步】OpenClaw 服务检查
检查目的: 确认 Gateway 核心服务运行状态
检查项:
| 检查点 | 说明 | 正常状态 |
|---|---|---|
| Gateway 进程 | openclaw-gateway 主进程 | 运行中 (有 PID) |
| Gateway 端口 | 默认监听端口 18789 | 正常监听 |
执行命令:
# 检查进程
pgrep -f "openclaw-gateway"
# 检查端口
ss -tlnp | grep ":18789 "
# 或
netstat -tlnp | grep ":18789 "
异常处理:
- ❌ Gateway 未运行: 执行
openclaw gateway start - ❌ 端口未监听: 检查日志
tail -f /tmp/openclaw/openclaw-*.log
【第三步】Ollama 服务检查
检查目的: 确认本地向量模型服务可用
检查项:
| 检查点 | 说明 | 正常状态 |
|---|---|---|
| Ollama 进程 | ollama serve 主进程 | 运行中 |
| Ollama API | 本地 API 访问 | HTTP 200 |
| 已安装模型 | 向量嵌入模型数量 | ≥1 个 |
执行命令:
# 检查进程
pgrep -f "ollama serve"
# API 测试
curl -s http://localhost:11434/api/version
# 模型列表
curl -s http://localhost:11434/api/tags | grep -o '"name":"[^"]*"'
正常结果示例:
{"version":"0.15.4"}
已安装模型:
nomic-embed-text:latest(默认,长上下文)mxbai-embed-large:latest(快速,短文本)
异常处理:
- ❌ Ollama 未运行: 执行
ollama serve - ❌ API 不可访问: 检查端口 11434 监听状态
- ❌ 模型缺失: 执行
ollama pull nomic-embed-text:latest
【第四步】内存索引状态
检查目的: 确认向量检索功能正常
检查项:
| 检查点 | 说明 | 正常状态 |
|---|---|---|
| 索引状态 | 文件索引进度 | 17/18 files |
| 向量引擎 | 向量数据库就绪 | Vector: ready |
| 同步状态 | 是否有未保存变动 | Dirty: no |
执行命令:
openclaw memory status
输出示例:
Memory Search (main)
Provider: openai (requested: openai)
Model: nomic-embed-text:latest
Sources: memory
Indexed: 17/18 files · 56 chunks
Dirty: yes
Store: ~/.openclaw/memory/main.sqlite
Workspace: ~/.openclaw/workspace
Vector: ready
Vector dims: 768
关键指标解读:
Indexed: 17/18 files→ 17个文件已索引,共18个文件56 chunks→ 知识库已分割为56个向量块Dirty: yes→ 有文件变动,需要重新索引Vector: ready→ 向量引擎工作正常
异常处理:
- ⚠️ Dirty: yes: 执行
openclaw memory index - ❌ Vector not ready: 重启 Gateway
openclaw gateway restart - ❌ Indexed 文件数异常: 检查 workspace 文件完整性
【第五步】代理配置检查
检查目的: 确认网络代理配置正确,不干扰本地服务
检查项:
| 检查点 | 说明 | 正常状态 |
|---|---|---|
| NO_PROXY | 本地服务免代理 | 已配置 |
| 代理可达 | 外部网络访问 | 可访问 |
执行命令:
# 检查环境变量
env | grep NO_PROXY
# 代理测试
curl -s -o /dev/null -w "%{http_code}" --proxy http://192.168.0.66:7890 https://api.openai.com/v1/models
预期 NO_PROXY 配置:
NO_PROXY=localhost,127.0.0.1,192.168.0.66,192.168.0.32,.local
异常处理:
- ❌ NO_PROXY 未配置: 编辑
/etc/systemd/system/openclaw-gateway.service.d/override.conf - ❌ 代理不可达: 检查代理服务状态 (192.168.0.66:7890)
【第六步】磁盘空间检查
检查目的: 确保系统有足够磁盘空间运行
检查项:
| 分区 | 挂载点 | 警告阈值 | 严重阈值 |
|---|---|---|---|
| 根分区 | / | 80% | 90% |
| Workspace | /root/.openclaw/workspace | 80% | 90% |
执行命令:
# 根分区
df -h /
# Workspace
df -h /root/.openclaw/workspace
预期结果:
- ✅ 使用率 < 80%
- ✅ 可用空间 > 50GB
异常处理:
- ⚠️ 使用率 > 80%: 清理日志文件
/var/log/openclaw-monitor/ - ❌ 使用率 > 90%: 紧急清理,扩展磁盘
【第七步】监控脚本检查
检查目的: 确认后台监控正常运行
检查项:
| 检查点 | 说明 | 正常状态 |
|---|---|---|
| 脚本存在 | system-monitor.sh | 存在 |
| 语法检查 | bash -n 测试 | 无错误 |
| 进程运行 | 监控进程 | 运行中 |
| 日志目录 | /var/log/openclaw-monitor | 存在 |
执行命令:
# 检查脚本存在
ls -la /root/.openclaw/scripts/system-monitor.sh
# 语法检查
bash -n /root/.openclaw/scripts/system-monitor.sh
# 进程检查
pgrep -f "system-monitor.sh"
# 日志文件数
ls -1 /var/log/openclaw-monitor/*.log | wc -l
监控脚本功能:
- CPU/内存/负载实时监控
- 阈值告警 (CPU > 80%, 内存 > 80%)
- OpenClaw 服务状态检测
- 日志保留 3 小时 (5400 条记录)
异常处理:
- ❌ 脚本不存在: 从文档恢复
- ❌ 语法错误: 检查最近修改
- ❌ 进程未运行: 执行
nohup /root/.openclaw/scripts/system-monitor.sh &
【第八步】配置检查
检查目的: 验证核心配置文件完整性
检查项:
| 文件 | 说明 | 检查方法 |
|---|---|---|
| openclaw.json | 主配置 | JSON 语法验证 |
| Systemd override | 代理配置 | 文件存在验证 |
执行命令:
# JSON 语法检查
python3 -m json.tool /root/.openclaw/openclaw.json > /dev/null && echo "OK"
# 提取当前模型配置
grep '"model":' /root/.openclaw/openclaw.json
# Systemd override 检查
cat /etc/systemd/system/openclaw-gateway.service.d/override.conf
openclaw.json 关键配置:
{
"providers": {
"openai": {
"DEFAULT": ["minimax/minimax-m2.1"]
}
},
"memorySearch": {
"provider": "openai",
"model": "nomic-embed-text:latest",
"remote": {
"baseUrl": "http://localhost:11434/v1",
"apiKey": "ollama-local"
}
}
}
Systemd override 预期内容:
[Service]
Environment="NO_PROXY=localhost,127.0.0.1"
Environment="no_proxy=localhost,127.0.0.1"
异常处理:
- ❌ JSON 语法错误: 检查引号、逗号、括号
- ❌ override 不存在: 创建配置文件并重启 Gateway
【第九步】1号机 SSH 检查
检查目的: 确认协同机器人的网络连通性
检查项:
| 检查点 | 说明 | 正常状态 |
|---|---|---|
| SSH 连接 | 1号机网络可达 | 可连接 |
| 1号机 Gateway | 1号机 OpenClaw 服务 | 运行中 |
执行命令:
# SSH 连接测试 (需要配置 SSH 密钥)
ssh -o BatchMode=yes -o ConnectTimeout=3 root@192.168.0.31 "echo 'OK'"
# 1号机 Gateway 检查
ssh root@192.168.0.31 "pgrep -f openclaw-gateway"
1号机信息:
- 地址: root@192.168.0.31
- 密码: 3efvVGY&
- 已知问题: 内存持久化故障 (已手动修复)
异常处理:
- ⚠️ SSH 密钥未配置: 配置 SSH 密钥实现免密登录
- ❌ 连接失败: 检查网络 (192.168.0.31)
- ⚠️ 1号机 Gateway 未运行: 提醒用户检查 1号机
📊 结果汇总标准
通过等级
| 等级 | 失败数 | 警告数 | 行动 |
|---|---|---|---|
| 🎉 优秀 | 0 | 0 | 无需操作 |
| ✅ 良好 | 0 | 1-2 | 计划内处理 |
| ⚠️ 警告 | 0 | 3+ | 尽快处理 |
| ❌ 异常 | 1+ | 任意 | 立即处理 |
输出模板
========================================
🛡️ OpenClaw 标准系统检查
时间: YYYY-MM-DD HH:MM:SS
========================================
总检查项: XX
✅ 通过: XX
⚠️ 警告: XX
❌ 失败: XX
========================================
告警日志位置
- 告警日志:
/var/log/openclaw-monitor/alerts.log - 指标日志:
/var/log/openclaw-monitor/system-metrics.log
🚨 异常处理预案
紧急情况 (失败数 ≥ 1)
-
Gateway 未运行
openclaw gateway status openclaw gateway start -
Ollama 崩溃
pkill -f ollama ollama serve -
索引损坏
rm -rf ~/.openclaw/memory/ openclaw memory index
警告情况
-
Dirty 状态持续
openclaw memory index -
磁盘空间不足
# 清理日志 rm -f /var/log/openclaw-monitor/*.log.* # 检查大文件 du -sh /root/.openclaw/workspace/*
📝 检查记录
| 日期 | 检查人 | 通过项 | 警告项 | 失败项 | 备注 |
|---|---|---|---|---|---|
| 2026-02-05 | 2号机 | 18 | 1 | 0 | Dirty 状态 |
🔗 相关文档
- 监控脚本:
/root/.openclaw/scripts/system-monitor.sh - 主配置:
/root/.openclaw/openclaw.json - 系统配置:
/etc/systemd/system/openclaw-gateway.service.d/override.conf - 记忆文件:
/root/.openclaw/workspace/MEMORY.md - 多机部署:
/root/doc/MULTI-MACHINE.md
✨ 更新日志
| 版本 | 日期 | 修改内容 |
|---|---|---|
| v1.0 | 2026-02-06 | 初版发布,基于 standard-check.sh 脚本 |
| v1.1 | 2026-02-06 | 新增 Web 服务访问、锁文件、日志深度检查、系统资源深度诊断 |
🔧 补充:深度诊断工具 (why.py)
说明: 标准检查流程覆盖基础项目,
why.py提供更深入的诊断能力
工具位置
/root/tools/why.py
安装依赖
pip install psutil requests
执行方式
python3 /root/tools/why.py
why.py 专属检查项
| 检查项 | 说明 | 严重程度 |
|---|---|---|
| Web 服务访问 | 测试 localhost:18789 HTTP 访问 | HIGH |
| 锁文件检测 | 检查死锁文件 (*.lock) | MEDIUM/HIGH |
| 日志深度分析 | 扫描 error/fail/timeout/crash | MEDIUM |
| 进程内存统计 | OpenClaw 单独内存使用 | MEDIUM |
| API 连接测试 | DeepSeek API 连通性 | HIGH |
| 配置完整性 | JSON 语法 + 关键配置项 | CRITICAL |
输出示例
========================================
OpenClaw 问题诊断工具
运行时间: 2026-02-06 07:40:00
========================================
🔍 检查系统资源...
内存: 45% 已使用 (3625MB/7982MB)
🔍 检查配置文件...
✅ 配置文件存在: /root/.openclaw/openclaw.json
✅ 包含 agents 配置
DeepSeek API密钥: sk-...ab12
🔍 检查网关进程...
找到 1 个网关进程:
PID: 968802, 状态: running
🔍 检查端口监听...
✅ 端口 18789 正在监听
监听进程: tcp LISTEN 0 128 127.0.0.1:18789 users:(("openclaw-gateway")
🔍 检查Web服务...
✅ 本地访问: 成功 (HTTP 200)
🔍 检查锁文件...
✅ 未发现锁文件
🔍 检查模型连接性...
✅ DeepSeek API: 连接成功 (HTTP 200)
🔍 检查日志文件...
找到 3 个日志文件
/root/.openclaw/openclaw.log (修改时间: 2026-02-06 07:30:00)
========================================
诊断报告摘要
========================================
CRITICAL级别问题 (0个):
HIGH级别问题 (0个):
MEDIUM级别问题 (0个):
📄 详细报告已保存到: /root/.openclaw/diagnosis_20260206_074000.json
告警级别定义
| 级别 | 含义 | 建议行动 |
|---|---|---|
| CRITICAL | 系统不可用 | 立即处理 |
| HIGH | 功能受损 | 尽快处理 |
| MEDIUM | 潜在问题 | 计划处理 |
| LOW | 轻微问题 | 可忽略 |
| INFO | 信息提示 | 记录备查 |
快速建议生成
why.py 会根据问题自动生成处理建议:
💡 建议操作:
1. 建议: 启动网关 - `openclaw gateway --force &`
2. 建议: 更新DeepSeek API密钥
3. 建议: 清理锁文件 - `find ~/.openclaw -name '*.lock' -delete`
诊断报告位置
每次执行会生成 JSON 报告:
~/.openclaw/diagnosis_YYYYMMDD_HHMMSS.json
📋 完整检查流程
标准流程 + 深度诊断配合使用:
- 日常检查: 执行
standard-check.sh - 异常诊断: 执行
python3 /root/tools/why.py - 紧急排查: 结合两者结果处理问题