feat: Sistema de monitoreo base con logging y configuración dinámica

- Implementado monitor de procesos Node.js con detección automática
- Sistema de logging con niveles (Info, Warning, Error, Critical)
- ConfigManager para gestión dinámica de apps monitoreadas
- Interfaz web básica con escaneo de procesos
- Integración con API central para reportar estados
- User-Agent tracking para identificación de agentes
- Persistencia de configuración en JSON
- Logs almacenados en archivo con rotación
- Sistema modular: monitor, interface, logger, config

Estructura:
- src/main.rs: Orquestador principal
- src/monitor.rs: Monitoreo de procesos y envío a API
- src/interface.rs: Servidor web Axum con endpoints
- src/logger.rs: Sistema de logging a archivo y consola
- src/config.rs: Gestión de configuración persistente
- web/: Templates HTML para interfaz web
- config/: Configuración de apps monitoreadas
- logs/: Archivos de log del sistema

Features implementadas:
 Detección automática de procesos Node.js
 Monitoreo de CPU y RAM por proceso
 Reportes periódicos a API central (cada 60s)
 Interfaz web en puerto 8080
 Logs estructurados con timestamps
 Configuración dinámica sin reinicio
 Script de despliegue automatizado

Próximos pasos:
- Integración con systemd para control de procesos
- Dashboard mejorado con cards de apps
- Logs en tiempo real vía WebSocket
- Start/Stop/Restart de aplicaciones
This commit is contained in:
2026-01-11 23:14:09 -05:00
parent bc1953fce1
commit 3595e55a1e
20 changed files with 3465 additions and 0 deletions

65
desplegar_agent.sh Executable file
View File

@@ -0,0 +1,65 @@
#!/bin/bash
# --- CONFIGURACIÓN GLOBAL ---
BINARY_NAME="siax_monitor" # ← Cambié esto para que coincida con Cargo.toml
TARGET="x86_64-unknown-linux-gnu" # ← Cambié a gnu en lugar de musl
echo "📦 Compilando binario para Linux ($TARGET)..."
cargo build --release --target $TARGET
if [ $? -ne 0 ]; then
echo "❌ Error en la compilación."
exit 1
fi
# --- FUNCIÓN MAESTRA DE DESPLIEGUE ---
# Parámetros: IP, USUARIO, RUTA_DESTINO
deploy_to_server() {
local IP=$1
local USER=$2
local DEST_PATH=$3
echo "------------------------------------------------"
echo "📡 Desplegando en: $USER@$IP:$DEST_PATH"
# 1. Crear directorio y asegurar permisos
ssh $USER@$IP "mkdir -p $DEST_PATH"
# 2. Subir binario
scp target/$TARGET/release/$BINARY_NAME $USER@$IP:$DEST_PATH/
# 3. Hacer ejecutable
ssh $USER@$IP "chmod +x $DEST_PATH/$BINARY_NAME"
# 4. Configurar Systemd
echo "⚙️ Configurando servicio Systemd para $USER..."
ssh $USER@$IP "sudo bash -c 'cat <<EOF > /etc/systemd/system/siax_monitor.service
[Unit]
Description=SIAX Monitor Agent - $IP
After=network.target
[Service]
Type=simple
User=$USER
WorkingDirectory=$DEST_PATH
ExecStart=$DEST_PATH/$BINARY_NAME
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF'"
# 5. Reiniciar servicio
ssh $USER@$IP "sudo systemctl daemon-reload && sudo systemctl enable siax_monitor && sudo systemctl restart siax_monitor"
echo "✅ Servidor $IP configurado correctamente."
}
# --- LISTA PERSONALIZADA DE SERVIDORES ---
#deploy_to_server "192.168.1.140" "root" "/root/app"
deploy_to_server "192.168.10.145" "root" "/root/app"
deploy_to_server "192.168.10.150" "pablinux" "/home/pablinux/app"
deploy_to_server "192.168.10.160" "user_apps" "/home/user_apps/apps"
echo "------------------------------------------------"
echo "🎉 ¡Despliegue masivo completado!"