runtimeStats.js 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. 'use strict';
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. const debug_1 = require("debug");
  4. const module_1 = require("../utils/module");
  5. const eventemitter2_1 = require("eventemitter2");
  6. class RuntimeStatsService extends eventemitter2_1.EventEmitter2 {
  7. constructor() {
  8. super(...arguments);
  9. this.logger = debug_1.default('axm:services:runtimeStats');
  10. this.enabled = false;
  11. }
  12. init() {
  13. this.logger('init');
  14. if (process.env.PM2_APM_DISABLE_RUNTIME_STATS === 'true') {
  15. return this.logger('disabling service because of the environment flag');
  16. }
  17. const modulePath = module_1.default.detectModule('@pm2/node-runtime-stats');
  18. if (typeof modulePath !== 'string')
  19. return;
  20. const RuntimeStats = module_1.default.loadModule(modulePath);
  21. if (RuntimeStats instanceof Error) {
  22. return this.logger(`Failed to require module @pm2/node-runtime-stats: ${RuntimeStats.message}`);
  23. }
  24. this.noduleInstance = new RuntimeStats({
  25. delay: 1000
  26. });
  27. this.logger('starting runtime stats');
  28. this.noduleInstance.start();
  29. this.handle = (data) => {
  30. this.logger('received runtime stats', data);
  31. this.emit('data', data);
  32. };
  33. this.noduleInstance.on('sense', this.handle);
  34. this.enabled = true;
  35. }
  36. isEnabled() {
  37. return this.enabled;
  38. }
  39. destroy() {
  40. if (this.noduleInstance !== undefined && this.noduleInstance !== null) {
  41. this.logger('removing listener on runtime stats service');
  42. this.noduleInstance.removeListener('sense', this.handle);
  43. this.noduleInstance.stop();
  44. }
  45. this.logger('destroy');
  46. }
  47. }
  48. exports.RuntimeStatsService = RuntimeStatsService;
  49. //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZVN0YXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3J1bnRpbWVTdGF0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUE7O0FBRVosaUNBQXlCO0FBQ3pCLDRDQUFtQztBQUNuQyxpREFBNkM7QUFFN0MsTUFBYSxtQkFBb0IsU0FBUSw2QkFBYTtJQUF0RDs7UUFFVSxXQUFNLEdBQVEsZUFBSyxDQUFDLDJCQUEyQixDQUFDLENBQUE7UUFHaEQsWUFBTyxHQUFZLEtBQUssQ0FBQTtJQTZDbEMsQ0FBQztJQTNDQyxJQUFJO1FBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNuQixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLEtBQUssTUFBTSxFQUFFO1lBQ3hELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxtREFBbUQsQ0FBQyxDQUFBO1NBQ3hFO1FBRUQsTUFBTSxVQUFVLEdBQUcsZ0JBQUssQ0FBQyxZQUFZLENBQUMseUJBQXlCLENBQUMsQ0FBQTtRQUNoRSxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVE7WUFBRSxPQUFNO1FBRTFDLE1BQU0sWUFBWSxHQUFHLGdCQUFLLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQ2pELElBQUksWUFBWSxZQUFZLEtBQUssRUFBRTtZQUNqQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMscURBQXFELFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO1NBQ2hHO1FBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLFlBQVksQ0FBQztZQUNyQyxLQUFLLEVBQUUsSUFBSTtTQUNaLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtRQUNyQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFBO1FBQzNCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLHdCQUF3QixFQUFFLElBQUksQ0FBQyxDQUFBO1lBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ3pCLENBQUMsQ0FBQTtRQUdELElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDNUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUE7SUFDckIsQ0FBQztJQUtELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUE7SUFDckIsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssSUFBSSxFQUFFO1lBQ3JFLElBQUksQ0FBQyxNQUFNLENBQUMsNENBQTRDLENBQUMsQ0FBQTtZQUN6RCxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ3hELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUE7U0FDM0I7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ3hCLENBQUM7Q0FDRjtBQWxERCxrREFrREMifQ==