31 lines
878 B
JavaScript
31 lines
878 B
JavaScript
/* istanbul ignore file */
|
|
/* eslint-disable no-unused-vars */
|
|
'use strict'
|
|
|
|
const prometheusClient = require('prom-client')
|
|
|
|
let metricActiveConnections = null
|
|
|
|
module.exports = {
|
|
monitorActiveConnections(httpServer) {
|
|
if (metricActiveConnections !== null) {
|
|
prometheusClient.register.removeSingleMetric('speckle_server_active_connections')
|
|
}
|
|
|
|
metricActiveConnections = new prometheusClient.Gauge({
|
|
name: 'speckle_server_active_connections',
|
|
help: 'Number of active http connections',
|
|
async collect() {
|
|
let connectionCount = await new Promise((resolve, reject) => {
|
|
httpServer.getConnections(function (error, count) {
|
|
if (error) resolve(-1)
|
|
else resolve(count)
|
|
})
|
|
})
|
|
if (isNaN(connectionCount)) connectionCount = -1
|
|
this.set(connectionCount)
|
|
}
|
|
})
|
|
}
|
|
}
|