diff options
-rwxr-xr-x | app.js | 15 | ||||
-rw-r--r-- | lib/metrics-server.ts | 22 |
2 files changed, 24 insertions, 13 deletions
@@ -57,6 +57,7 @@ import { RouteAPI } from './lib/handlers/route-api'; import { SourceHandler } from './lib/handlers/source'; import { languages as allLanguages } from './lib/languages'; import { logger, logToLoki, logToPapertrail, suppressConsoleLog } from './lib/logger'; +import { setupMetricsServer } from './lib/metrics-server'; import { ClientOptionsHandler } from './lib/options-handler'; import * as props from './lib/properties'; import { ShortLinkResolver } from './lib/shortener/google'; @@ -547,19 +548,7 @@ async function main() { if (opts.metricsPort) { logger.info(`Running metrics server on port ${opts.metricsPort}`); - PromClient.collectDefaultMetrics(); - const metricsServer = express(); - - metricsServer.get('/metrics', async (req, res) => { - try { - res.set('Content-Type', PromClient.register.contentType); - res.end(await PromClient.register.metrics()); - } catch (ex) { - res.status(500).end(ex); - } - }); - - metricsServer.listen(opts.metricsPort, defArgs.hostname); + setupMetricsServer(opts.metricsPort, defArgs.hostname); } webServer diff --git a/lib/metrics-server.ts b/lib/metrics-server.ts new file mode 100644 index 000000000..eb8debc5d --- /dev/null +++ b/lib/metrics-server.ts @@ -0,0 +1,22 @@ +import express from 'express'; +import PromClient from 'prom-client'; + +/** + * Will launch the Prometheus metrics server + * + * @param serverPort - The listening port to bind into this metrics server. + * @param hostname - The TCP host to attach the listener. + * @returns void + */ +export function setupMetricsServer(serverPort: number, hostname: string): void { + PromClient.collectDefaultMetrics(); + const metricsServer = express(); + + metricsServer.get('/metrics', (req, res) => { + PromClient.register.metrics() + .then(metrics => { res.header('Content-Type', PromClient.register.contentType).send(metrics); }) + .catch(err => res.status(500).send(err)); + }); + + metricsServer.listen(serverPort, hostname); +} |