var log = require('hlogger').createLogger("monitor"); function ntokb(n) { var suffix = ["B","KB","MB","GB"]; var si = 0; while( n> 1024 && si< suffix.length) { n/=1024; si++; } return n.toFixed(2) + " " +suffix[si]; } var monitor = { bundleStart(context) { this.context = context; log.info("Bundle monitor started"); this.registerCommands(context); context.on('hci-config', (config) => { context.on(config,"start",function() { config.test(); }); }); }, registerCommands(context) { // listen from command from ourselves context.on('.*:cmd:stat',(args) => { /*var r = { numberOfModules: Object.keys(context.manager.registry).length, numberOfListeners: context.manager.events.listeners.length, listeners: context.manager.events.listeners.map((l) => l.name), memory: process.memoryUsage() } context.with('prettyjson').do((pj) => { log.info(pj.render(r)); });*/ this.showStat(); }); context.on('.*:cmd:gc',(args) => { gc(); }); }, showStat() { var context = this.context; var obj = process.memoryUsage(); log.info("Memory Rss: " + ntokb(obj.rss) +" Total: " + ntokb(obj.heapTotal) +" Used: " + ntokb(obj.heapUsed)); log.info( "Modules registered: " + context.manager.stat.modulesRegistered, "Modules UnRegistered: " + context.manager.stat.modulesUnRegistered, "events emitted: " + context.manager.events.stat.emitted, "events called: " + context.manager.events.stat.called, "events tried: " + context.manager.events.stat.tried ); }, // Human readable stat getStat() { var obj = {}; var mem = process.memoryUsage(); obj.mem = { rss: ntokb(mem.rss), heapTotal: ntokb(mem.heapTotal), heapUsed: ntokb(mem.heapUsed), } return obj; } }; module.exports = monitor;