mirror of
https://github.com/Unitech/pm2.git
synced 2025-12-08 20:35:53 +00:00
135 lines
2.9 KiB
JavaScript
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');
|
|
});
|
|
|
|
});
|
|
|
|
|
|
});
|