UNPKG

dht-relay-wss

Version:

hyperswarm-dht-relay websocket server with some instrumentation

50 lines (42 loc) 1.36 kB
const metricsPlugin = require('fastify-metrics') // TODO: upgrade to current major const instrument = require('hyper-instrument') function setupHealthEndpoint (dhtRelay) { dhtRelay.app.get('/health', { logLevel: 'warn' }, function (req, reply) { if (dhtRelay.opened !== true) { reply.status(503) reply.send('Service not yet ready') } else if (dhtRelay.closing) { reply.status(503) reply.send('Service shutting down') } else { reply.status(200) reply.send('Service healthy') } }) } function instrumentRelay (dhtRelay, logger, { prometheusAlias, prometheusSharedSecret, prometheusScraperPublicKey, prometheusServiceName }) { setupHealthEndpoint(dhtRelay) let dhtPromClient = null const setupPromRpcClient = prometheusAlias != null if (setupPromRpcClient) { dhtPromClient = instrument({ dht: dhtRelay.dht, scraperPublicKey: prometheusScraperPublicKey, prometheusAlias, scraperSecret: prometheusSharedSecret, prometheusServiceName }) dhtPromClient.registerLogger(logger) } dhtRelay.app.register(metricsPlugin, { defaultMetrics: { enabled: false }, // We manage these ourselves endpoint: '/metrics', routeMetrics: { routeBlacklist: ['/health', '/metrics'] } }) return dhtPromClient } module.exports = instrumentRelay