#!/usr/bin/env node "use strict"; // FIXME: Safe shutdown on ctrl+C // FIXME: Somehow automatically detect whether other kernels are running on the system, and automatically clear locks when that is not the case? const Promise = require("bluebird"); const yargs = require("yargs"); const path = require("path"); const express = require("express"); const createKernel = require("../src/kernel"); let argv = yargs.argv; let configurationPath = argv._[0]; let listenHost = argv.listenHost ?? "127.0.0.1"; let listenPort = argv.listenPort ?? 3131; let absoluteConfigurationPath = path.resolve(process.cwd(), configurationPath); let configuration = require(absoluteConfigurationPath); return Promise.try(() => { return createKernel(configuration); }).then((kernel) => { kernel.run(); let metricsApp = express(); metricsApp.get("/metrics", (req, res) => { return Promise.try(() => { return kernel.getMetrics(); }).then(({ contentType, metrics }) => { res.set("Content-Type", contentType); res.send(metrics); }); }); metricsApp.listen({ host: listenHost, port: listenPort }, () => { console.log(`Metrics server listening on port ${listenPort}, host ${listenHost}`); }); });