Comparing version 0.5.5 to 0.5.6
@@ -9,3 +9,3 @@ // Load modules | ||
var Async = require('async'); | ||
var Request = require('request'); | ||
var Client = require('hapi/lib/client') | ||
var Hoek = require('hoek'); | ||
@@ -133,3 +133,2 @@ var System = require('./system'); | ||
oscpu: self._os.cpu, | ||
osdisk: self._os.disk, | ||
osload: self._os.loadavg, | ||
@@ -140,3 +139,2 @@ osmem: self._os.mem, | ||
psmem: self._process.memory, | ||
pscpu: self._process.cpu, | ||
psdelay: self._process.delay, | ||
@@ -224,3 +222,3 @@ psleaks: self._process.leaks.bind(self._process) | ||
Request({ method: 'post', uri: uri, json: envelope }, function () { }); // Ignore errors | ||
Client.request('post', uri, { headers: { 'content-type': 'application/json' }, payload: JSON.stringify(envelope) }, function () { }); | ||
}); | ||
@@ -227,0 +225,0 @@ }; |
// Load modules | ||
var ChildProcess = require('child_process'); | ||
var Os = require('os'); | ||
@@ -49,23 +48,2 @@ var Hoek = require('hoek'); | ||
/** | ||
* Return percentage of CPU core used by THIS process | ||
* | ||
* @param {Function} callback function to process result | ||
* @api public | ||
*/ | ||
internals.ProcessMonitor.prototype.cpu = function (callback) { | ||
ChildProcess.exec('ps -eo pcpu,pid | grep ' + process.pid + ' | awk \'{print $1}\'', function (error, stdout, stderr) { | ||
if (error) { | ||
return callback(error); | ||
} | ||
// var cpuUsage = Number(stdout.split(' ').shift()).toFixed(2); | ||
var cpuUsage = Number(stdout); | ||
callback(null, cpuUsage); | ||
}); | ||
}; | ||
/** | ||
* Return process memoryUsage with total system memory | ||
@@ -72,0 +50,0 @@ * |
// Load modules | ||
var ChildProcess = require('child_process'); | ||
var Fs = require('fs'); | ||
@@ -129,44 +128,2 @@ var Os = require('os'); | ||
}); | ||
}; | ||
/** | ||
* Returns disk usage percentage for a specified filesystem | ||
* | ||
* @param {String} filesystem filesystem to check disk usage for (default '/') | ||
* @param {Function} callback function to process results | ||
* @api public | ||
*/ | ||
internals.OSMonitor.prototype.disk = function (filesystem, callback) { | ||
if (typeof filesystem === 'function') { | ||
callback = filesystem; | ||
filesystem = null; | ||
} | ||
filesystem = filesystem || '/'; | ||
ChildProcess.exec('df -m ' + filesystem, function (err, stdout, stderr) { | ||
if (err || | ||
stderr !== '') { | ||
return callback(err || stderr); | ||
} | ||
var lines = stdout.split("\n"); | ||
var dfInfo = lines[lines.length - 2].replace(/[\s\n\r]+/g, " ").split(" "); // subtract 2 because the last line is empty | ||
var output = { | ||
total: parseInt(dfInfo[1]), | ||
free: parseInt(dfInfo[3]) | ||
}; | ||
if (output.total < output.free) { | ||
return callback(new Error("system reports total disk space less than free disk space")); | ||
} | ||
return callback(null, output); | ||
}); | ||
}; |
{ | ||
"name": "good", | ||
"description": "Server and process monitoring plugin", | ||
"version": "0.5.5", | ||
"version": "0.5.6", | ||
"author": "Van Nguyen <the.gol.effect@gmail.com>", | ||
@@ -24,6 +24,6 @@ "contributors":[ | ||
"dependencies": { | ||
"hoek": "0.8.x", | ||
"request": "2.21.x", | ||
"hoek": "0.9.x", | ||
"async": "0.2.x", | ||
"memwatch": "0.2.x" | ||
"memwatch": "0.2.x", | ||
"hapi": "1.x.x" | ||
}, | ||
@@ -34,3 +34,2 @@ "peerDependencies": { | ||
"devDependencies": { | ||
"hapi": "1.x.x", | ||
"sinon": "1.x.x", | ||
@@ -37,0 +36,0 @@ "lab": "0.1.x", |
@@ -6,5 +6,5 @@ // Load modules | ||
var Hoek = require('hoek'); | ||
var Http = require('http'); | ||
var Path = require('path'); | ||
var Fs = require('fs'); | ||
var Request = require('request'); | ||
var Sinon = require('sinon'); | ||
@@ -221,3 +221,3 @@ var Monitor = require('../lib/monitor'); | ||
Request(server.info.uri + '?q=test', function () { | ||
Http.get(server.info.uri + '?q=test', function () { | ||
@@ -347,3 +347,3 @@ Hoek.consoleFunc = console.log; | ||
Request(server.info.uri, function () { | ||
Http.get(server.info.uri, function () { | ||
@@ -732,6 +732,52 @@ server.plugins.good.monitor._broadcastHttp(); | ||
}, 10); | ||
}, 10); | ||
}, 20); | ||
}); | ||
}); | ||
it('logs correct events to multiple file subscribers', function (done) { | ||
var results = { | ||
osload: 1, | ||
osmem: 20, | ||
osup: 50 | ||
}; | ||
var folderPath = Path.join(__dirname, 'logs'); | ||
var options = { | ||
subscribers: {} | ||
}; | ||
var dest1 = Path.join(folderPath, 'requestlog.log'); | ||
var dest2 = Path.join(folderPath, 'opslog.log'); | ||
options.subscribers[dest1] = { events: ['request'] }; | ||
options.subscribers[dest2] = { events: ['ops'] }; | ||
makePack(function (pack, server) { | ||
var monitor = new Monitor(pack, options); | ||
monitor.emit('ops', results); | ||
server.inject('/', function () { | ||
setTimeout(function () { | ||
var file1 = Fs.readFileSync(dest1 + '.001'); | ||
var formatted1 = file1.toString().split('\n'); | ||
var file2 = Fs.readFileSync(dest2 + '.001'); | ||
var formatted2 = file2.toString().split('\n'); | ||
var result1 = JSON.parse('[' + formatted1 + ']'); | ||
var result2 = JSON.parse('[' + formatted2 + ']'); | ||
expect(result1[0].event).to.equal('request'); | ||
expect(result2[0].event).to.equal('ops'); | ||
done(); | ||
}, 10); | ||
}); | ||
}); | ||
}); | ||
it('doesn\'t overwrite log file with several initial log events', function (done) { | ||
@@ -946,3 +992,2 @@ | ||
expect(event.osdisk.total).to.equal(100); | ||
expect(event.osup).to.equal(1000); | ||
@@ -958,6 +1003,2 @@ monitor.stop(); | ||
}, | ||
disk: function (cb) { | ||
cb(null, { total: 100, free: 10 }); | ||
}, | ||
loadavg: function (cb) { | ||
@@ -986,6 +1027,2 @@ | ||
}, | ||
cpu: function (cb) { | ||
cb(); | ||
}, | ||
delay: function (cb) { | ||
@@ -992,0 +1029,0 @@ |
// Load modules | ||
var Lab = require('lab'); | ||
var ChildProcess = require('child_process'); | ||
var Sinon = require('sinon'); | ||
var MemWatch = require('memwatch'); | ||
@@ -36,32 +34,2 @@ var ProcessMonitor = require('../lib/process'); | ||
describe('#cpu', function () { | ||
it('passes the current cpu usage to the callback', function (done) { | ||
var monitor = new ProcessMonitor.Monitor(); | ||
monitor.cpu(function (err, cpu) { | ||
expect(err).not.to.exist; | ||
expect(cpu).to.exist; | ||
done(); | ||
}); | ||
}); | ||
it('passes any errors to the callback', function (done) { | ||
var monitor = new ProcessMonitor.Monitor(); | ||
var args = 'ps -eo pcpu,pid | grep ' + process.pid + ' | awk \'{print $1}\''; | ||
var execStub = Sinon.stub(ChildProcess, 'exec'); | ||
execStub.withArgs(args).callsArgWith(1, new Error()); | ||
monitor.cpu(function (err, cpu) { | ||
expect(err).to.exist; | ||
execStub.restore(); | ||
done(); | ||
}); | ||
}); | ||
}); | ||
describe('#memory', function () { | ||
@@ -68,0 +36,0 @@ |
// Load modules | ||
var Lab = require('lab'); | ||
var ChildProcess = require('child_process'); | ||
var Fs = require('fs'); | ||
@@ -149,70 +148,2 @@ var Sinon = require('sinon'); | ||
}); | ||
describe('#disk', function () { | ||
it('returns disk usage information', function (done) { | ||
var monitor = new SystemMonitor.Monitor(); | ||
var execStub = Sinon.stub(ChildProcess, 'exec'); | ||
execStub.withArgs('df -m test1').callsArgWith(1, null, 'Filesystem 1M-blocks Used Available Capacity Mounted on\ntest1 1220 333 1000 100%\n', ''); | ||
monitor.disk('test1', function (err, usage) { | ||
expect(err).to.not.exist; | ||
expect(usage.total).to.equal(1220); | ||
expect(usage.free).to.equal(1000); | ||
execStub.restore(); | ||
done(); | ||
}); | ||
}); | ||
it('returns disk usage information when target is a function', function (done) { | ||
var monitor = new SystemMonitor.Monitor(); | ||
var execStub = Sinon.stub(ChildProcess, 'exec'); | ||
execStub.withArgs('df -m /').callsArgWith(1, null, 'Filesystem 1M-blocks Used Available Capacity Mounted on\n/ 1220 333 1000 100%\n', ''); | ||
monitor.disk(function (err, usage) { | ||
expect(err).to.not.exist; | ||
expect(usage.total).to.equal(1220); | ||
expect(usage.free).to.equal(1000); | ||
execStub.restore(); | ||
done(); | ||
}); | ||
}); | ||
it('returns an error when free space greater than total', function (done) { | ||
var monitor = new SystemMonitor.Monitor(); | ||
var execStub = Sinon.stub(ChildProcess, 'exec'); | ||
execStub.withArgs('df -m test2').callsArgWith(1, null, 'Filesystem 1M-blocks Used Available Capacity Mounted on\ntest2 220 333 1000 100%\n', ''); | ||
monitor.disk('test2', function (err, usage) { | ||
expect(err).to.exist; | ||
execStub.restore(); | ||
done(); | ||
}); | ||
}); | ||
it('passes any errors to the callback', function (done) { | ||
var monitor = new SystemMonitor.Monitor(); | ||
var execStub = Sinon.stub(ChildProcess, 'exec'); | ||
execStub.withArgs('df -m test3').callsArgWith(1, new Error()); | ||
monitor.disk('test3', function (err, usage) { | ||
expect(err).to.exist; | ||
expect(usage).to.not.exist; | ||
execStub.restore(); | ||
done(); | ||
}); | ||
}); | ||
}); | ||
}); |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Found 1 instance in 1 package
3
4
121116
1686
+ Addedhapi@1.x.x
- Removedrequest@2.21.x
- Removedasn1@0.1.11(transitive)
- Removedassert-plus@0.1.2(transitive)
- Removedaws-sign@0.3.0(transitive)
- Removedboom@0.4.2(transitive)
- Removedcombined-stream@0.0.7(transitive)
- Removedcookie-jar@0.3.0(transitive)
- Removedcryptiles@0.2.2(transitive)
- Removedctype@0.5.2(transitive)
- Removeddelayed-stream@0.0.5(transitive)
- Removedforever-agent@0.5.2(transitive)
- Removedform-data@0.0.8(transitive)
- Removedhawk@0.13.1(transitive)
- Removedhoek@0.8.5(transitive)
- Removedhttp-signature@0.9.11(transitive)
- Removedjson-stringify-safe@4.0.0(transitive)
- Removednode-uuid@1.4.8(transitive)
- Removedoauth-sign@0.3.0(transitive)
- Removedqs@0.6.6(transitive)
- Removedrequest@2.21.0(transitive)
- Removedsntp@0.2.4(transitive)
- Removedtunnel-agent@0.3.0(transitive)
Updatedhoek@0.9.x