pm2/examples/module-sample/scoped-action.js
2016-08-07 02:16:13 -07:00

135 lines
2.9 KiB
JavaScript

var pmx = require('pmx');
/******
*
* Here we initialize the module
*
******/
pmx.initModule({
alert_enabled : true,
widget : {
logo : 'https://app.keymetrics.io/img/logo/keymetrics-300.png',
// 0 = main element
// 1 = secondary
// 2 = main border
// 3 = secondary border
theme : ['#141A1F', '#222222', '#3ff', '#3ff'],
el : {
probes : true,
actions : true
},
block : {
actions : false,
issues : true,
meta : true,
main_probes : ['Value']
}
}
}, function(err, conf) {
/*****************************
*
* Expose metrics, measure anything
* http://docs.keymetrics.io/docs/usage/pmx-keymetrics-library/#expose-metrics-measure-anything
*
****************************/
var Probe = pmx.probe();
var value_to_inspect = 0;
/**
* .metric, .counter, .meter, .histogram are also available (cf doc)
*/
var val = Probe.metric({
name : 'test-probe',
value : function() {
return value_to_inspect;
},
/**
* This allow to trigger an issue when a value is reached
* threshold, thresold-avg, smart-1 are others methods allowed
* http://docs.keymetrics.io/docs/usage/pmx-keymetrics-library/#alert-system-for-custom-metrics
*/
alert : {
mode : 'threshold',
value : 20,
msg : 'test-probe alert!',
action : function(val) {
// Here we can optionally call a custom function to do something
console.log('exiting because val reached %d', val);
//process.exit(1);
}
}
});
setInterval(function() {
value_to_inspect++;
}, 200);
var value_to_inspect2 = 0;
var valverine = Probe.metric({
name : 'toto',
value : function() {
return value_to_inspect2;
}
/**
* This allow to trigger an issue when a value is reached
* threshold, thresold-avg, smart-1 are others methods allowed
* http://docs.keymetrics.io/docs/usage/pmx-keymetrics-library/#alert-system-for-custom-metrics
*/
});
setInterval(function() {
value_to_inspect2++;
}, 20);
/****************************
*
* Simple remote function (returns instant values)
*
***************************/
pmx.action('env', function(reply) {
return reply({
env: process.env
});
});
/****************************
*
* Long running remote function (with log storage)
*
***************************/
var spawn = require('child_process').spawn;
pmx.scopedAction('lsof cmd', function(options, res) {
var child = spawn('lsof', []);
child.stdout.on('data', function(chunk) {
chunk.toString().split('\n').forEach(function(line) {
/**
* Here we send logs attached to this command
*/
res.send(line);
});
});
child.stdout.on('end', function(chunk) {
/**
* Then we emit end to finalize the function
*/
res.end('end');
});
});
});