45 lines
1.2 KiB
JavaScript
45 lines
1.2 KiB
JavaScript
|
|
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 };
|