Skip to content

Commit

Permalink
Merge pull request #3511 from Unitech/inspect_mode
Browse files Browse the repository at this point in the history
feature: add inspect feature, on runtime
  • Loading branch information
wallet77 committed Mar 5, 2018
2 parents 524f549 + 7e1494c commit 75fb87f
Show file tree
Hide file tree
Showing 5 changed files with 63 additions and 20 deletions.
7 changes: 7 additions & 0 deletions bin/pm2
Original file line number Diff line number Diff line change
Expand Up @@ -396,6 +396,13 @@ commander.command('id <name>')
pm2.getProcessIdByName(name);
});

// Inspect a process
commander.command('inspect <name>')
.description('inspect a process')
.action(function(cmd) {
pm2.inspect(cmd, commander);
});

//
// Stop and delete a process by name from database
//
Expand Down
25 changes: 24 additions & 1 deletion lib/API/Extra.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ var fs = require('fs');
var fmt = require('../tools/fmt.js');
var moment = require('moment');
var pkg = require('../../package.json');
const semver = require('semver');

module.exports = function(CLI) {

Expand All @@ -38,7 +39,6 @@ module.exports = function(CLI) {
*/
CLI.prototype.report = function() {
var that = this;
var semver = require('semver');

function reporting(cb) {

Expand Down Expand Up @@ -639,4 +639,27 @@ module.exports = function(CLI) {

launchMonitor();
};

CLI.prototype.inspect = function(app_name, cb) {
const that = this;
if(semver.satisfies(process.versions.node, '>= 8.0.0')) {
this.trigger(app_name, 'internal:inspect', function (err, res) {

if(res && res[0]) {
if (res[0].data.return === '') {
Common.printOut(`Inspect disabled on ${app_name}`);
} else {
Common.printOut(`Inspect enabled on ${app_name} => go to chrome : chrome://inspect !!!`);
}
} else {
Common.printOut(`Unable to activate inspect mode on ${app_name} !!!`);
}

that.exitCli(cst.SUCCESS_EXIT);
});
} else {
Common.printOut('Inspect is available for node version >=8.x !');
that.exitCli(cst.SUCCESS_EXIT);
}
};
};
10 changes: 1 addition & 9 deletions lib/ProcessContainer.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,15 +30,7 @@ delete process.env.pm2_env;
(function ProcessContainer() {
var fs = require('fs');

if (process.env.pmx !== 'false') {
require('pmx').init({
transactions: (process.env.km_link === 'true' && (process.env.trace === 'true' || process.env.deep_monitoring === 'true')) || false,
http: process.env.km_link === 'true' || false,
v8: process.env.v8 === 'true' || process.env.deep_monitoring === 'true' || false,
event_loop_dump: process.env.event_loop_inspector === 'true' || process.env.deep_monitoring === 'true' || false,
deep_metrics: process.env.deep_monitoring === 'true' || false
});
}
require('./ProcessUtils').injectModules();

var stdFile = pm2_env.pm_log_path;
var outFile = pm2_env.pm_out_log_path;
Expand Down
12 changes: 2 additions & 10 deletions lib/ProcessContainerFork.js
Original file line number Diff line number Diff line change
@@ -1,18 +1,10 @@
/**
/**
* Copyright 2013 the PM2 project authors. All rights reserved.
* Use of this source code is governed by a license that
* can be found in the LICENSE file.
*/
// Inject custom modules
if (process.env.pmx !== 'false') {
require('pmx').init({
transactions: (process.env.km_link === 'true' && (process.env.trace === 'true' || process.env.deep_monitoring === 'true')) || false,
http: process.env.km_link === 'true' || false,
v8: process.env.v8 === 'true' || process.env.deep_monitoring === 'true' || false,
event_loop_dump: process.env.event_loop_inspector === 'true' || process.env.deep_monitoring === 'true' || false,
deep_metrics: process.env.deep_monitoring === 'true' || false
});
}
require('./ProcessUtils').injectModules();

if (typeof(process.env.source_map_support) != "undefined" &&
process.env.source_map_support !== "false") {
Expand Down
29 changes: 29 additions & 0 deletions lib/ProcessUtils.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
module.exports = {
injectModules: function() {
if (process.env.pmx !== 'false') {
const pmx = require('pmx');
pmx.init({
transactions: (process.env.km_link === 'true' && (process.env.trace === 'true' || process.env.deep_monitoring === 'true')) || false,
http: process.env.km_link === 'true' || false,
v8: process.env.v8 === 'true' || process.env.deep_monitoring === 'true' || false,
event_loop_dump: process.env.event_loop_inspector === 'true' || process.env.deep_monitoring === 'true' || false,
deep_metrics: process.env.deep_monitoring === 'true' || false
});

if(require('semver').satisfies(process.versions.node, '>= 8.0.0')) {
var url = '';
pmx.action('internal:inspect', function(reply) {
const inspector = require('inspector');
if(url === '') {
inspector.open();
url = inspector.url();
} else {
inspector.close();
url = '';
}
reply(url);
});
}
}
}
};

0 comments on commit 75fb87f

Please sign in to comment.