81 lines
3.0 KiB
Bash
Executable File
81 lines
3.0 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# 每日故障报告生成脚本
|
|
# 用途: 每天生成故障统计和工作总结
|
|
#
|
|
|
|
REPORT_FILE="/var/log/openclaw/daily-report.log"
|
|
ALERT_LOG="/var/log/openclaw-monitor/alerts.log"
|
|
DATE=$(date +%Y-%m-%d)
|
|
|
|
echo "========================================" >> "$REPORT_FILE"
|
|
echo "每日故障报告 - $DATE" >> "$REPORT_FILE"
|
|
echo "========================================" >> "$REPORT_FILE"
|
|
echo "" >> "$REPORT_FILE"
|
|
|
|
# 1. 故障统计 (修复 grep -c 多行问题)
|
|
echo "【故障统计】" >> "$REPORT_FILE"
|
|
echo "---------------------------" >> "$REPORT_FILE"
|
|
CRITICAL=$(grep "$DATE.*CRITICAL" "$ALERT_LOG" 2>/dev/null | wc -l || echo "0")
|
|
ALERT=$(grep "$DATE.*ALERT" "$ALERT_LOG" 2>/dev/null | wc -l || echo "0")
|
|
AUTO=$(grep "$DATE.*AUTO" "$ALERT_LOG" 2>/dev/null | wc -l || echo "0")
|
|
|
|
echo "CRITICAL: $CRITICAL 条" >> "$REPORT_FILE"
|
|
echo "ALERT: $ALERT 条" >> "$REPORT_FILE"
|
|
echo "AUTO: $AUTO 条" >> "$REPORT_FILE"
|
|
echo "" >> "$REPORT_FILE"
|
|
|
|
# 2. 系统状态
|
|
echo "【系统状态】" >> "$REPORT_FILE"
|
|
echo "---------------------------" >> "$REPORT_FILE"
|
|
if pgrep -f "openclaw-gateway" > /dev/null; then
|
|
echo "Gateway: 运行中" >> "$REPORT_FILE"
|
|
else
|
|
echo "Gateway: 未运行" >> "$REPORT_FILE"
|
|
fi
|
|
|
|
MEM_USAGE=$(free -h | grep Mem | awk '{print $3 "/" $2}')
|
|
echo "内存: $MEM_USAGE" >> "$REPORT_FILE"
|
|
|
|
DISK_USAGE=$(df -h / | tail -1 | awk '{print $5 " used"}')
|
|
echo "磁盘: $DISK_USAGE" >> "$REPORT_FILE"
|
|
echo "" >> "$REPORT_FILE"
|
|
|
|
# 3. 记忆系统状态
|
|
echo "【记忆系统】" >> "$REPORT_FILE"
|
|
echo "---------------------------" >> "$REPORT_FILE"
|
|
DB="/root/.openclaw/workspace/memory/memory.db"
|
|
if [ -f "$DB" ]; then
|
|
USER_MEM=$(sqlite3 "$DB" "SELECT COUNT(*) FROM memories WHERE layer='user'" 2>/dev/null || echo "0")
|
|
SESSION_MEM=$(sqlite3 "$DB" "SELECT COUNT(*) FROM memories WHERE layer='session'" 2>/dev/null || echo "0")
|
|
AGENT_MEM=$(sqlite3 "$DB" "SELECT COUNT(*) FROM memories WHERE layer='agent'" 2>/dev/null || echo "0")
|
|
INSIGHTS=$(sqlite3 "$DB" "SELECT COUNT(*) FROM insights" 2>/dev/null || echo "0")
|
|
|
|
echo "User Memory: $USER_MEM 条" >> "$REPORT_FILE"
|
|
echo "Session Memory: $SESSION_MEM 条" >> "$REPORT_FILE"
|
|
echo "Agent Memory: $AGENT_MEM 条" >> "$REPORT_FILE"
|
|
echo "Insights: $INSIGHTS 条" >> "$REPORT_FILE"
|
|
fi
|
|
echo "" >> "$REPORT_FILE"
|
|
|
|
# 4. 计划任务状态
|
|
echo "【计划任务】" >> "$REPORT_FILE"
|
|
echo "---------------------------" >> "$REPORT_FILE"
|
|
openclaw cron list 2>/dev/null | grep -E "ok|idle" | head -5 >> "$REPORT_FILE" || echo "无任务" >> "$REPORT_FILE"
|
|
echo "" >> "$REPORT_FILE"
|
|
|
|
# 5. 总结
|
|
echo "【总结】" >> "$REPORT_FILE"
|
|
echo "---------------------------" >> "$REPORT_FILE"
|
|
TOTAL=$((CRITICAL + ALERT + AUTO))
|
|
if [ "$TOTAL" -lt 10 ]; then
|
|
echo "系统运行正常,故障较少。" >> "$REPORT_FILE"
|
|
elif [ "$TOTAL" -lt 50 ]; then
|
|
echo "系统运行一般,存在一定数量的告警。" >> "$REPORT_FILE"
|
|
else
|
|
echo "系统运行需关注,故障数量较多。" >> "$REPORT_FILE"
|
|
fi
|
|
echo "" >> "$REPORT_FILE"
|
|
|
|
echo "报告生成完成: $REPORT_FILE"
|