50 lines
1.8 KiB
JavaScript
50 lines
1.8 KiB
JavaScript
'use strict';
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.RuntimeStatsService = void 0;
|
|
const debug_1 = require("debug");
|
|
const module_1 = require("../utils/module");
|
|
const eventemitter2_1 = require("eventemitter2");
|
|
class RuntimeStatsService extends eventemitter2_1.EventEmitter2 {
|
|
constructor() {
|
|
super(...arguments);
|
|
this.logger = (0, debug_1.default)('axm:services:runtimeStats');
|
|
this.enabled = false;
|
|
}
|
|
init() {
|
|
this.logger('init');
|
|
if (process.env.PM2_APM_DISABLE_RUNTIME_STATS === 'true') {
|
|
return this.logger('disabling service because of the environment flag');
|
|
}
|
|
const modulePath = module_1.default.detectModule('@pm2/node-runtime-stats');
|
|
if (typeof modulePath !== 'string')
|
|
return;
|
|
const RuntimeStats = module_1.default.loadModule(modulePath);
|
|
if (RuntimeStats instanceof Error) {
|
|
return this.logger(`Failed to require module @pm2/node-runtime-stats: ${RuntimeStats.message}`);
|
|
}
|
|
this.noduleInstance = new RuntimeStats({
|
|
delay: 1000
|
|
});
|
|
this.logger('starting runtime stats');
|
|
this.noduleInstance.start();
|
|
this.handle = (data) => {
|
|
this.logger('received runtime stats', data);
|
|
this.emit('data', data);
|
|
};
|
|
this.noduleInstance.on('sense', this.handle);
|
|
this.enabled = true;
|
|
}
|
|
isEnabled() {
|
|
return this.enabled;
|
|
}
|
|
destroy() {
|
|
if (this.noduleInstance !== undefined && this.noduleInstance !== null) {
|
|
this.logger('removing listener on runtime stats service');
|
|
this.noduleInstance.removeListener('sense', this.handle);
|
|
this.noduleInstance.stop();
|
|
}
|
|
this.logger('destroy');
|
|
}
|
|
}
|
|
exports.RuntimeStatsService = RuntimeStatsService;
|