Sistema MLOps avanzado para detección de ciberataques en tiempo real con reentrenamiento automático, monitoreo continuo y auditoría completa.
- ✅ Ingesta y preprocesamiento automático de datos de red
- ✅ Entrenamiento de modelos de Machine Learning
- ✅ Despliegue automatizado con FastAPI y Docker
- ✅ Versionado de experimentos con MLflow
- ✅ Monitoreo y alertas en tiempo real
- ⚡ Reentrenamiento automático basado en métricas de rendimiento
- 📊 Detección de Data Drift con Evidently AI
- 🎯 Optimización continua del modelo
- 📈 Seguimiento de métricas y calidad del modelo
- 🔍 Simulación de tráfico de red en tiempo real
- ⚡ Predicciones instantáneas vía API REST
- 📊 Dashboard interactivo de monitoreo
- 🚨 Sistema de alertas configurables
- 📝 Logging estructurado completo
- 🔍 Trail de auditoría de todas las operaciones
- 📊 Reportes de seguridad y rendimiento
- 🗂️ Exportación de datos de auditoría
graph TB
A[Datos de Red CIC-UNSW-NB15] --> B[Ingestión de Datos]
B --> C[Preprocesamiento]
C --> D[Entrenamiento Modelo]
D --> E[Modelo Entrenado]
F[Simulación Tiempo Real] --> G[Buffer de Datos]
G --> H[Reentrenamiento Automático]
H --> E
E --> I[API FastAPI]
I --> J[Predicciones en Tiempo Real]
J --> K[Monitoreo Continuo]
K --> L[Detección de Drift]
K --> M[Alertas]
K --> N[Dashboard]
O[Logging y Auditoría] --> P[MLflow]
O --> Q[Logs del Sistema]
O --> R[Reportes]
- Python 3.8+
- Docker y Docker Compose
- Git
- 8GB+ RAM recomendados
- Espacio en disco: 5GB+
git clone https://github.com/juan-luis-gonzalez/mlops-project.git
cd mlops-projectpython -m venv venv
source venv/bin/activate # Linux/Mac
# venv\\Scripts\\activate # Windowspip install -r requirements.txt# Descargar dataset CIC-UNSW-NB15 y colocar en data_cybersecurity/
# Asegurar que existan:
# - data_cybersecurity/Data.csv
# - data_cybersecurity/Label.csvpython main_system.py --mode trainpython main_system.py --mode fullInicia todos los componentes: simulación, reentrenamiento, monitoreo y API.
python main_system.py --mode apiInicia solo el servidor API para predicciones.
python main_system.py --mode monitorInicia simulación y monitoreo sin API.
streamlit run dashboard.pyAbre dashboard web con métricas en tiempo real.
python deploy.py --step allRealiza el despliegue completo automático.
# 1. Construir imagen
python deploy.py --step build
# 2. Ejecutar contenedor
python deploy.py --step deploydocker-compose up -d- URL: http://localhost:8001
- Documentación: http://localhost:8001/docs
- Predicción: POST
/predict
- URL: http://localhost:5000
- Experimentos: Seguimiento de entrenamientos
- Modelos: Registro de versiones
- URL: http://localhost:8501
- Métricas: Tiempo real
- Alertas: Sistema de notificaciones
El sistema se configura mediante config.yml:
# Model configuration
model:
name: RandomForestClassifier
params:
n_estimators: 100
max_depth: 15
# Real-time simulation
real_time:
packets_per_second: 10
attack_probability: 0.15
# Auto-retraining
auto_retraining:
enabled: true
interval_hours: 6
performance_threshold: 0.85
# Monitoring
monitoring:
enabled: true
check_interval_minutes: 5
# Alerts
alerts:
enabled: true
enabled_channels: ['log', 'email', 'webhook']- Accuracy, Precision, Recall, F1-Score
- Métricas por clase
- ROC-AUC
- Data Drift
- Feature Distribution Changes
- Missing Values
- Latencia de predicciones
- Tasa de errores
- Uso de recursos
- Rendimiento: Degradación del modelo
- Seguridad: Alta tasa de ataques
- Sistema: Errores y fallos
- Datos: Drift detectado
- 📝 Logs estructurados
- 📧 Email (configurable)
- 💬 Webhook (Slack, Teams)
- 📊 Dashboard web
# Pruebas unitarias
python -m pytest tests/ -v
# Pruebas de integración
python tests/test_integration.py
# Coverage
python -m pytest --cov=steps tests/- Unitarias para cada componente
- Integración del pipeline completo
- Performance y carga
- Seguridad
- Componentes:
/logs/{component}.log - Auditoría:
/logs/audit.log - Rotación automática de archivos
- Predicciones realizadas
- Cambios de modelo
- Eventos de seguridad
- Cambios de configuración
# Exportar auditoría
python -c "
from steps.audit_logger import get_cybersecurity_logger
logger = get_cybersecurity_logger()
logger.export_audit_data('audit_data.json', 'json')
"- Modificar
config.yml:
model:
name: NombreDelModelo
params:
# hiperparámetros- Implementar en
steps/train.py
- Modificar
config.yml:
alerts:
email:
smtp_server: "smtp.gmail.com"
sender: "alerts@company.com"
recipients: ["admin@company.com"]- Modificar
steps/monitoring.py - Añadir nuevas métricas al dashboard
Modelo no carga:
# Reentrenar modelo
python main_system.py --mode trainAPI no responde:
# Verificar logs
tail -f logs/api_server.logAlta memoria RAM:
# Reducir batch_size en config.yml
# Limitar buffer_size en auto_retraining# Logs detallados
export PYTHONPATH=.
python main_system.py --mode full 2>&1 | tee debug.log- CPU: 4+ cores
- RAM: 8GB+
- Almacenamiento: SSD con 10GB+
- Red: Estable, baja latencia
- Latencia: <100ms por predicción
- Throughput: 100+ predicciones/segundo
- Disponibilidad: 99.9%+
- Fork del repositorio
- Feature branch:
git checkout -b feature/new-feature - Commit:
git commit -am 'Add new feature' - Push:
git push origin feature/new-feature - Pull Request
Copyright © 2025, Juan Lucas Gordillo Hernández
Publicado bajo la licencia Apache-2.0.
- Email: juaaanlu@gmail.com
- Dataset CIC-UNSW-NB15
- Framework MLflow
- Librería Evidently AI
- Framework FastAPI
🚀 Sistema listo para producción - Monitoreo 24/7 included! 🛡️