index.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. var log = require('hlogger').createLogger("monitor");
  2. function ntokb(n) {
  3. var suffix = ["B","KB","MB","GB"];
  4. var si = 0;
  5. while( n> 1024 && si< suffix.length) {
  6. n/=1024;
  7. si++;
  8. }
  9. return n.toFixed(2) + " " +suffix[si];
  10. }
  11. var monitor = {
  12. bundleStart(context) {
  13. this.context = context;
  14. log.info("Bundle monitor started");
  15. this.registerCommands(context);
  16. },
  17. registerCommands(context) {
  18. context.events
  19. .channel('core-shell:cmd')
  20. .on('stat',(req,res,e) => {
  21. this.showStat(res); // Should pass stdout
  22. })
  23. .on('gc',(req,res,e) => {
  24. gc();
  25. });
  26. // listen from command from ourselves
  27. /*context.on('core-shell:cmd:stat',(req,res,e) => {
  28. this.showStat(res); // Should pass stdout
  29. }).on('core-shell:cmd:gc',(req,res,e) => {
  30. gc();
  31. })
  32. context.on('core-shell:cmd:test',(req,res,e) => {
  33. });/**/
  34. },
  35. showStat(res) {
  36. var context = this.context;
  37. var obj = process.memoryUsage();
  38. if(res == undefined) res = process.stdout;
  39. res.write("Memory Rss: " + ntokb(obj.rss)
  40. +" Total: " + ntokb(obj.heapTotal)
  41. +" Used: " + ntokb(obj.heapUsed) +"\n");
  42. // Sum events
  43. var nevents = 0;
  44. context.manager.eventual._events.ctx.forEach((c) => {
  45. nevents += Object.keys(c.listeners).length;
  46. });
  47. res.write("Events: " + nevents + "\n");
  48. // Weird?
  49. /*res.write("Modules registered: " + context.manager.stat.modulesRegistered
  50. +" Modules UnRegistered: " + context.manager.stat.modulesUnRegistered
  51. +" events emitted: " + context.manager.events.stat.emitted
  52. +" events called: " + context.manager.events.stat.called
  53. +" events tried: " + context.manager.events.stat.tried + "\n");*/
  54. },
  55. // Human readable stat
  56. getStat() {
  57. var obj = {};
  58. var mem = process.memoryUsage();
  59. obj.mem = {
  60. rss: ntokb(mem.rss),
  61. heapTotal: ntokb(mem.heapTotal),
  62. heapUsed: ntokb(mem.heapUsed),
  63. }
  64. return obj;
  65. }
  66. };
  67. module.exports = monitor;