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
- Lee todos los registros de
proyectos. - Para cada proyecto hace un
GETaurl_healthcon untimeoutde 5s. - Guarda un registro en
estadoscon:OKsi la respuesta HTTP es200ERRORsi la respuesta no es200(o cualquier error distinto)TIMEOUTsi el error esECONNABORTED
- El dashboard (
GET /) muestra, por proyecto, el último registro deestados.
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_HOSTDB_PORTDB_USERDB_PASSWORDDB_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_estadoconOK,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
- Instala dependencias:
npm install
- Asegúrate de tener creada la BD (ejecuta
deployment/database/migrations/001_init.sql). - Ejecuta en modo desarrollo:
npm run dev
La app levanta el servidor en http://localhost:3000.
Dashboard
Ruta:
GET /: renderizasrc/views/index.ejs
En la tabla se muestra:
- Nombre del proyecto (
proyectos.nombre) - URL (
proyectos.url_health) - Estado (
estados.estado_codigodel ú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.