🖥️ Microservicio HTTP desarrollado en C que proporciona métricas del sistema en tiempo real usando sockets TCP con detección automática de sistema operativo.
- 🔍 Detección automática de SO (macOS/Linux)
- 📊 Métricas en tiempo real: CPU, RAM, Disco, Procesos, Red
- 🚀 NUEVO: Análisis de procesos top - Ideal para servidores remotos
- 🏗️ Arquitectura modular profesional
- ⚡ APIs nativas para máximo rendimiento
- 🌐 Servidor HTTP con múltiples endpoints
- 🔧 CLI flags para análisis directo
- 🧪 Cliente de pruebas incluido
- ⚙️ Build system avanzado
- Top 10 procesos por CPU: Identifica procesos que más consumen CPU
- Top 10 procesos por memoria: Encuentra memory leaks y procesos pesados
- Top 10 procesos por disco: Analiza actividad I/O en tiempo real
- Análisis remoto: Perfecto para monitoreo de servidores via SSH
- Endpoint HTTP:
/processes/top
para integración con dashboards
- Análisis de servidores remotos:
ssh server './system_monitor --processes'
- Monitoreo automático: APIs HTTP para dashboards
- Troubleshooting: Identificar procesos problemáticos rápidamente
- Optimización: Detectar cuellos de botella en producción
# Clonar el repositorio
git clone https://github.com/JulioCesarPreciado/system-monitor-microservice.git
cd system-monitor-microservice
# Compilar
make
# Ejecutar
./system_monitor
{
"timestamp": "Sun Jul 20 16:54:33 2025",
"platform": "macOS",
"hardware": {
"cpu": {
"model": "Apple M3 Pro",
"usage": "13.0%"
},
"memory": {
"total": "18.00 GB",
"used": "11.54 GB",
"free": "6.46 GB"
},
"disk": {
"total": "460.43 GB",
"used": "245.62 GB",
"free": "214.81 GB"
}
},
"system": {
"processes": 665,
"network": {
"ip": "192.168.1.114",
"status": "25 network interfaces active"
}
}
}
# Análisis local
./system_monitor --processes
# Análisis remoto via SSH
ssh usuario@servidor './system_monitor --processes'
# Usando el script automatizado
./remote_analysis.sh servidor.example.com admin 22
# Iniciar servidor
./system_monitor &
# Obtener análisis de procesos top
curl http://localhost:8080/processes/top | jq
# Respuesta ejemplo (resumida):
{
"timestamp": "Sun Jul 20 18:32:52 2025",
"platform": "macOS",
"analysis": {
"top_cpu_processes": [
{
"pid": 312,
"name": "/System/Library/CoreServices/powerd.bundle/powerd",
"user": "root",
"cpu_usage": "0.4%"
}
// ... 9 procesos más
],
"top_memory_processes": [
{
"pid": 299,
"name": "/usr/libexec/logd",
"user": "root",
"memory_usage": "42.2MB"
}
// ... 9 procesos más
],
"top_disk_processes": [
// Procesos con mayor actividad I/O
]
},
"summary": {
"total_analyzed_processes": 30,
"platform_capabilities": "Basic process analysis available"
}
}
# Obtener ayuda de la API
curl http://localhost:8080/help | jq
make # Compilar todo
make run # Ejecutar servidor
make test # Pruebas básicas
make clean # Limpiar archivos
make help # Ver todas las opciones
system-monitor-microservice/
├── include/ # Headers (.h)
│ ├── system_info.h # Estructuras y funciones de sistema
│ ├── server.h # Servidor HTTP
│ └── platform.h # Detección de plataforma
├── src/ # Código principal
│ ├── system_info.c # Recolección de métricas y procesos
│ └── server.c # Servidor HTTP con múltiples endpoints
├── utils/ # Utilidades
│ └── platform.c # Detección automática de SO
├── main.c # Punto de entrada con nuevos flags
├── remote_analysis.sh # Script para análisis remoto
└── Makefile # Build system avanzado
# Iniciar servidor
./system_monitor
# Endpoints disponibles:
curl http://localhost:8080/ # Métricas básicas
curl http://localhost:8080/processes/top # Análisis de procesos ⭐ NUEVO
curl http://localhost:8080/help # Documentación API
./system_monitor --help # Ayuda completa
./system_monitor --version # Información de versión
./system_monitor --platform # Info de plataforma
./system_monitor --processes # Análisis de procesos top ⭐ NUEVO
# Método 1: SSH directo
ssh admin@prod-server './system_monitor --processes'
# Método 2: Script automatizado
./remote_analysis.sh prod-server admin 2222
# Método 3: API HTTP remota
ssh admin@prod-server './system_monitor &'
curl http://prod-server:8080/processes/top
./client_test
./system_monitor --version # Versión
./system_monitor --platform # Info del SO
- SO: macOS o Linux
- Compilador: GCC o Clang
- Estándar: C99
- Modular: Separación clara de responsabilidades
- Multiplataforma: Detección automática de APIs
- Eficiente: Uso de APIs nativas del sistema
- Extensible: Fácil agregar nuevas métricas
Este proyecto mantiene un archivo único RELEASE_NOTES.md con el historial completo de versiones. Para agregar una nueva versión:
# Usar el script automatizado
./update_release_notes.sh v1.2.0 "Descripción de la nueva versión"
# Editar el archivo para agregar detalles específicos
# Hacer commit y crear release
git add RELEASE_NOTES.md
git commit -m "docs: Update release notes for v1.2.0"
gh release create v1.2.0 --notes-file RELEASE_NOTES.md
Seguimos Semantic Versioning:
- MAJOR (v2.0.0): Cambios incompatibles en la API
- MINOR (v1.1.0): Nuevas funcionalidades compatibles
- PATCH (v1.0.1): Correcciones de bugs
¡Las contribuciones son bienvenidas! Por favor:
- Fork el proyecto
- Crea tu feature branch (
git checkout -b feature/nueva-funcionalidad
) - Commit tus cambios (
git commit -m 'Agregar nueva funcionalidad'
) - Push al branch (
git push origin feature/nueva-funcionalidad
) - Abre un Pull Request
- 📖 TECHNICAL_DOCS.md - Documentación técnica detallada y guía de desarrollo
- 🧪 EXAMPLES.md - Ejemplos avanzados de uso e integración
- ⚙️ Makefile - Ver
make help
para todos los comandos disponibles
Este proyecto está bajo la Licencia MIT.
Julio César Preciado - @JulioCesarPreciado
⭐ ¡Dale una estrella si te gustó el proyecto!