2026-05-13 11:17:37 +02:00
2026-05-13 11:06:29 +02:00
2026-05-06 11:10:35 +02:00
2026-05-06 11:10:35 +02:00
2026-05-06 11:10:35 +02:00
2026-05-06 11:10:35 +02:00
2026-05-06 11:10:35 +02:00
2026-05-06 11:10:35 +02:00

sf-monitorizacion-health

Aplicación Node.js/Express para monitorizar el endpoint de salud (url_health) de un conjunto de proyectos y mostrar un dashboard con el último estado registrado en PostgreSQL.

Qué hace

  1. Lee todos los registros de proyectos.
  2. Para cada proyecto hace un GET a url_health con un timeout de 5s.
  3. Guarda un registro en estados con:
    • OK si la respuesta HTTP es 200
    • ERROR si la respuesta no es 200 (o cualquier error distinto)
    • TIMEOUT si el error es ECONNABORTED
  4. El dashboard (GET /) muestra, por proyecto, el último registro de estados.

El job se ejecuta de forma periódica (configurable desde la interfaz, por defecto 5 min) en bucle recursivo para evitar solapamientos.

Requisitos

  • Node.js 18+ (recomendado)
  • TypeScript
  • PostgreSQL

Configuración

La app lee estas variables de entorno (consultadas desde src/config/postgres-config.ts):

  • DB_HOST
  • DB_PORT
  • DB_USER
  • DB_PASSWORD
  • DB_NAME

Ejemplo .env:

DB_HOST=localhost
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=postgres
DB_NAME=sf_monitorizacion_health

Base de datos

La migración deployment/database/migrations/001_init.sql crea:

  • proyectos (con restricción UNIQUE en nombre y URL, y límite de 100 caracteres para el nombre)
  • estados

Nota: La migración utiliza CREATE TABLE IF NOT EXISTS.

Cómo ejecutar

  1. Instala dependencias:
    • npm install
  2. Asegúrate de tener creada la BD (ejecuta deployment/database/migrations/001_init.sql).
  3. Ejecuta los scripts disponibles:
    • npm run dev: Inicia en modo desarrollo con tsx.
    • npm run build: Compila el código TypeScript.

La app levanta el servidor en http://localhost:3000.

Dashboard

Ruta:

  • GET / : renderiza la vista principal.

En la tabla se muestra:

  • Nombre del proyecto (proyectos.nombre)
  • URL (proyectos.url_health)
  • Estado (estados.estado_codigo del último registro)
  • “Última comprobación” (estados.fecha)

Si un proyecto todavía no tiene estados registrados, el dashboard muestra PENDIENTE.

Añadir proyectos

Se pueden añadir desde la interfaz en /nuevo o mediante SQL:

INSERT INTO proyectos (nombre, url_health)
VALUES ('Mi proyecto', 'https://ejemplo.com/health');

Los estados empezarán a generarse automáticamente cuando arranque el servidor y empiece el ciclo de checks.

Description
No description provided
Readme 176 KiB
Languages
TypeScript 54.2%
EJS 33%
Groovy 7.9%
Shell 3.6%
Dockerfile 1.3%