mongodb-watcher

1.3.0 • Public • Published

Monitor your mongodb connection for bad queries in the client-side.

Installation

npm i mongodb-watcher

Usage

//connect to mongodb
const watcher = new MongoWatcher(db, {
  longCursorThreshold:  100,
  largeInsertThreshold: 1024 * 30,
  largeFetchThreshold:  1024 * 30
});

watcher.on('long.cursor.enumeration', (data) => {
  logger.error(`Detected bad query over ${data.collection} returning ${data.count} documents. \n ${data.stack}`);
});

db.collection('apples').find().toArray((apples) => {
  res.json(apples);
});

Events

long.cursor.enumeration

This event is emitted when a cursor is enumerated (.toArray) returning an array of documents with more than longCursorThreshold (defaults 100).

The data of the event contains:

  • collection: the name of the collection
  • count: the number of documents returned or inserted
  • stack: an stack trace of to identify where the call was made
  • cmd: it contains the query, limit, skip, readPreference, slaveOk, etc.

large.document.insert

This event is emitted when calling .insert([]) or .save with a document of size greater than bigInsertThreshold (defaults 30k).

  • collection: the name of the collection
  • documentId: the document._id value
  • size: the size of the doc in bytes
  • cmd: it contains the query, limit, skip, readPreference, slaveOk, etc
  • stack: an stack trace of to identify where the call was made

large.document.fetch

This event is emitted when retrieving a big document from the database.

  • collection: the name of the collection
  • documentId: the document._id value
  • size: the size of the doc in bytes
  • stack: an stack trace of to identify where the call was made

More events are welcome.

License

MIT 2016 . JOSE F. ROMANIELLO

Readme

Keywords

none

Package Sidebar

Install

npm i mongodb-watcher

Weekly Downloads

0

Version

1.3.0

License

none

Unpacked Size

54.5 kB

Total Files

11

Last publish

Collaborators

  • jfromaniello