Skip to content

Sistema de monitorizacion en tiempo real con Java Spring Boot + Python + Docker

Notifications You must be signed in to change notification settings

DevJuanCR/SysAdmin-Monitor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tests

SysAdmin Monitor Dashboard

Dashboard

Sistema de monitorizacion en tiempo real que recoge metricas de CPU y RAM de varias maquinas y las envia a una API REST

Como funciona

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

Stack

  • 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

Como arrancarlo

Opcion A - Todo con Docker (un solo comando)

    docker compose up --build

Abre http://localhost:8080/index.html y el dashboard estara funcionando

Para parar:

    docker compose down

Opcion B - Desarrollo local (H2 en memoria)

Abrir el proyecto backend/ en IntelliJ y ejecutar MonitorApplication.java

Arrancar el agente:

    cd agent
    pip install -r requirements.txt
    python agent.py

Opcion C - Backend local + PostgreSQL en Docker

Levantar solo la base de datos:

    docker compose up postgres -d

Arrancar el backend con perfil de produccion:

    cd backend
    .\mvnw spring-boot:run "-Dspring-boot.run.profiles=prod"

Dashboard

Abrir http://localhost:8080/index.html en el navegador. Usar el selector de arriba para filtrar por maquina

Ejecutar tests

    cd backend
    .\mvnw test

API

POST /api/metrics

Envia 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}

GET /api/metrics

Devuelve las ultimas 20 metricas. Se puede filtrar por maquina con ?hostname=PC-01

GET /api/metrics/hosts

Devuelve la lista de maquinas que han enviado datos

Estado del proyecto

  • 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

About

Sistema de monitorizacion en tiempo real con Java Spring Boot + Python + Docker

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published