#!/bin/bash # SyslogAI Harness — Automated Maintenance # Runs daily via cron LOG="/var/log/harness-maintenance.log" echo "=== $(date) ===" >> "$LOG" # 1. Clean Redis timeseries keys older than 60 days CUTOFF=$(date -d "60 days ago" +%Y%m%d%H) echo "Redis: removing ts:* keys older than $CUTOFF" >> "$LOG" DELETED=0 for key in $(docker exec harness-redis redis-cli KEYS "ts:*" 2>/dev/null); do TS=$(echo "$key" | grep -oP '\d{10}$') if [ -n "$TS" ] && [ "$TS" -lt "$CUTOFF" ] 2>/dev/null; then docker exec harness-redis redis-cli DEL "$key" > /dev/null 2>&1 DELETED=$((DELETED + 1)) fi done echo "Redis: deleted $DELETED stale timeseries keys" >> "$LOG" # 2. Log stale model keys (leftover from migrations) STALE=$(docker exec harness-redis redis-cli KEYS "*gemma*" 2>/dev/null) if [ -n "$STALE" ]; then echo "WARNING: stale gemma keys found: $STALE" >> "$LOG" fi # 3. Prune Docker build cache (older than 7 days) echo "Docker: pruning build cache" >> "$LOG" docker builder prune -f --filter until=168h >> "$LOG" 2>&1 # 4. Log container health status docker ps --format "table {{.Names}}\t{{.Status}}\t{{.RunningFor}}" >> "$LOG" 2>&1 # 5. Log Redis memory docker exec harness-redis redis-cli INFO memory | grep used_memory_human >> "$LOG" 2>&1 echo "" >> "$LOG"