diff --git a/config/config.js b/config/config.js index a639f2d..dc95a24 100644 --- a/config/config.js +++ b/config/config.js @@ -76,6 +76,7 @@ var bitcoindConf = { disableAgent: true }; +var enableMonitor = process.env.ENABLE_MONITOR === 'true'; var enableCleaner = process.env.ENABLE_CLEANER === 'true'; var enableMailbox = process.env.ENABLE_MAILBOX === 'true'; var enableRatelimiter = process.env.ENABLE_RATELIMITER === 'true'; @@ -93,6 +94,8 @@ if (!fs.existsSync(db)) { } module.exports = { + enableMonitor: enableMonitor, + monitor: require('../plugins/config-monitor.js'), enableCleaner: enableCleaner, cleaner: require('../plugins/config-cleaner.js'), enableMailbox: enableMailbox, diff --git a/insight.js b/insight.js index 2b810a1..4d4d9a0 100755 --- a/insight.js +++ b/insight.js @@ -139,6 +139,9 @@ if (config.enableCleaner) { require('./plugins/cleaner').init(config.cleaner); } +if (config.enableMonitor) { + require('./plugins/monitor').init(config.monitor); +} // express settings diff --git a/plugins/config-cleaner.js b/plugins/config-cleaner.js index 0948f68..929198b 100644 --- a/plugins/config-cleaner.js +++ b/plugins/config-cleaner.js @@ -1,6 +1,6 @@ module.exports = { - cronTime: '* * * * *', + cronTime: '0 * * * *', // run each hour threshold: 2*24*60*60, // 2 days, in seconds }; diff --git a/plugins/config-monitor.js b/plugins/config-monitor.js new file mode 100644 index 0000000..1958a96 --- /dev/null +++ b/plugins/config-monitor.js @@ -0,0 +1,3 @@ +module.exports = { + cronTime: '* * * * *', // run each minute +}; diff --git a/plugins/monitor.js b/plugins/monitor.js new file mode 100644 index 0000000..e5d0ac3 --- /dev/null +++ b/plugins/monitor.js @@ -0,0 +1,26 @@ +var mdb = require('../lib/MessageDb').default(); +var logger = require('../lib/logger').logger; +var preconditions = require('preconditions').singleton(); +var microtime = require('microtime'); +var cron = require('cron'); +var CronJob = cron.CronJob; + + +module.exports.init = function(config) { + var cronTime = config.cronTime || '0 * * * *'; + logger.info('Using monitor plugin with cronTime ' + cronTime); + var onTick = function() { + mdb.getAll(function(err, messages) { + if (err) logger.error(err); + else { + logger.info('Message db size = ' + messages.length); + } + }); + }; + var job = new CronJob({ + cronTime: cronTime, + onTick: onTick + }); + onTick(); + job.start(); +};