const config = require('../config/config'); const logger = require('../util/logger'); const migrate = require('../maintenance/migrate'); const instrumentConfig = require('../config/instrumentConfig'); const { createHttpServer } = require('../http/index'); const { buildConnectors, attachConnectorHandlers, startConnectors, stopConnectors } = require('./connectors'); const { startWorkers, stopWorkers } = require('./workers'); async function start() { instrumentConfig.validateAndLoadInstrumentConfigs(); await migrate(); await instrumentConfig.init(); const connectors = buildConnectors(); if (!connectors.length) { logger.warn('no enabled connectors configured, ingestion listeners are disabled'); } attachConnectorHandlers(connectors); await startConnectors(connectors); await startWorkers(); const app = createHttpServer(connectors); const server = app.listen(config.healthPort, () => { logger.info({ port: config.healthPort }, 'health server ready'); }); async function shutdown() { await stopWorkers(); await stopConnectors(connectors); if (server) { await new Promise((resolve) => server.close(resolve)); } } return { connectors, server, shutdown }; } module.exports = { start };