世界上有一种安心,叫做"凌晨4点看了一眼监控面板,一切正常"。如果你还在手动SSH到服务器上看日志,那你需要这份指南——把Agent运维从"人肉巡检"升级为"自动巡航"。
一、Gateway 状态监控
1.1 基础状态检查
# 检查 Gateway 运行状态
openclaw gateway status
# 返回信息包括:
# - 进程状态 (running/stopped)
# - 运行时间 (uptime)
# - 内存使用 (memory)
# - CPU 使用率
# - 活跃会话数
1.2 使用 session_status 查看运行数据
session_status({
sessionKey: "main"
})
# 返回示例:
# Model: claude-3.5-sonnet
# Session time: 4h 23m
# Token usage: 127,450 / 200,000
# Tools called: 342
# Current queue: 0
1.3 列出所有活跃会话
sessions_list({
activeMinutes: 60, # 最近1小时活跃
messageLimit: 3, # 每个会话显示最后3条消息
limit: 20 # 最多20个会话
})
二、健康检查自动化
2.1 创建定时健康检查
# 每30分钟自动检查系统健康
cron({
action: "add",
job: {
name: "Gateway健康检查",
schedule: { kind: "every", everyMs: 1800000 },
payload: {
kind: "agentTurn",
message: "执行系统健康检查:1)检查Gateway状态 2)检查活跃会话 3)检查磁盘空间 4)检查内存使用 5)如有异常立即通知"
},
sessionTarget: "isolated",
delivery: { mode: "none" }
}
})
2.2 系统资源监控脚本
#!/bin/bash
# health_check.sh - 系统健康检查脚本
echo "=== OpenClaw 健康检查 ==="
echo "时间: $(date '+%Y-%m-%d %H:%M:%S')"
# Gateway状态
echo -e "\n[Gateway]"
openclaw gateway status
# 磁盘空间
echo -e "\n[磁盘空间]"
df -h / | tail -1
# 内存使用
echo -e "\n[内存使用]"
free -h | head -2
# 活跃会话数
echo -e "\n[活跃进程]"
ps aux | grep openclaw | grep -v grep | wc -l
# 最近错误
echo -e "\n[最近错误]"
journalctl -u openclaw --since "1 hour ago" --no-pager | grep -i error | tail -5
三、日志管理与分析
3.1 日志配置
# config.yaml 中的日志配置
logging:
level: info # debug | info | warn | error
format: json # json | text
output:
- type: file
path: /var/log/openclaw/gateway.log
maxSize: 50MB # 单文件最大50MB
maxFiles: 10 # 保留10个日志文件
rotate: daily # 每日轮转
- type: console # 同时输出到控制台
3.2 日志分析技巧
# 查看最近的工具调用
grep "tool_call" /var/log/openclaw/gateway.log | tail -20
# 统计错误类型
grep "error" /var/log/openclaw/gateway.log | \
jq -r '.error_type' | sort | uniq -c | sort -rn
# 查看慢请求(超过5秒)
grep "latency" /var/log/openclaw/gateway.log | \
jq 'select(.latency > 5000)'
# 按小时统计请求量
grep "request" /var/log/openclaw/gateway.log | \
jq -r '.timestamp[:13]' | uniq -c
四、告警系统
4.1 配置告警规则
# 告警规则配置
alerts:
rules:
- name: "Gateway不可用"
condition: "gateway_status != 'running'"
severity: critical
action: restart
- name: "内存使用过高"
condition: "memory_percent > 85"
severity: warning
action: notify
- name: "错误率飙升"
condition: "error_rate_5min > 10%"
severity: warning
action: notify
- name: "磁盘空间不足"
condition: "disk_free < 5GB"
severity: warning
action: cleanup
4.2 告警通知渠道
# 飞书告警通知
cron({
job: {
name: "异常告警",
schedule: { kind: "every", everyMs: 300000 },
payload: {
kind: "agentTurn",
message: "检查Gateway状态和系统资源,如有异常发送飞书通知到运维群"
},
delivery: {
mode: "announce",
channel: "feishu",
to: "oc_c942dfd09730eb94bf838c6519c115e9"
}
}
})
五、性能监控面板
5.1 关键指标
- 请求延迟:P50/P95/P99 工具调用延迟
- 吞吐量:每小时处理的请求数
- 错误率:5分钟滑动窗口错误率
- Token 消耗:每日/每周Token用量趋势
- 会话活跃度:并发会话数、平均会话时长
5.2 自动生成运维报告
# 每日运维报告脚本
exec({
command: "openclaw stats --period=24h --format=html > /var/www/miaoquai/ops-report.html"
})
六、自动化运维操作
6.1 自动重启策略
# 使用 systemd 管理自动重启
# /etc/systemd/system/openclaw.service
[Unit]
Description=OpenClaw Gateway
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/bin/openclaw gateway start
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
6.2 日志自动清理
# 添加到 crontab
0 3 * * * find /var/log/openclaw -name "*.log" -mtime +7 -delete
0 3 * * * find /tmp -name "openclaw-*" -mtime +3 -delete
💡 运维哲学:好的监控不是"出事了赶紧去修",而是"在出事之前就已经修好了"。预防性维护才是最高级的运维。