Files
sf-monitorizacion-health/README.md

2.2 KiB

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 (cada 60s) en bucle recursivo para evitar solapamientos.

Requisitos

  • Node.js 18+ (recomendado)
  • PostgreSQL

Configuración

La app lee estas variables de entorno (consultadas desde src/config/postgreConfig.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
  • tipo ENUM tipo_estado con OK, ERROR, TIMEOUT
  • estados
  • índice para consultar rápido el último estado por proyecto

Nota: la migración hace DROP TABLE IF EXISTS, así que destruye los datos actuales.

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 en modo desarrollo:
    • npm run dev

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

Dashboard

Ruta:

  • GET / : renderiza src/views/index.ejs

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

Inserta en proyectos:

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.