Uptime
This commit is contained in:
		
							parent
							
								
									ed0c76f73c
								
							
						
					
					
						commit
						5ca66bd68a
					
				
					 7 changed files with 56 additions and 3 deletions
				
			
		
							
								
								
									
										1
									
								
								data/raw/test/uptime.raw
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								data/raw/test/uptime.raw
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					2019-01-01 01:00:00
 | 
				
			||||||
							
								
								
									
										7
									
								
								index.js
									
										
									
									
									
								
							
							
						
						
									
										7
									
								
								index.js
									
										
									
									
									
								
							| 
						 | 
					@ -43,3 +43,10 @@ app.route(apiPrefix + '/cpuusage').get((req, res) => {
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					app.route(apiPrefix + '/uptime').get((req, res) => {
 | 
				
			||||||
 | 
					  fs.readFile(path.join(__dirname, 'data/json', 'uptime.json'), 'utf8', (err, json) => {
 | 
				
			||||||
 | 
					    if (err) { throw new Error(err); }
 | 
				
			||||||
 | 
					    res.json(JSON.parse(json));
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,9 +1,11 @@
 | 
				
			||||||
let dataFromDate = require('./mkDataFromDate.js');
 | 
					let dataFromDate = require('./mkDataFromDate.js');
 | 
				
			||||||
let dataFromDiskspace = require('./mkDataFromDiskspace.js');
 | 
					let dataFromDiskspace = require('./mkDataFromDiskspace.js');
 | 
				
			||||||
let dataFromCPUUsage = require('./mkDataFromCPUUsage.js');
 | 
					let dataFromCPUUsage = require('./mkDataFromCPUUsage.js');
 | 
				
			||||||
 | 
					let dataFromUptime = require('./mkDataFromUptime.js');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
let isTestMode = process.argv[2] === '--test';
 | 
					let isTestMode = process.argv[2] === '--test';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
dataFromDate(isTestMode);
 | 
					dataFromDate(isTestMode);
 | 
				
			||||||
dataFromDiskspace(isTestMode);
 | 
					dataFromDiskspace(isTestMode);
 | 
				
			||||||
dataFromCPUUsage(isTestMode);
 | 
					dataFromCPUUsage(isTestMode);
 | 
				
			||||||
 | 
					dataFromUptime(isTestMode);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										20
									
								
								mkDataFromUptime.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								mkDataFromUptime.js
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,20 @@
 | 
				
			||||||
 | 
					const fs = require('fs');
 | 
				
			||||||
 | 
					const path = require('path');
 | 
				
			||||||
 | 
					const moment = require('moment');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					module.exports = async function(useTestData = false) {
 | 
				
			||||||
 | 
					  fs.readFile(path.join(__dirname, 'data/raw', useTestData ? 'test' : 'real', 'uptime.raw'), 'utf8', (err, uptime) => {
 | 
				
			||||||
 | 
					    if (err) {
 | 
				
			||||||
 | 
					      console.error(err);
 | 
				
			||||||
 | 
					      process.exit(1);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    let jsonString = JSON.stringify({
 | 
				
			||||||
 | 
					      uptime: moment(uptime, 'YYYY-MM-DD HH:mm:ss').format('hh:mm MM-DD-YYYY'),
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    fs.writeFile(path.join(__dirname, 'data/json', 'uptime.json'), jsonString, err => {
 | 
				
			||||||
 | 
					      if (err) throw err;
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										7
									
								
								mkRaw.sh
									
										
									
									
									
								
							
							
						
						
									
										7
									
								
								mkRaw.sh
									
										
									
									
									
								
							| 
						 | 
					@ -11,4 +11,9 @@ echo "diskspace.raw updated"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
touch data/raw/real/usage.raw
 | 
					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
 | 
					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"
 | 
					echo "cpuusage.raw updated"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					touch data/raw/real/uptime.raw
 | 
				
			||||||
 | 
					uptime -s > data/raw/real/uptime.raw
 | 
				
			||||||
 | 
					echo "uptime.raw updated"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,11 +12,15 @@ new Vue({
 | 
				
			||||||
    fetchingCPUUsage: true,
 | 
					    fetchingCPUUsage: true,
 | 
				
			||||||
    cpuUsageNum: 0,
 | 
					    cpuUsageNum: 0,
 | 
				
			||||||
    cpuUsageStr: '',
 | 
					    cpuUsageStr: '',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    fetchingUptime: true,
 | 
				
			||||||
 | 
					    uptime: '',
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  created() {
 | 
					  created() {
 | 
				
			||||||
    this.fetchLastBuildDate();
 | 
					    this.fetchLastBuildDate();
 | 
				
			||||||
    this.fetchDiskSpace();
 | 
					    this.fetchDiskSpace();
 | 
				
			||||||
    this.fetchCPUUsage();
 | 
					    this.fetchCPUUsage();
 | 
				
			||||||
 | 
					    this.fetchUptime();
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  methods: {
 | 
					  methods: {
 | 
				
			||||||
    async fetchLastBuildDate() {
 | 
					    async fetchLastBuildDate() {
 | 
				
			||||||
| 
						 | 
					@ -46,5 +50,13 @@ new Vue({
 | 
				
			||||||
        this.fetchingCPUUsage = false;
 | 
					        this.fetchingCPUUsage = false;
 | 
				
			||||||
      } catch (err) { throw new Error(err); }
 | 
					      } catch (err) { throw new Error(err); }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    async fetchUptime() {
 | 
				
			||||||
 | 
					      this.fetchingUptime = true;
 | 
				
			||||||
 | 
					      try {
 | 
				
			||||||
 | 
					        let { data } = await axios.get('/api/uptime');
 | 
				
			||||||
 | 
					        this.uptime = data.uptime;
 | 
				
			||||||
 | 
					        this.fetchingUptime = false;
 | 
				
			||||||
 | 
					      } catch (err) { throw new Error(err); }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -54,9 +54,15 @@
 | 
				
			||||||
    <footer class="row">
 | 
					    <footer class="row">
 | 
				
			||||||
      <section class="section">
 | 
					      <section class="section">
 | 
				
			||||||
        <small class="small">
 | 
					        <small class="small">
 | 
				
			||||||
          Last Built:
 | 
					          Dashboard Built:
 | 
				
			||||||
          <span v-if="fetchingLastBuildDate" class="load smallest"></span>
 | 
					          <span v-if="fetchingLastBuildDate" class="load smallest"></span>
 | 
				
			||||||
          <span v-else class="fadein">{{lastBuildDate}}</span>
 | 
					          <em v-else class="fadein">{{lastBuildDate}}</em>
 | 
				
			||||||
 | 
					        </small>
 | 
				
			||||||
 | 
					        /
 | 
				
			||||||
 | 
					        <small class="small">
 | 
				
			||||||
 | 
					          Uptime:
 | 
				
			||||||
 | 
					          <span v-if="fetchingUptime" class="load smallest"></span>
 | 
				
			||||||
 | 
					          <em v-else class="fadein">{{uptime}}</em>
 | 
				
			||||||
        </small>
 | 
					        </small>
 | 
				
			||||||
      </section>
 | 
					      </section>
 | 
				
			||||||
    </footer>
 | 
					    </footer>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue