index.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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',(req,res,e) => {
  25. this.showStat(res); // Should pass stdout
  26. });
  27. context.on('.*:cmd:gc',(req,res,e) => {
  28. gc();
  29. });
  30. },
  31. showStat(res) {
  32. var context = this.context;
  33. var obj = process.memoryUsage();
  34. if(res == undefined) res = process.stdout;
  35. res.write("Memory Rss: " + ntokb(obj.rss)
  36. +" Total: " + ntokb(obj.heapTotal)
  37. +" Used: " + ntokb(obj.heapUsed) +"\n");
  38. res.write("Events: " + context.manager.events.listeners.length + "\n");
  39. // Weird?
  40. res.write("Modules registered: " + context.manager.stat.modulesRegistered
  41. +" Modules UnRegistered: " + context.manager.stat.modulesUnRegistered
  42. +" events emitted: " + context.manager.events.stat.emitted
  43. +" events called: " + context.manager.events.stat.called
  44. +" events tried: " + context.manager.events.stat.tried + "\n");
  45. },
  46. // Human readable stat
  47. getStat() {
  48. var obj = {};
  49. var mem = process.memoryUsage();
  50. obj.mem = {
  51. rss: ntokb(mem.rss),
  52. heapTotal: ntokb(mem.heapTotal),
  53. heapUsed: ntokb(mem.heapUsed),
  54. }
  55. return obj;
  56. }
  57. };
  58. module.exports = monitor;