pmx
Version:
PM2/Keymetrics advanced API
52 lines (37 loc) • 1.09 kB
JavaScript
var Transport = require('./utils/transport.js');
var debug = require('debug')('axm:monitor');
var Monitor = {};
function cookData(data) {
var cooked_data = {};
Object.keys(data).forEach(function(probe_name) {
if (typeof(data[probe_name]) == 'function')
cooked_data[probe_name] = data[probe_name]();
else
cooked_data[probe_name] = data[probe_name];
});
return cooked_data;
};
function enableProbes(custom_namespace) {
if (!custom_namespace)
custom_namespace = 'axm';
if (!global[custom_namespace])
global[custom_namespace] = {};
if (this.interval)
return global[custom_namespace];
this.interval = setInterval(function() {
Transport.send({
type : 'axm:monitor',
data : cookData(global[custom_namespace])
});
}, 990);
this.interval.unref();
return global[custom_namespace];
};
function stopProbing() {
clearInterval(this.interval);
}
Monitor.enableProbes = enableProbes;
Monitor.enableProbe = enableProbes;
Monitor.stopProbe = stopProbing;
Monitor.stopProbes = stopProbing;
module.exports = Monitor;