Files
my-project/config/openclaw/scripts/daily-report.sh
T

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"