From 4ad9902601d357054164dee0ae9feb4b383493cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Thu, 15 Nov 2018 17:28:18 +0100 Subject: [PATCH] Add process CPU usage metrics --- app.js | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) 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) {