Files
nexusAI/packages/orchestration-service/src/routes/health.js
2026-04-17 23:32:33 -07:00

30 lines
1.2 KiB
JavaScript

const { Router } = require('express');
const fetch = require('node-fetch');
const { getEnv, SERVICES, PORTS } = require('@nexusai/shared');
const router = Router();
const SERVICES_MAP = [
{ key: 'inference', label: 'Inference', url: `${getEnv('INFERENCE_SERVICE_URL', SERVICES.INFERENCE_URL)}/health` },
{ key: 'memory', label: 'Memory', url: `${getEnv('MEMORY_SERVICE_URL', SERVICES.MEMORY_URL)}/health` },
{ key: 'embedding', label: 'Embedding', url: `${getEnv('EMBEDDING_SERVICE_URL', SERVICES.EMBEDDING_URL)}/health` },
{ key: 'orchestration', label: 'Orchestration', url: `http://localhost:${getEnv('PORT', PORTS.ORCHESTRATION)}/health` },
];
router.get('/', async (req, res) => {
const results = await Promise.all(
SERVICES_MAP.map(async ({ key, label, url }) => {
const start = Date.now();
try {
const r = await fetch(url, { signal: AbortSignal.timeout(3000) });
const data = await r.json();
return { key, label, status: 'healthy', latency: Date.now() - start, detail: data };
} catch (err) {
return { key, label, status: 'unreachable', latency: Date.now() - start, detail: null };
}
})
);
res.json(results);
});
module.exports = router;