appdynamics
Version:
Performance Profiler and Monitor
117 lines (95 loc) • 2.32 kB
JavaScript
/*
Copyright (c) AppDynamics, Inc., and its affiliates
2015
All Rights Reserved
*/
;
/* istanbul ignore next -- OS interface */
(function() {
var os = require('os');
/*
* Sends process information to the server every minute
*/
function ProcessInfo(agent) {
this.agent = agent;
this.isv0_8 = process.version.match(/^v0\.8\./);
}
exports.ProcessInfo = ProcessInfo;
ProcessInfo.prototype.init = function() {
};
ProcessInfo.prototype.fetchInfo = function() {
var self = this, key, subkey, info = {};
info['Application name'] = self.agent.appName;
info['Node Version'] = process.version;
info['Exec Path'] = process.execPath;
info['NODE_ENV'] = process.env.NODE_ENV;
try {
info.Hostname = os.hostname();
} catch(err) {
self.logError(err);
}
try {
info['OS type'] = os.type();
}
catch(err) {
self.logError(err);
}
try {
info.Platform = os.platform();
}
catch(err) {
self.logError(err);
}
try {
info.Architecture = os.arch();
}
catch(err) {
self.logError(err);
}
try {
var cpus = os.cpus();
info['CPU Model'] = cpus[0].model;
info['CPU Speed'] = cpus[0].speed;
info['CPU Cores'] = cpus.length;
}
catch(err) {
self.logError(err);
}
try {
info['Node arguments'] = process.argv.join(' ');
}
catch(err) {
self.logError(err);
}
try {
info['Node PID'] = process.pid;
}
catch(err) {
self.logError(err);
}
try {
for (key in process.versions) {
info['Module versions: ' + key] = process.versions[key];
}
}
catch(err) {
self.logError(err);
}
info['AppDynamics version'] = self.agent.version;
for (key in self.agent.opts) {
if (key == 'accountAccessKey' || key == 'logging') {
continue;
} else if (key == 'analytics') {
for (subkey in self.agent.opts[key]) {
info['AppDynamics options: analytics: ' + key] = self.agent.opts[key][subkey];
}
} else {
info['AppDynamics options: ' + key] = self.agent.opts[key];
}
}
return info;
};
ProcessInfo.prototype.logError = function(err) {
this.agent.logger.error(err);
};
})();