| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- /*
- * decaffeinate suggestions:
- * DS102: Remove unnecessary code created because of implicit returns
- * DS205: Consider reworking code to avoid use of IIFEs
- * DS207: Consider shorter variations of null checks
- * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
- */
- let OpenSocketsMonitor
- const { URL } = require('url')
- const seconds = 1000
- // In Node 0.10 the default is 5, which means only 5 open connections at one.
- // Node 0.12 has a default of Infinity. Make sure we have no limit set,
- // regardless of Node version.
- require('http').globalAgent.maxSockets = Infinity
- require('https').globalAgent.maxSockets = Infinity
- module.exports = OpenSocketsMonitor = {
- monitor(logger) {
- const interval = setInterval(
- () => OpenSocketsMonitor.gaugeOpenSockets(),
- 5 * seconds
- )
- const Metrics = require('./index')
- return Metrics.registerDestructor(() => clearInterval(interval))
- },
- gaugeOpenSockets() {
- let agents, hostname, url
- const Metrics = require('./index')
- const object = require('http').globalAgent.sockets
- for (url in object) {
- agents = object[url]
- url = new URL(`http://${url}`)
- hostname =
- url.hostname != null ? url.hostname.replace(/\./g, '_') : undefined
- Metrics.gauge(`open_connections.http.${hostname}`, agents.length)
- }
- return (() => {
- const result = []
- const object1 = require('https').globalAgent.sockets
- for (url in object1) {
- agents = object1[url]
- url = new URL(`https://${url}`)
- hostname =
- url.hostname != null ? url.hostname.replace(/\./g, '_') : undefined
- result.push(
- Metrics.gauge(`open_connections.https.${hostname}`, agents.length)
- )
- }
- return result
- })()
- }
- }
|