mongo-oplog2
Version:
Simple monitoring of MongoDB oplog.
92 lines • 6.97 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.main = void 0;
const fs = require("fs");
const util = require("util");
const prog = require("commander");
const __1 = require("../");
/**
* Read a file into a Buffer.
* @param filename file to read
*/
function readFile(filename) {
return fs.readFileSync(filename);
}
async function main(args) {
const argv = prog
.version(require("../../package.json").version) // tslint:disable-line
.usage("[options] [db host]")
.option("--namespace <namespace>", "namespace filter")
.option("--pretty", "pretty oplog doc format")
.option("--replSet <replSetName>", "replica set name")
.option("--since <since>", "oplog documents since x")
.option("--ssl", "connect using SSL/TLS")
.option("--sslCAFile <filename>", "Certificate Authority filename")
.option("--sslCertFile <filename>", "Certificate filename")
.option("--sslPEMKeyFile <filename>", "PEM Key filename")
.option("--sslPEMKeyPassword <password>", "Password for key in PEM file")
.parse(args);
const mongoOpts = extractMongoClientOptions(argv);
const oplogOpts = extractOplogOpts(argv);
const hosts = argv.args.join() || 'localhost';
watchOplog(hosts, oplogOpts, mongoOpts);
}
exports.main = main;
if (!module.parent) {
main(process.argv);
}
function extractMongoClientOptions(opts) {
const options = {};
if (opts.replSet) {
options.replicaSet = opts.replSet;
}
if (opts.ssl) {
options.ssl = true;
}
if (opts.sslCAFile) {
options.sslCA = [readFile(opts.sslCAFile)];
}
if (opts.sslCertFile) {
options.sslCert = readFile(opts.sslCertFile);
}
if (opts.sslPEMKeyFile) {
options.sslKey = readFile(opts.sslPEMKeyFile);
if (opts.sslPEMKeyPassword) {
options.sslPass = opts.sslPEMKeyPassword;
}
}
// Make sure `ssl` flag is set if any SSL options are specified
if (Object.keys(options).some(k => k.startsWith("ssl"))) {
options.ssl = true;
}
return options;
}
function extractOplogOpts(opts) {
const options = {};
if (opts.namespace) {
options.ns = opts.namespace;
}
if (opts.since) {
const since = opts.since;
if (since.includes("-")) {
options.since = (new Date(since)).getTime() / 1000;
}
else {
options.since = parseFloat(since);
}
}
if (opts.pretty) {
options.pretty = true;
}
return options;
}
function watchOplog(hosts, oplogOpts, dbOpts) {
const opts = Object.assign({}, oplogOpts, dbOpts);
const oplog = new __1.MongoOplog(`mongodb://${hosts}/local`, opts);
oplog.on("op", (doc) => {
doc = JSON.parse(JSON.stringify(doc));
console.log(util.inspect(doc, { breakLength: Infinity, depth: null, colors: true }));
});
oplog.tail();
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZ28tb3Bsb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmluL21vbmdvLW9wbG9nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFFN0Isa0NBQWtDO0FBR2xDLDJCQUEwQztBQUUxQzs7O0dBR0c7QUFDSCxTQUFTLFFBQVEsQ0FBQyxRQUFnQjtJQUM5QixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDckMsQ0FBQztBQUVNLEtBQUssVUFBVSxJQUFJLENBQUMsSUFBYztJQUNyQyxNQUFNLElBQUksR0FBRyxJQUFJO1NBQ1osT0FBTyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLHNCQUFzQjtTQUNyRSxLQUFLLENBQUMscUJBQXFCLENBQUM7U0FDNUIsTUFBTSxDQUFDLHlCQUF5QixFQUFFLGtCQUFrQixDQUFDO1NBQ3JELE1BQU0sQ0FBQyxVQUFVLEVBQUUseUJBQXlCLENBQUM7U0FDN0MsTUFBTSxDQUFDLHlCQUF5QixFQUFFLGtCQUFrQixDQUFDO1NBQ3JELE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSx5QkFBeUIsQ0FBQztTQUNwRCxNQUFNLENBQUMsT0FBTyxFQUFFLHVCQUF1QixDQUFDO1NBQ3hDLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSxnQ0FBZ0MsQ0FBQztTQUNsRSxNQUFNLENBQUMsMEJBQTBCLEVBQUUsc0JBQXNCLENBQUM7U0FDMUQsTUFBTSxDQUFDLDRCQUE0QixFQUFFLGtCQUFrQixDQUFDO1NBQ3hELE1BQU0sQ0FBQyxnQ0FBZ0MsRUFBRSw4QkFBOEIsQ0FBQztTQUN4RSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQ2Y7SUFDRCxNQUFNLFNBQVMsR0FBRyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsRCxNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJ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