ids.alfacom.it/deployment/debug_system.sh
marco370 661e945f57 Implement automatic database cleanup and schema updates
Adds scripts for automatic database log cleanup, schema migration application, and cron job setup. Modifies the update script to apply SQL migrations before pushing Drizzle schema.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 7a657272-55ba-4a79-9a2e-f1ed9bc7a528
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 9a659f15-d68a-4b7d-99f8-3eccc59afebe
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/449cf7c4-c97a-45ae-8234-e5c5b8d6a84f/7a657272-55ba-4a79-9a2e-f1ed9bc7a528/4LjHWWz
2025-11-21 16:49:13 +00:00

156 lines
5.7 KiB
Bash
Executable File

#!/bin/bash
# =============================================================================
# IDS - Debug Sistema Completo
# =============================================================================
# Verifica stato completo del sistema: database, servizi, log
# =============================================================================
# Colori
GREEN='\033[0;32m'
BLUE='\033[0;34m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m'
echo -e "${BLUE}"
echo "╔═══════════════════════════════════════════════╗"
echo "║ 🔍 DEBUG SISTEMA IDS ║"
echo "╚═══════════════════════════════════════════════╝"
echo -e "${NC}"
# Verifica DATABASE_URL
if [ -z "$DATABASE_URL" ]; then
echo -e "${RED}❌ DATABASE_URL non impostato${NC}"
echo -e "${YELLOW} Carica variabili: source /opt/ids/.env${NC}"
exit 1
fi
# 1. VERIFICA DATABASE
echo -e "\n${BLUE}═══ 1. VERIFICA DATABASE ═══${NC}"
echo -e "${BLUE}📊 Conta record per tabella:${NC}"
psql "$DATABASE_URL" << 'EOF'
SELECT 'network_logs' as tabella, COUNT(*) as record FROM network_logs
UNION ALL
SELECT 'detections', COUNT(*) FROM detections
UNION ALL
SELECT 'training_history', COUNT(*) FROM training_history
UNION ALL
SELECT 'routers', COUNT(*) FROM routers
UNION ALL
SELECT 'whitelist', COUNT(*) FROM whitelist
ORDER BY tabella;
EOF
echo -e "\n${BLUE}📋 Schema tabella routers:${NC}"
psql "$DATABASE_URL" -c "\d routers"
echo -e "\n${BLUE}📝 Ultimi 5 network_logs:${NC}"
psql "$DATABASE_URL" << 'EOF'
SELECT
timestamp,
router_name,
source_ip,
destination_ip,
protocol,
packet_length
FROM network_logs
ORDER BY timestamp DESC
LIMIT 5;
EOF
echo -e "\n${BLUE}📜 Training history:${NC}"
psql "$DATABASE_URL" << 'EOF'
SELECT
trained_at,
model_version,
records_processed,
features_count,
status,
notes
FROM training_history
ORDER BY trained_at DESC
LIMIT 5;
EOF
echo -e "\n${BLUE}🚨 Detections:${NC}"
psql "$DATABASE_URL" << 'EOF'
SELECT
detected_at,
source_ip,
risk_score,
anomaly_type,
blocked,
log_count
FROM detections
ORDER BY detected_at DESC
LIMIT 5;
EOF
# 2. VERIFICA SERVIZI
echo -e "\n${BLUE}═══ 2. STATO SERVIZI ═══${NC}"
echo -e "${BLUE}🔍 Processi attivi:${NC}"
ps aux | grep -E 'python.*main|npm.*dev|syslog_parser' | grep -v grep || echo -e "${YELLOW} Nessun servizio IDS attivo${NC}"
# 3. BACKEND PYTHON ML
echo -e "\n${BLUE}═══ 3. BACKEND PYTHON ML ═══${NC}"
if curl -s http://localhost:8000/health > /dev/null 2>&1; then
echo -e "${GREEN}✅ Backend Python attivo${NC}"
echo -e "${BLUE}📊 Statistiche ML:${NC}"
curl -s http://localhost:8000/stats | jq '.' || curl -s http://localhost:8000/stats
else
echo -e "${RED}❌ Backend Python NON risponde su porta 8000${NC}"
echo -e "${YELLOW} Verifica log: tail -50 /var/log/ids/backend.log${NC}"
fi
# 4. FRONTEND NODE.JS
echo -e "\n${BLUE}═══ 4. FRONTEND NODE.JS ═══${NC}"
if curl -s http://localhost:5000 > /dev/null 2>&1; then
echo -e "${GREEN}✅ Frontend Node attivo${NC}"
echo -e "${BLUE}📊 Test API:${NC}"
curl -s http://localhost:5000/api/stats | jq '.' || curl -s http://localhost:5000/api/stats
else
echo -e "${RED}❌ Frontend Node NON risponde su porta 5000${NC}"
echo -e "${YELLOW} Verifica log: tail -50 /var/log/ids/frontend.log${NC}"
fi
# 5. SYSLOG PARSER
echo -e "\n${BLUE}═══ 5. SYSLOG PARSER ═══${NC}"
if ps aux | grep -E 'syslog_parser\.py' | grep -v grep > /dev/null; then
echo -e "${GREEN}✅ Syslog Parser attivo${NC}"
echo -e "${BLUE}📝 Ultimi log (parser):${NC}"
tail -20 /var/log/ids/syslog_parser.log
else
echo -e "${RED}❌ Syslog Parser NON attivo${NC}"
echo -e "${YELLOW} Avvia: cd /opt/ids/python_ml && nohup python syslog_parser.py > /var/log/ids/syslog_parser.log 2>&1 &${NC}"
fi
# 6. LOG ERRORI
echo -e "\n${BLUE}═══ 6. ERRORI RECENTI ═══${NC}"
echo -e "${BLUE}🔴 Errori backend Python:${NC}"
tail -50 /var/log/ids/backend.log | grep -i error | tail -10 || echo -e "${GREEN} Nessun errore${NC}"
echo -e "\n${BLUE}🔴 Errori frontend Node:${NC}"
tail -50 /var/log/ids/frontend.log | grep -i "\[DB ERROR\]" | tail -10 || echo -e "${GREEN} Nessun errore${NC}"
# 7. RIEPILOGO
echo -e "\n${BLUE}╔═══════════════════════════════════════════════╗${NC}"
echo -e "${BLUE}║ 📋 RIEPILOGO ║${NC}"
echo -e "${BLUE}╚═══════════════════════════════════════════════╝${NC}"
LOGS_COUNT=$(psql "$DATABASE_URL" -t -c "SELECT COUNT(*) FROM network_logs" 2>/dev/null | xargs)
DETECTIONS_COUNT=$(psql "$DATABASE_URL" -t -c "SELECT COUNT(*) FROM detections" 2>/dev/null | xargs)
TRAINING_COUNT=$(psql "$DATABASE_URL" -t -c "SELECT COUNT(*) FROM training_history" 2>/dev/null | xargs)
echo -e "${BLUE}Database:${NC}"
echo -e " • Network logs: ${YELLOW}$LOGS_COUNT${NC}"
echo -e " • Detections: ${YELLOW}$DETECTIONS_COUNT${NC}"
echo -e " • Training history: ${YELLOW}$TRAINING_COUNT${NC}"
echo ""
echo -e "${BLUE}🔧 COMANDI UTILI:${NC}"
echo -e " • Riavvia tutto: ${YELLOW}sudo -u ids /opt/ids/deployment/restart_all.sh${NC}"
echo -e " • Test training: ${YELLOW}curl -X POST http://localhost:8000/train -H 'Content-Type: application/json' -d '{\"max_records\": 1000}'${NC}"
echo -e " • Log frontend: ${YELLOW}tail -f /var/log/ids/frontend.log${NC}"
echo -e " • Log backend: ${YELLOW}tail -f /var/log/ids/backend.log${NC}"
echo ""