diff --git a/app.js b/app.js index bb7928fa..c8cd991b 100755 --- a/app.js +++ b/app.js @@ -128,6 +128,40 @@ listener.on('listening', function() { ); }); +function getCPUUsage (oldUsage) { + let usage; + + if (oldUsage && oldUsage._start) { + usage = Object.assign({}, process.cpuUsage(oldUsage._start.cpuUsage)); + usage.time = Date.now() - oldUsage._start.time; + } else { + usage = Object.assign({}, process.cpuUsage()); + usage.time = process.uptime() * 1000; // s to ms + } + + usage.percent = (usage.system + usage.user) / (usage.time * 10); + + Object.defineProperty(usage, '_start', { + value: { + cpuUsage: process.cpuUsage(), + time: Date.now() + } + }); + + return usage; +} + +let previousCPUUsage = getCPUUsage(); +setInterval(function cpuUsageMetrics () { + const CPUUsage = getCPUUsage(previousCPUUsage); + + Object.keys(CPUUsage).forEach(property => { + global.statsClient.gauge(`windshaft.cpu.${property}`, CPUUsage[property]); + }); + + previousCPUUsage = CPUUsage; +}, 5000); + setInterval(function() { var memoryUsage = process.memoryUsage(); Object.keys(memoryUsage).forEach(function(k) {