Repository URL to install this package:
|
Version:
1.0.4 ▾
|
loop-ping
/
index.js
|
|---|
var _ = require("lodash"),
Joi = require("joi");
module.exports = function(options){
var internals = {
options : {
checkIntervalMs : 2000,
warnDelayMs : 500,
logger : {
info : function(message) {
console.log(JSON.stringify(message));
},
warn : function(message) {
console.log(JSON.stringify(message));
}
}
},
schema : Joi.object().keys({
checkIntervalMs : Joi.number().integer().min(1),
warnDelayMs : Joi.number().integer().min(1),
logger : Joi.object().pattern( /.*/, Joi.any()).keys({
info : Joi.func().required(),
warn : Joi.func().required()
})
})
};
validate(options);
internals.options = _.assign(internals.options, options);
function validate(options){
Joi.validate(options, internals.schema, function(err){
if(err){
throw err;
}
});
}
setInterval(function(){
var time = Date.now();
setImmediate(function(){
var message = {
status : {
description : "event loop delay",
delta : Math.abs(Date.now() - time),
memory : process.memoryUsage()
}
};
if(message.delta >= internals.options.warnDelayMs)
internals.options.logger.warn(message);
else
internals.options.logger.info(message);
});
}, internals.options.checkIntervalMs);
};