Socket
Socket
Sign inDemoInstall

good

Package Overview
Dependencies
Maintainers
2
Versions
95
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

good - npm Package Compare versions

Comparing version 0.5.5 to 0.5.6

6

lib/monitor.js

@@ -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();
});
});
});
});
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc