Compare commits
No commits in common. "44be5e232ec148e9cb764d6731e56abe3b9614de" and "6ebab9e23e2e0290f03c6ae82c4954c477bea914" have entirely different histories.
44be5e232e
...
6ebab9e23e
@ -1,41 +0,0 @@
|
|||||||
Cerca il watchdog che riavvia il backend
|
|
||||||
grep -r "Backend Python NON attivo" /opt/ids/ --include="*.sh"
|
|
||||||
grep -r "Backend Python NON attivo" /etc/cron* /var/spool/cron/
|
|
||||||
|
|
||||||
# Verifica cron jobs attivi
|
|
||||||
crontab -l
|
|
||||||
crontab -l -u ids
|
|
||||||
|
|
||||||
# Verifica timer systemd
|
|
||||||
systemctl list-timers --all | grep ids
|
|
||||||
/opt/ids/deployment/check_backend.sh: echo "[$(date)] Backend Python NON attivo, riavvio..." >> "$LOG_FILE"
|
|
||||||
# ============================================
|
|
||||||
# SISTEMA IDS - CONFIGURAZIONE AUTOMATICA
|
|
||||||
# ============================================
|
|
||||||
|
|
||||||
# Training ML ogni 12 ore (alle 00:00 e 12:00)
|
|
||||||
0 */12 * * * /opt/ids/deployment/cron_train.sh
|
|
||||||
|
|
||||||
# Detection automatica ogni 5 minuti
|
|
||||||
*/3 * * * * /opt/ids/deployment/cron_detect.sh
|
|
||||||
|
|
||||||
# Verifica processo backend Python ogni 5 minuti (riavvia se non attivo)
|
|
||||||
*/5 * * * * /opt/ids/deployment/check_backend.sh >> /var/log/ids/cron.log 2>&1
|
|
||||||
|
|
||||||
# Verifica processo frontend ogni 5 minuti (riavvia se non attivo)
|
|
||||||
*/5 * * * * /opt/ids/deployment/check_frontend.sh >> /var/log/ids/cron.log 2>&1
|
|
||||||
|
|
||||||
# Pulizia log settimanale (ogni domenica alle 02:00)
|
|
||||||
0 2 * * 0 find /var/log/ids -name "*.log" -size +100M -exec truncate -s 50M {} \; >> /var/log/ids/cron.log 2>&1
|
|
||||||
|
|
||||||
# Restart completo del sistema ogni settimana (domenica alle 03:00)
|
|
||||||
0 3 * * 0 /opt/ids/deployment/restart_all.sh >> /var/log/ids/cron.log 2>&1
|
|
||||||
|
|
||||||
# Backup database giornaliero (alle 04:00)
|
|
||||||
0 4 * * * /opt/ids/deployment/backup_db.sh >> /var/log/ids/cron.log 2>&1
|
|
||||||
0 3 * * * /opt/ids/deployment/cleanup_database.sh >> /var/log/ids/cleanup.log 2>&1
|
|
||||||
Mon 2026-02-16 13:05:00 CET 4min 9s left Mon 2026-02-16 12:05:00 CET 55min ago ids-analytics-aggregator.timer ids-analytics-aggregator.service
|
|
||||||
Mon 2026-02-16 13:14:33 CET 13min left Mon 2026-02-16 12:13:57 CET 46min ago ids-cleanup.timer ids-cleanup.service
|
|
||||||
Mon 2026-02-23 03:00:00 CET 6 days left Mon 2026-02-16 03:00:00 CET 10h ago ids-ml-training.timer ids-ml-training.service
|
|
||||||
- - Mon 2026-02-16 12:48:47 CET 12min ago ids-auto-block.timer ids-auto-block.service
|
|
||||||
- - Mon 2026-02-16 13:00:01 CET 48s ago ids-list-fetcher.timer ids-list-fetcher.service
|
|
||||||
@ -1,59 +0,0 @@
|
|||||||
systemctl stop ids-ml-backend
|
|
||||||
[root@ids ~]# systemctl start ids-ml-backend
|
|
||||||
[root@ids ~]# systemctl status ids-ml-backend
|
|
||||||
● ids-ml-backend.service - IDS ML Backend (FastAPI)
|
|
||||||
Loaded: loaded (/etc/systemd/system/ids-ml-backend.service; enabled; preset: disabled)
|
|
||||||
Active: active (running) since Mon 2026-02-16 12:59:19 CET; 4s ago
|
|
||||||
Main PID: 3600 (python3)
|
|
||||||
Tasks: 26 (limit: 100409)
|
|
||||||
Memory: 157.6M (max: 2.0G available: 1.8G)
|
|
||||||
CPU: 3.936s
|
|
||||||
CGroup: /system.slice/ids-ml-backend.service
|
|
||||||
└─3600 /opt/ids/python_ml/venv/bin/python3 main.py
|
|
||||||
|
|
||||||
Feb 16 12:59:19 ids.alfacom.it systemd[1]: Started IDS ML Backend (FastAPI).
|
|
||||||
[root@ids ~]# cat /etc/systemd/system/ids-ml-backend.service
|
|
||||||
[Unit]
|
|
||||||
Description=IDS ML Backend (FastAPI)
|
|
||||||
After=network.target postgresql-16.service
|
|
||||||
Wants=postgresql-16.service
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
User=ids
|
|
||||||
Group=ids
|
|
||||||
WorkingDirectory=/opt/ids/python_ml
|
|
||||||
EnvironmentFile=/opt/ids/.env
|
|
||||||
|
|
||||||
# Comando esecuzione (usa virtual environment)
|
|
||||||
ExecStart=/opt/ids/python_ml/venv/bin/python3 main.py
|
|
||||||
|
|
||||||
# Restart automatico sempre (non solo on-failure)
|
|
||||||
Restart=always
|
|
||||||
RestartSec=10
|
|
||||||
StartLimitInterval=300
|
|
||||||
StartLimitBurst=5
|
|
||||||
|
|
||||||
# Limiti risorse
|
|
||||||
LimitNOFILE=65536
|
|
||||||
MemoryMax=2G
|
|
||||||
|
|
||||||
# Logging
|
|
||||||
StandardOutput=append:/var/log/ids/ml_backend.log
|
|
||||||
StandardError=append:/var/log/ids/ml_backend.log
|
|
||||||
SyslogIdentifier=ids-ml-backend
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
[root@ids ~]# tail -f /var/log/ids/backend.log
|
|
||||||
🚀 Starting IDS API on http://0.0.0.0:8000
|
|
||||||
📚 Docs available at http://0.0.0.0:8000/docs
|
|
||||||
[Mon Feb 16 12:56:12 CET 2026] Backend Python NON attivo, riavvio...
|
|
||||||
[Mon Feb 16 12:56:14 CET 2026] Backend riavviato con PID: 3453
|
|
||||||
Traceback (most recent call last):
|
|
||||||
File "/opt/ids/python_ml/main.py", line 21, in <module>
|
|
||||||
from ml_hybrid_detector import MLHybridDetector
|
|
||||||
File "/opt/ids/python_ml/ml_hybrid_detector.py", line 13, in <module>
|
|
||||||
from xgboost import XGBClassifier
|
|
||||||
ModuleNotFoundError: No module named 'xgboost'
|
|
||||||
|
|
||||||
@ -2,7 +2,7 @@
|
|||||||
-- PostgreSQL database dump
|
-- PostgreSQL database dump
|
||||||
--
|
--
|
||||||
|
|
||||||
\restrict 9ZJC58VvaMhFtxysGUfqAD6tVv0Q9ukBv5rvK14fndwaalwIHn442ILA7auN2Uq
|
\restrict IQNXQ3AdZIKCf43dmd4ux9afKlXfTublRgIkiThbrdwGm8ObGL1XepBpgAQJoeC
|
||||||
|
|
||||||
-- Dumped from database version 16.11 (df20cf9)
|
-- Dumped from database version 16.11 (df20cf9)
|
||||||
-- Dumped by pg_dump version 16.10
|
-- Dumped by pg_dump version 16.10
|
||||||
@ -387,5 +387,5 @@ ALTER TABLE ONLY public.public_blacklist_ips
|
|||||||
-- PostgreSQL database dump complete
|
-- PostgreSQL database dump complete
|
||||||
--
|
--
|
||||||
|
|
||||||
\unrestrict 9ZJC58VvaMhFtxysGUfqAD6tVv0Q9ukBv5rvK14fndwaalwIHn442ILA7auN2Uq
|
\unrestrict IQNXQ3AdZIKCf43dmd4ux9afKlXfTublRgIkiThbrdwGm8ObGL1XepBpgAQJoeC
|
||||||
|
|
||||||
|
|||||||
@ -1,28 +1,34 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# CHECK BACKEND - Verifica e riavvia backend Python se necessario
|
# CHECK BACKEND - Verifica e riavvia backend Python se necessario
|
||||||
# Usa systemctl per gestire il servizio (con virtual environment)
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
|
|
||||||
|
PROCESS_NAME="python3.11 python_ml/main.py"
|
||||||
|
PID_FILE="/var/log/ids/backend.pid"
|
||||||
LOG_FILE="/var/log/ids/backend.log"
|
LOG_FILE="/var/log/ids/backend.log"
|
||||||
|
WORK_DIR="/opt/ids"
|
||||||
|
|
||||||
mkdir -p /var/log/ids
|
mkdir -p /var/log/ids
|
||||||
|
|
||||||
# Check if systemd service is active
|
# Check if backend is running
|
||||||
if systemctl is-active --quiet ids-ml-backend; then
|
if pgrep -f "$PROCESS_NAME" > /dev/null; then
|
||||||
|
# Backend running, update PID
|
||||||
|
pgrep -f "$PROCESS_NAME" > "$PID_FILE"
|
||||||
exit 0
|
exit 0
|
||||||
else
|
else
|
||||||
echo "[$(date)] Backend Python NON attivo, riavvio via systemctl..." >> "$LOG_FILE"
|
echo "[$(date)] Backend Python NON attivo, riavvio..." >> "$LOG_FILE"
|
||||||
|
|
||||||
# Restart via systemctl (usa il venv configurato nel service)
|
# Kill any orphaned Python processes
|
||||||
systemctl restart ids-ml-backend
|
pkill -f "python_ml/main.py" 2>/dev/null
|
||||||
|
|
||||||
# Wait for startup
|
# Wait a moment
|
||||||
sleep 3
|
sleep 2
|
||||||
|
|
||||||
if systemctl is-active --quiet ids-ml-backend; then
|
# Start backend
|
||||||
echo "[$(date)] Backend riavviato con successo via systemctl" >> "$LOG_FILE"
|
cd "$WORK_DIR/python_ml"
|
||||||
else
|
nohup /usr/bin/python3.11 main.py >> "$LOG_FILE" 2>&1 &
|
||||||
echo "[$(date)] ERRORE: Backend non si è avviato. Controlla: journalctl -u ids-ml-backend" >> "$LOG_FILE"
|
NEW_PID=$!
|
||||||
fi
|
echo $NEW_PID > "$PID_FILE"
|
||||||
|
|
||||||
|
echo "[$(date)] Backend riavviato con PID: $NEW_PID" >> "$LOG_FILE"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@ -1,28 +1,41 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# CHECK FRONTEND - Verifica e riavvia frontend Node.js se necessario
|
# CHECK FRONTEND - Verifica e riavvia frontend Node.js se necessario
|
||||||
# Usa systemctl per gestire il servizio
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
|
|
||||||
|
PROCESS_NAME="npm run dev"
|
||||||
|
PID_FILE="/var/log/ids/frontend.pid"
|
||||||
LOG_FILE="/var/log/ids/frontend.log"
|
LOG_FILE="/var/log/ids/frontend.log"
|
||||||
|
WORK_DIR="/opt/ids"
|
||||||
|
|
||||||
mkdir -p /var/log/ids
|
mkdir -p /var/log/ids
|
||||||
|
|
||||||
# Check if systemd service is active
|
# Check if frontend is running
|
||||||
if systemctl is-active --quiet ids-frontend; then
|
if pgrep -f "vite" > /dev/null; then
|
||||||
|
# Frontend running, update PID
|
||||||
|
pgrep -f "vite" > "$PID_FILE"
|
||||||
exit 0
|
exit 0
|
||||||
else
|
else
|
||||||
echo "[$(date)] Frontend Node NON attivo, riavvio via systemctl..." >> "$LOG_FILE"
|
echo "[$(date)] Frontend Node NON attivo, riavvio..." >> "$LOG_FILE"
|
||||||
|
|
||||||
# Restart via systemctl
|
# Kill any orphaned Node processes
|
||||||
systemctl restart ids-frontend
|
pkill -f "vite" 2>/dev/null
|
||||||
|
pkill -f "npm run dev" 2>/dev/null
|
||||||
|
|
||||||
# Wait for startup
|
# Wait a moment
|
||||||
sleep 3
|
sleep 2
|
||||||
|
|
||||||
if systemctl is-active --quiet ids-frontend; then
|
# Start frontend with environment variables from .env
|
||||||
echo "[$(date)] Frontend riavviato con successo via systemctl" >> "$LOG_FILE"
|
cd "$WORK_DIR"
|
||||||
|
if [ -f "$WORK_DIR/.env" ]; then
|
||||||
|
# Load .env and start npm with those variables
|
||||||
|
nohup env $(cat "$WORK_DIR/.env" | grep -v '^#' | xargs) npm run dev >> "$LOG_FILE" 2>&1 &
|
||||||
else
|
else
|
||||||
echo "[$(date)] ERRORE: Frontend non si è avviato. Controlla: journalctl -u ids-frontend" >> "$LOG_FILE"
|
# Fallback: start without .env (will use system env vars)
|
||||||
|
nohup npm run dev >> "$LOG_FILE" 2>&1 &
|
||||||
fi
|
fi
|
||||||
|
NEW_PID=$!
|
||||||
|
echo $NEW_PID > "$PID_FILE"
|
||||||
|
|
||||||
|
echo "[$(date)] Frontend riavviato con PID: $NEW_PID" >> "$LOG_FILE"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@ -1,17 +1,17 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# =========================================================
|
# =========================================================
|
||||||
# RESTART ALL - Riavvio completo sistema IDS
|
# RESTART ALL - Riavvio completo sistema IDS
|
||||||
# Usa systemctl per gestire tutti i servizi
|
|
||||||
# =========================================================
|
# =========================================================
|
||||||
|
|
||||||
LOG_FILE="/var/log/ids/cron.log"
|
LOG_FILE="/var/log/ids/cron.log"
|
||||||
|
|
||||||
echo "$(date): === RESTART SETTIMANALE SISTEMA IDS ===" >> "$LOG_FILE"
|
echo "$(date): === RESTART SETTIMANALE SISTEMA IDS ===" >> "$LOG_FILE"
|
||||||
|
|
||||||
# Stop all services via systemctl
|
# Stop all services
|
||||||
echo "$(date): Arresto servizi..." >> "$LOG_FILE"
|
echo "$(date): Arresto servizi..." >> "$LOG_FILE"
|
||||||
systemctl stop ids-ml-backend 2>/dev/null
|
pkill -f "python_ml/main.py"
|
||||||
systemctl stop ids-frontend 2>/dev/null
|
pkill -f "vite"
|
||||||
|
pkill -f "npm run dev"
|
||||||
|
|
||||||
sleep 5
|
sleep 5
|
||||||
|
|
||||||
@ -20,23 +20,10 @@ echo "$(date): Pulizia file temporanei..." >> "$LOG_FILE"
|
|||||||
rm -f /var/log/ids/*.pid
|
rm -f /var/log/ids/*.pid
|
||||||
find /tmp -name "ids_*" -mtime +7 -delete 2>/dev/null
|
find /tmp -name "ids_*" -mtime +7 -delete 2>/dev/null
|
||||||
|
|
||||||
# Restart services via systemctl
|
# Restart services
|
||||||
echo "$(date): Riavvio servizi..." >> "$LOG_FILE"
|
echo "$(date): Riavvio servizi..." >> "$LOG_FILE"
|
||||||
systemctl start ids-ml-backend
|
/opt/ids/deployment/check_backend.sh >> "$LOG_FILE" 2>&1
|
||||||
sleep 3
|
sleep 3
|
||||||
systemctl start ids-frontend
|
/opt/ids/deployment/check_frontend.sh >> "$LOG_FILE" 2>&1
|
||||||
|
|
||||||
# Verify
|
|
||||||
if systemctl is-active --quiet ids-ml-backend; then
|
|
||||||
echo "$(date): ML Backend avviato con successo" >> "$LOG_FILE"
|
|
||||||
else
|
|
||||||
echo "$(date): ERRORE: ML Backend non si è avviato" >> "$LOG_FILE"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if systemctl is-active --quiet ids-frontend; then
|
|
||||||
echo "$(date): Frontend avviato con successo" >> "$LOG_FILE"
|
|
||||||
else
|
|
||||||
echo "$(date): ERRORE: Frontend non si è avviato" >> "$LOG_FILE"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "$(date): Restart completato!" >> "$LOG_FILE"
|
echo "$(date): Restart completato!" >> "$LOG_FILE"
|
||||||
|
|||||||
16
version.json
16
version.json
@ -1,13 +1,7 @@
|
|||||||
{
|
{
|
||||||
"version": "1.0.115",
|
"version": "1.0.114",
|
||||||
"lastUpdate": "2026-02-16T14:40:14.777Z",
|
"lastUpdate": "2026-02-16T11:54:24.557Z",
|
||||||
"changelog": [
|
"changelog": [
|
||||||
{
|
|
||||||
"version": "1.0.115",
|
|
||||||
"date": "2026-02-16",
|
|
||||||
"type": "patch",
|
|
||||||
"description": "Deployment automatico v1.0.115"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"version": "1.0.114",
|
"version": "1.0.114",
|
||||||
"date": "2026-02-16",
|
"date": "2026-02-16",
|
||||||
@ -301,6 +295,12 @@
|
|||||||
"date": "2025-11-24",
|
"date": "2025-11-24",
|
||||||
"type": "patch",
|
"type": "patch",
|
||||||
"description": "Deployment automatico v1.0.66"
|
"description": "Deployment automatico v1.0.66"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"version": "1.0.65",
|
||||||
|
"date": "2025-11-24",
|
||||||
|
"type": "patch",
|
||||||
|
"description": "Deployment automatico v1.0.65"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user