index.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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. context.on('hci-config', (config) => {
  17. context.on(config,"start",function() {
  18. config.test();
  19. });
  20. });
  21. },
  22. registerCommands(context) {
  23. // listen from command from ourselves
  24. context.on('.*:cmd:stat',(args) => {
  25. /*var r = {
  26. numberOfModules: Object.keys(context.manager.registry).length,
  27. numberOfListeners: context.manager.events.listeners.length,
  28. listeners: context.manager.events.listeners.map((l) => l.name),
  29. memory: process.memoryUsage()
  30. }
  31. context.with('prettyjson').do((pj) => {
  32. log.info(pj.render(r));
  33. });*/
  34. this.showStat();
  35. });
  36. context.on('.*:cmd:gc',(args) => {
  37. gc();
  38. });
  39. },
  40. showStat() {
  41. var context = this.context;
  42. var obj = process.memoryUsage();
  43. log.info("Memory Rss: " + ntokb(obj.rss)
  44. +" Total: " + ntokb(obj.heapTotal)
  45. +" Used: " + ntokb(obj.heapUsed));
  46. log.info(
  47. "Modules registered: " + context.manager.stat.modulesRegistered,
  48. "Modules UnRegistered: " + context.manager.stat.modulesUnRegistered,
  49. "events emitted: " + context.manager.events.stat.emitted,
  50. "events called: " + context.manager.events.stat.called,
  51. "events tried: " + context.manager.events.stat.tried
  52. );
  53. },
  54. // Human readable stat
  55. getStat() {
  56. var obj = {};
  57. var mem = process.memoryUsage();
  58. obj.mem = {
  59. rss: ntokb(mem.rss),
  60. heapTotal: ntokb(mem.heapTotal),
  61. heapUsed: ntokb(mem.heapUsed),
  62. }
  63. return obj;
  64. }
  65. };
  66. module.exports = monitor;