Blog

SIAX Monitor: Sistema de Monitoreo y Gestión de Aplicaciones Node.js y Python

En el mundo del desarrollo moderno, gestionar múltiples aplicaciones Node.js y Python en servidores de producción puede convertirse rápidamente en un dolor de cabeza. SIAX Monitor nace como una solución elegante, ligera y poderosa para este problema, aprovechando la velocidad y seguridad de Rust.

¿Qué es SIAX Monitor?

SIAX Monitor es un agente de monitoreo inteligente diseñado específicamente para entornos Linux con systemd. A diferencia de soluciones enterprise como Prometheus o Grafana que pueden resultar excesivas para equipos pequeños, SIAX Monitor ofrece exactamente lo que necesitas sin complicaciones innecesarias.

Desarrollado completamente en Rust, combina alto rendimiento con un consumo mínimo de recursos. El proyecto utiliza tecnologías modernas como Tokio para async runtime, Axum para el servidor web, y se integra nativamente con systemd y journalctl.

Características Principales

🔍 Escaneo Automático de Procesos

El sistema detecta automáticamente procesos Node.js y Python en ejecución, recopilando información detallada como:

  • PID y nombre del proceso
  • Usuario propietario
  • Uso de CPU en tiempo real
  • Consumo de memoria RAM
  • Comando completo de ejecución

⚙️ Gestión de Ciclo de Vida

Control total sobre tus aplicaciones mediante la API REST:

  • POST /api/apps – Registrar nueva aplicación
  • POST /api/apps/:name/start – Iniciar servicio
  • POST /api/apps/:name/stop – Detener servicio
  • POST /api/apps/:name/restart – Reiniciar servicio
  • GET /api/apps/:name/status – Consultar estado

El sistema incluye rate limiting (1 operación/segundo por app) para evitar abusos y validaciones de seguridad en todos los endpoints.

📝 Logs en Tiempo Real

Uno de los puntos más fuertes es el streaming de logs vía WebSocket. Conectándote al endpoint ws://localhost:8080/api/apps/:name/logs, recibes logs en tiempo real desde journalctl sin necesidad de SSH al servidor.

La interfaz web incluye un visor tipo terminal con:

  • Auto-scroll inteligente
  • Colores para niveles de log (ERROR, WARN, INFO)
  • Timestamps formateados
  • Botón para pausar/reanudar

🛡️ Seguridad y Validaciones

SIAX Monitor toma la seguridad en serio:

  • Validación estricta de paths de trabajo (previene directory traversal)
  • Lista blanca de usuarios permitidos
  • Configuración automatizada de sudoers para systemctl
  • Hardening de servicios systemd generados
  • Rate limiting en operaciones críticas

🎨 Dashboard Moderno

La interfaz web está construida con Tailwind CSS en tema oscuro (#101922 de fondo, #137fec como color primario). Incluye:

  • / – Dashboard con estadísticas y lista de apps
  • /scan – Escaneo de procesos activos
  • /select – Selección de procesos para registrar
  • /register – Formulario de registro manual
  • /logs – Visor de logs en tiempo real
  • /api-docs – Documentación completa de la API

¿Cómo Funciona?

Arquitectura Multi-Threaded

SIAX Monitor utiliza una arquitectura basada en tres componentes principales:

1. Monitor en Background

Un thread dedicado ejecuta cada 60 segundos para:

  • Recopilar métricas de CPU y RAM usando sysinfo
  • Reconciliar estados entre sysinfo y systemd
  • Reportar al cloud API de SIAX (opcional)

2. Servidor Web Unificado

Un servidor HTTP en puerto 8080 que fusiona:

  • API REST (JSON responses)
  • WebSocket para logs
  • Interfaz web HTML estática
  • Archivos estáticos (favicon, logos)

Esto elimina problemas de CORS al servir todo desde el mismo origen.

3. Integración Systemd

El módulo systemd_manager genera archivos .service automáticamente con:

[Unit]
Description=App gestionada por SIAX Monitor
After=network.target

[Service]
Type=simple
User=app-user
WorkingDirectory=/opt/app
ExecStart=/usr/bin/node server.js
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

Stack Tecnológico

El proyecto está construido sobre tecnologías modernas y probadas:

  • Rust – Lenguaje core (seguridad de memoria, velocidad)
  • Tokio – Runtime asíncrono
  • Axum 0.7 – Framework web moderno
  • Serde – Serialización JSON
  • Sysinfo – Información del sistema
  • Tower-HTTP – Middleware (CORS, static files)
  • DashMap – HashMap thread-safe
  • Tailwind CSS – Estilos del frontend
  • Material Symbols – Iconos

Ventajas y Consideraciones

✅ Ventajas

  • Alto Rendimiento: Rust ofrece velocidad cercana a C con seguridad de memoria garantizada
  • Ligero: Binario compilado de ~15MB, consumo mínimo de RAM
  • Sin Dependencias: No requiere Node.js, Python o base de datos
  • Integración Nativa: Aprovecha systemd y journalctl del sistema
  • Fácil Despliegue: Single binary + script de instalación
  • Open Source: Código auditable y personalizable

⚠️ Consideraciones

  • Solo Linux + Systemd: Requiere distribuciones con systemd (no macOS/Windows)
  • Permisos Sudo: Necesita configurar sudoers para systemctl
  • Sin Métricas Históricas: No almacena histórico, solo tiempo real
  • Solo Node.js y Python: Otros lenguajes requieren extensión del código
  • Sin Autenticación: Diseñado para acceso local/VPN, no exponer públicamente

Casos de Uso

👔 Equipos DevOps

Gestión centralizada de microservicios en múltiples servidores. El monitor actúa como worker node que reporta al cloud API central, permitiendo visibilidad de toda la infraestructura desde un solo panel.

💻 Desarrolladores

Monitoreo de aplicaciones en entornos de desarrollo y staging sin la complejidad de herramientas enterprise. Perfecto para proyectos pequeños a medianos que necesitan control básico de servicios.

🖥️ Administradores de Sistemas

Control de servicios systemd con una interfaz web moderna. Alternativa visual a comandos systemctl repetitivos, con la ventaja de logs centralizados y accesibles desde el navegador.

Instalación Rápida

El proceso de instalación es extremadamente simple:

# Clonar el repositorio
git clone https://git.telcotronics.net/pablinux/SIAX-MONITOR.git
cd SIAX-MONITOR

# Compilar en modo release
cargo build --release

# Ejecutar instalador (crea usuario, configura sudoers, instala servicio)
sudo ./instalador.sh

# El servicio estará disponible en http://localhost:8080

El script instalador.sh realiza automáticamente:

  • Crear usuario del sistema siax-agent
  • Configurar permisos sudoers para systemctl
  • Copiar binario a /opt/siax-agent/
  • Instalar y habilitar servicio systemd
  • Verificar salud del servicio

Arquitectura de Despliegue

SIAX Monitor fue diseñado pensando en una arquitectura distribuida:

  • Cloud APIhttps://api.siax-system.net – Panel central de control
  • Worker Nodes: Agentes SIAX Monitor en cada servidor
  • Comunicación: VPN segura entre workers y cloud API

Cada worker reporta cada 60 segundos su estado, permitiendo monitoreo centralizado de toda la infraestructura sin exponer puertos públicamente.

Conclusión

SIAX Monitor demuestra que no siempre necesitas soluciones enterprise complejas para problemas simples. Con menos de 2,000 líneas de código Rust bien estructurado, ofrece exactamente lo necesario para gestionar aplicaciones Node.js y Python en producción.

La combinación de Rust + Systemd + WebSocket resulta en una herramienta rápida, confiable y fácil de mantener. Es perfecta para equipos pequeños o medianos que buscan simplicidad sin sacrificar funcionalidad.

Si administras servidores Linux con aplicaciones Node.js o Python, definitivamente vale la pena darle una oportunidad. El código está disponible en Git Telcotronics bajo licencia open source.

«A veces la mejor solución no es la más compleja, sino la que resuelve tu problema específico de la manera más elegante posible.» – Filosofía detrás de SIAX Monitor

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *