Merge pull request #11651 from overleaf/em-remove-metrics-mongodb

Remove the metrics.mongodb module

GitOrigin-RevId: 1c4a4dcd510f3f74677830f9c0b1ed1ba6e7a63c
This commit is contained in:
Eric Mc Sween 2023-02-06 08:14:50 -05:00 committed by Copybot
parent ed40a87cdc
commit 283ce29847
3 changed files with 0 additions and 202 deletions

View file

@ -238,7 +238,6 @@ module.exports.prom = promClient
module.exports.register = promWrapper.registry
module.exports.http = require('./http')
module.exports.mongodb = require('./mongodb')
module.exports.open_sockets = require('./open_sockets')
module.exports.event_loop = require('./event_loop')
module.exports.memory = require('./memory')

View file

@ -1,196 +0,0 @@
/*
* decaffeinate suggestions:
* DS102: Remove unnecessary code created because of implicit returns
* DS207: Consider shorter variations of null checks
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
*/
module.exports = {
monitor(mongodbRequirePath, logger) {
let mongodb, mongodbCore
try {
// for the v1 driver the methods to wrap are in the mongodb
// module in lib/mongodb/db.js
mongodb = require(mongodbRequirePath)
} catch (error) {}
try {
// for the v2 driver the relevant methods are in the mongodb-core
// module in lib/topologies/{server,replset,mongos}.js
const v2Path = mongodbRequirePath.replace(/\/mongodb$/, '/mongodb-core')
mongodbCore = require(v2Path)
} catch (error1) {}
const Metrics = require('./index')
const monitorMethod = function (base, method, type) {
let _method
if (base == null) {
return
}
if ((_method = base[method]) == null) {
return
}
const arglen = _method.length
const mongoDriverV1Wrapper = function (dbCommand, options, callback) {
let query
if (typeof callback === 'undefined') {
callback = options
options = {}
}
const collection = dbCommand.collectionName
if (collection.match(/\$cmd$/)) {
// Ignore noisy command methods like authenticating, ismaster and ping
return _method.call(this, dbCommand, options, callback)
}
if (dbCommand.query != null) {
query = Object.keys(dbCommand.query).sort().join('_')
}
const timer = new Metrics.Timer('mongo', { collection, query })
const start = new Date()
return _method.call(this, dbCommand, options, function () {
timer.done()
logger.debug(
{
query: dbCommand.query,
query_type: type,
collection,
'response-time': new Date() - start,
},
'mongo request'
)
return callback.apply(this, arguments)
})
}
const mongoDriverV2Wrapper = function (ns, ops, options, callback) {
let query
if (typeof callback === 'undefined') {
callback = options
options = {}
}
if (ns.match(/\$cmd$/)) {
// Ignore noisy command methods like authenticating, ismaster and ping
return _method.call(this, ns, ops, options, callback)
}
let key = `mongo-requests.${ns}.${type}`
if (ops[0].q != null) {
// ops[0].q
query = Object.keys(ops[0].q).sort().join('_')
key += '.' + query
}
const timer = new Metrics.Timer(key)
const start = new Date()
return _method.call(this, ns, ops, options, function () {
timer.done()
logger.debug(
{
query: ops[0].q,
query_type: type,
collection: ns,
'response-time': new Date() - start,
},
'mongo request'
)
return callback.apply(this, arguments)
})
}
if (arglen === 3) {
return (base[method] = mongoDriverV1Wrapper)
} else if (arglen === 4) {
return (base[method] = mongoDriverV2Wrapper)
}
}
monitorMethod(
mongodb != null ? mongodb.Db.prototype : undefined,
'_executeQueryCommand',
'query'
)
monitorMethod(
mongodb != null ? mongodb.Db.prototype : undefined,
'_executeRemoveCommand',
'remove'
)
monitorMethod(
mongodb != null ? mongodb.Db.prototype : undefined,
'_executeInsertCommand',
'insert'
)
monitorMethod(
mongodb != null ? mongodb.Db.prototype : undefined,
'_executeUpdateCommand',
'update'
)
monitorMethod(
mongodbCore != null ? mongodbCore.Server.prototype : undefined,
'command',
'command'
)
monitorMethod(
mongodbCore != null ? mongodbCore.Server.prototype : undefined,
'remove',
'remove'
)
monitorMethod(
mongodbCore != null ? mongodbCore.Server.prototype : undefined,
'insert',
'insert'
)
monitorMethod(
mongodbCore != null ? mongodbCore.Server.prototype : undefined,
'update',
'update'
)
monitorMethod(
mongodbCore != null ? mongodbCore.ReplSet.prototype : undefined,
'command',
'command'
)
monitorMethod(
mongodbCore != null ? mongodbCore.ReplSet.prototype : undefined,
'remove',
'remove'
)
monitorMethod(
mongodbCore != null ? mongodbCore.ReplSet.prototype : undefined,
'insert',
'insert'
)
monitorMethod(
mongodbCore != null ? mongodbCore.ReplSet.prototype : undefined,
'update',
'update'
)
monitorMethod(
mongodbCore != null ? mongodbCore.Mongos.prototype : undefined,
'command',
'command'
)
monitorMethod(
mongodbCore != null ? mongodbCore.Mongos.prototype : undefined,
'remove',
'remove'
)
monitorMethod(
mongodbCore != null ? mongodbCore.Mongos.prototype : undefined,
'insert',
'insert'
)
return monitorMethod(
mongodbCore != null ? mongodbCore.Mongos.prototype : undefined,
'update',
'update'
)
},
}

View file

@ -20,13 +20,8 @@ const HttpController = require('./app/js/HttpController')
const mongodb = require('./app/js/mongodb')
const async = require('async')
const Path = require('path')
const bodyParser = require('body-parser')
Metrics.mongodb.monitor(
Path.resolve(__dirname, '/node_modules/mongodb'),
logger
)
Metrics.event_loop.monitor(logger, 100)
const app = express()