Sistema distribuido de monitoreo de almacenamiento con:
- Servidor central TCP + API REST.
- Dashboard web en tiempo real.
- Clientes regionales que reportan métricas de disco.
server: recibe métricas por socket TCP, guarda estado/historial y expone API.frontend: dashboard React + Vite para visualizar nodos y capacidad consolidada.client: nodo regional en Python o Node.js.
Puertos por defecto:
5000TCP para clientes.3001HTTP para API backend.5173HTTP para dashboard en desarrollo.
En laptop servidor:
- Node.js 18+.
- MongoDB local o remota.
En laptops cliente:
- Python 3.10+.
psutilinstalado.
cd server
npm installOpcional: crear archivo .env en server.
MONGO_URI=mongodb://127.0.0.1:27017/storage_cluster
TCP_PORT=5000
TCP_HOST=0.0.0.0
HTTP_PORT=3001
FAULT_TIMEOUT=30000cd frontend
npm installcd client
py -m pip install -r requirements.txtAbrir 3 terminales separadas.
Terminal 1, backend:
cd server
npm startTerminal 2, frontend:
cd frontend
npx vite --host 0.0.0.0Terminal 3, cliente de prueba:
cd client
py client.py --id regional-1 --host 127.0.0.1 --port 5000 --interval 5En la laptop servidor:
ipconfigUsar la direccion IPv4 de la red local, por ejemplo 192.168.1.4.
netsh advfirewall firewall add rule name="StorageCluster TCP 5000" dir=in action=allow protocol=TCP localport=5000
netsh advfirewall firewall add rule name="StorageCluster API 3001" dir=in action=allow protocol=TCP localport=3001
netsh advfirewall firewall add rule name="StorageCluster Frontend 5173" dir=in action=allow protocol=TCP localport=5173Copiar carpeta client a la otra laptop e instalar dependencias.
cd client
py -m pip install -r requirements.txt
py client.py --id regional-2 --host 192.168.1.4 --port 5000 --interval 5Puedes levantar varias terminales con IDs distintos para simular multiples nodos:
regional-1Oruroregional-2La Pazregional-3Santa Cruzregional-4Beniregional-5Tarijaregional-6Pandoregional-7Cochabambaregional-8Chuquisacaregional-9Potosi
Dashboard:
- Local:
http://localhost:5173 - Desde otra laptop:
http://IP_DEL_SERVIDOR:5173
API:
- Estado cluster:
http://IP_DEL_SERVIDOR:3001/api/status - Historial nodo:
http://IP_DEL_SERVIDOR:3001/api/history/regional-2?hours=1
Validaciones esperadas:
- El nodo aparece como
Activoal conectarse. - Si cierras cliente, pasa a
No Reportadespues del timeout. - Al conectar o desconectar USB/disco externo en una laptop cliente, la capacidad total del nodo y del cluster se actualiza sin reiniciar.
- Inicia backend, frontend y al menos un cliente.
- Abre dashboard.
- Conecta un pendrive o disco externo en la laptop donde corre el cliente.
- Espera el siguiente envio de metricas.
- Verifica incremento de
Unidades DetectadasyCapacidad Total. - Desconecta el dispositivo y valida que disminuya nuevamente.
Error WinError 10061 en cliente:
- Verifica que backend este corriendo.
- Verifica IP y puerto
5000. - Revisa reglas de firewall.
- Confirma que ambas laptops estan en la misma red.
Dashboard no carga:
- Asegura que frontend este levantado con
npx vite --host 0.0.0.0. - Prueba
http://localhost:5173en servidor. - Prueba
http://IP_DEL_SERVIDOR:5173en clientes.
No llegan metricas al dashboard:
- Revisa logs del backend.
- Confirma conectividad de MongoDB.
- Verifica que cada cliente use
--idunico.
Backend en modo desarrollo:
cd server
npm run devFrontend en modo desarrollo:
cd frontend
npm run devCliente con host remoto:
cd client
py client.py --id regional-3 --host IP_DEL_SERVIDOR --port 5000 --interval 5