From ed0c76f73c09dcd47a832c8cc543d73ff437e4ef Mon Sep 17 00:00:00 2001 From: Joe Wroten Date: Fri, 17 May 2019 17:40:59 -0500 Subject: [PATCH] CPU Usage --- data/raw/test/cpuusage.raw | 1 + index.js | 7 +++++++ mkData.js | 2 ++ mkDataFromCPUUsage.js | 20 ++++++++++++++++++++ mkRaw.sh | 4 ++++ src/assets/app.js | 16 +++++++++++++++- src/index.html | 11 ++++++++++- 7 files changed, 59 insertions(+), 2 deletions(-) create mode 100644 data/raw/test/cpuusage.raw create mode 100644 mkDataFromCPUUsage.js diff --git a/data/raw/test/cpuusage.raw b/data/raw/test/cpuusage.raw new file mode 100644 index 0000000..efb2300 --- /dev/null +++ b/data/raw/test/cpuusage.raw @@ -0,0 +1 @@ +1.2% diff --git a/index.js b/index.js index ea90cb9..bf0391a 100644 --- a/index.js +++ b/index.js @@ -36,3 +36,10 @@ app.route(apiPrefix + '/diskspace').get((req, res) => { }); }); +app.route(apiPrefix + '/cpuusage').get((req, res) => { + fs.readFile(path.join(__dirname, 'data/json', 'cpuusage.json'), 'utf8', (err, json) => { + if (err) { throw new Error(err); } + res.json(JSON.parse(json)); + }); +}); + diff --git a/mkData.js b/mkData.js index 96dc0d6..90209ee 100644 --- a/mkData.js +++ b/mkData.js @@ -1,7 +1,9 @@ let dataFromDate = require('./mkDataFromDate.js'); let dataFromDiskspace = require('./mkDataFromDiskspace.js'); +let dataFromCPUUsage = require('./mkDataFromCPUUsage.js'); let isTestMode = process.argv[2] === '--test'; dataFromDate(isTestMode); dataFromDiskspace(isTestMode); +dataFromCPUUsage(isTestMode); diff --git a/mkDataFromCPUUsage.js b/mkDataFromCPUUsage.js new file mode 100644 index 0000000..8c8ecbf --- /dev/null +++ b/mkDataFromCPUUsage.js @@ -0,0 +1,20 @@ +const fs = require('fs'); +const path = require('path'); + +module.exports = async function(useTestData = false) { + fs.readFile(path.join(__dirname, 'data/raw', useTestData ? 'test' : 'real', 'cpuusage.raw'), 'utf8', (err, usage) => { + if (err) { + console.error(err); + process.exit(1); + } + let jsonString = JSON.stringify({ + str: usage, + num: parseFloat(usage.slice(0, usage.length -1)), + }); + + fs.writeFile(path.join(__dirname, 'data/json', 'cpuusage.json'), jsonString, err => { + if (err) throw err; + }); + }); +} + diff --git a/mkRaw.sh b/mkRaw.sh index ffba128..2d30f65 100644 --- a/mkRaw.sh +++ b/mkRaw.sh @@ -8,3 +8,7 @@ echo "date.raw updated" touch data/raw/real/diskspace.raw df | grep /dev/md0 > data/raw/real/diskspace.raw echo "diskspace.raw updated" + +touch data/raw/real/usage.raw +top -b -n2 -p 1 | fgrep "Cpu(s)" | tail -1 | awk -F'id,' -v prefix="$prefix" '{ split($1, vs, ","); v=vs[length(vs)]; sub("%", "", v); printf "%s%.1f%%\n", prefix, 100 - v }' > data/raw/real/cpuusage.raw +echo "usage.raw updated" diff --git a/src/assets/app.js b/src/assets/app.js index 1efd834..9482de5 100644 --- a/src/assets/app.js +++ b/src/assets/app.js @@ -4,14 +4,19 @@ new Vue({ fetchingLastBuildDate: true, lastBuildDate: '', - fetchingDiskSpace: '', + fetchingDiskSpace: true, diskSize: '', diskUsed: '', diskCapacity: '', + + fetchingCPUUsage: true, + cpuUsageNum: 0, + cpuUsageStr: '', }, created() { this.fetchLastBuildDate(); this.fetchDiskSpace(); + this.fetchCPUUsage(); }, methods: { async fetchLastBuildDate() { @@ -32,5 +37,14 @@ new Vue({ this.fetchingDiskSpace = false; } catch (err) { throw new Error(err); } }, + async fetchCPUUsage() { + this.fetchingCPUUsage = true; + try { + let { data } = await axios.get('/api/cpuusage'); + this.cpuUsageNum = data.num; + this.cpuUsageStr = data.str; + this.fetchingCPUUsage = false; + } catch (err) { throw new Error(err); } + }, }, }); diff --git a/src/index.html b/src/index.html index 607e72b..22e6fa2 100644 --- a/src/index.html +++ b/src/index.html @@ -19,12 +19,21 @@
-

Used: {{diskCapacity}}

+

Disk Used: {{diskCapacity}}

+
+
+
+

CPU Used: {{cpuUsageStr}}

+
+
+ +
+