dht-relay-wss
Version:
hyperswarm-dht-relay websocket server with some instrumentation
50 lines (42 loc) • 1.36 kB
JavaScript
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