Sistema de monitorizacion en tiempo real que recoge metricas de CPU y RAM de varias maquinas y las envia a una API REST
Un script en Python lee el estado del sistema (CPU y RAM) cada 5 segundos usando psutil y lo envia por POST a un backend en Java Spring Boot que lo guarda en base de datos. Un frontend con Chart.js muestra los graficos en tiempo real. Soporta multiples maquinas con un selector en el dashboard
- Backend: Java 21 + Spring Boot + Spring Data JPA
- Base de datos: PostgreSQL 16
- Agente: Python 3 +
psutil+requests - Frontend: HTML5 + CSS3 + JavaScript +
Chart.js - Testing: JUnit 5 + Mockito + MockMvc
- CI: GitHub Actions
- Infraestructura: Docker + Docker Compose
docker compose up --buildAbre http://localhost:8080/index.html y el dashboard estara funcionando
Para parar:
docker compose downAbrir el proyecto backend/ en IntelliJ y ejecutar MonitorApplication.java
Arrancar el agente:
cd agent
pip install -r requirements.txt
python agent.pyLevantar solo la base de datos:
docker compose up postgres -dArrancar el backend con perfil de produccion:
cd backend
.\mvnw spring-boot:run "-Dspring-boot.run.profiles=prod"Abrir http://localhost:8080/index.html en el navegador. Usar el selector de arriba para filtrar por maquina
cd backend
.\mvnw testEnvia una metrica. Todos los campos son obligatorios. cpuUsage y ramUsage deben estar entre 0 y 100
{"hostname": "PC-01", "cpuUsage": 45.2, "ramUsage": 67.8}
Devuelve las ultimas 20 metricas. Se puede filtrar por maquina con ?hostname=PC-01
Devuelve la lista de maquinas que han enviado datos
- API REST con endpoints POST y GET
- Agente Python que envia metricas automaticamente
- Soporte multi-maquina con selector en el dashboard
- PostgreSQL con Docker para produccion
- H2 en memoria para desarrollo
- Frontend con graficos de CPU y RAM en tiempo real
- Perfiles de Spring (dev/prod/docker)
- Validacion de datos con Bean Validation
- Manejo global de errores
- Tests unitarios y de integracion
- CI con GitHub Actions
- Proyecto completamente dockerizado
