monitoring

SIAX Monitor

Documentación API REST

API para gestión y monitoreo de aplicaciones Node.js y Python con systemd.

info

Endpoint Base

http://localhost:8080/api
check_circle

REST API

JSON responses

bolt

WebSocket

Logs en tiempo real

schedule

Rate Limiting

1 op/segundo

lock Autenticación

Actualmente la API no requiere autenticación ya que está diseñada para acceso local vía VPN.

warning

Nota de Seguridad

Esta API debe ser accesible solo desde redes privadas o VPN.

apps Gestión de Aplicaciones

GET /api/apps

Listar todas las aplicaciones registradas

Respuesta exitosa (200)

{
  "success": true,
  "data": {
    "apps": ["app_tareas", "fidelizacion"],
    "total": 2
  },
  "error": null
}
POST /api/apps

Registrar una nueva aplicación

Body (JSON)

{
  "app_name": "mi-app",
  "script_path": "/opt/apps/mi-app/index.js",
  "working_directory": "/opt/apps/mi-app",
  "user": "nodejs",
  "environment": {
    "NODE_ENV": "production",
    "PORT": "3000"
  },
  "restart_policy": "always",
  "app_type": "nodejs",
  "description": "Mi aplicación Node.js"
}

Respuesta exitosa (200)

{
  "success": true,
  "data": {
    "app_name": "mi-app",
    "operation": "register",
    "success": true,
    "message": "Aplicación registrada exitosamente"
  },
  "error": null
}
DELETE /api/apps/:name

Eliminar una aplicación registrada

Parámetros

  • name - Nombre de la aplicación
GET /api/apps/:name/status

Obtener estado de una aplicación

Respuesta exitosa (200)

{
  "success": true,
  "data": {
    "name": "mi-app",
    "status": "Running",
    "pid": 12345,
    "cpu_usage": 2.5,
    "memory_usage": "128.50 MB",
    "systemd_status": "active",
    "last_updated": "2026-01-13T12:34:56"
  }
}

search Escaneo de Procesos

GET /api/scan

Escanear procesos Node.js y Python en ejecución

Respuesta exitosa (200)

{
  "success": true,
  "data": {
    "processes": [
      {
        "pid": 5769,
        "name": "node",
        "user": "1000",
        "cpu_usage": 2.5,
        "memory_mb": 112.54,
        "process_type": "nodejs"
      }
    ],
    "total": 1
  }
}

settings_power Ciclo de Vida

POST /api/apps/:name/start

Iniciar una aplicación

POST /api/apps/:name/stop

Detener una aplicación

POST /api/apps/:name/restart

Reiniciar una aplicación

schedule

Rate Limiting

Las operaciones están limitadas a 1 por segundo por aplicación.

cable WebSocket (Logs en tiempo real)

WS ws://localhost:8080/api/apps/:name/logs

Stream de logs en tiempo real desde journalctl

Ejemplo JavaScript

const ws = new WebSocket('ws://localhost:8080/api/apps/mi-app/logs');

ws.onopen = () => {
  console.log('Conectado a logs');
};

ws.onmessage = (event) => {
  const log = JSON.parse(event.data);
  console.log(log.MESSAGE);
};

ws.onerror = (error) => {
  console.error('Error:', error);
};

ws.onclose = () => {
  console.log('Desconectado');
};

Límites

  • check Máximo 5 conexiones concurrentes por aplicación
  • check Formato JSON desde systemd journalctl

error Códigos de Error

400

Bad Request

Datos de entrada inválidos o faltantes

404

Not Found

Aplicación no encontrada

429

Too Many Requests

Rate limit excedido (1 operación/segundo)

500

Internal Server Error

Error interno del servidor

Estructura de error

{
  "success": false,
  "data": null,
  "error": "Descripción del error"
}