📊 OpenClaw Gateway 监控与运维指南

世界上有一种安心,叫做"凌晨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 关键指标

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
💡 运维哲学:好的监控不是"出事了赶紧去修",而是"在出事之前就已经修好了"。预防性维护才是最高级的运维。