summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-06-09 01:45:25 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-06-09 01:45:25 +0900
commit6eff8fde74e01fa3527585ec1fbd3629d51bc97a (patch)
tree55c39e88edb7e68f1928554b85bd036c96bc7ed8 /src
parentMerge pull request #1685 from 2vg/patch-1 (diff)
downloadsharkey-6eff8fde74e01fa3527585ec1fbd3629d51bc97a.tar.gz
sharkey-6eff8fde74e01fa3527585ec1fbd3629d51bc97a.tar.bz2
sharkey-6eff8fde74e01fa3527585ec1fbd3629d51bc97a.zip
サーバーの統計情報をメモリに記憶するようにするなど
Diffstat (limited to 'src')
-rw-r--r--src/client/app/common/views/widgets/server.cpu-memory.vue9
-rw-r--r--src/index.ts4
-rw-r--r--src/server-stats.ts (renamed from src/utils/stats.ts)13
-rw-r--r--src/server/api/stream/server.ts20
4 files changed, 40 insertions, 6 deletions
diff --git a/src/client/app/common/views/widgets/server.cpu-memory.vue b/src/client/app/common/views/widgets/server.cpu-memory.vue
index fbd36b255a..6bf998c249 100644
--- a/src/client/app/common/views/widgets/server.cpu-memory.vue
+++ b/src/client/app/common/views/widgets/server.cpu-memory.vue
@@ -76,9 +76,15 @@ export default Vue.extend({
},
mounted() {
this.connection.on('stats', this.onStats);
+ this.connection.on('statsLog', this.onStatsLog);
+ this.connection.send({
+ type: 'requestLog',
+ id: Math.random().toString()
+ });
},
beforeDestroy() {
this.connection.off('stats', this.onStats);
+ this.connection.off('statsLog', this.onStatsLog);
},
methods: {
onStats(stats) {
@@ -94,6 +100,9 @@ export default Vue.extend({
this.cpuP = (stats.cpu_usage * 100).toFixed(0);
this.memP = (stats.mem.used / stats.mem.total * 100).toFixed(0);
+ },
+ onStatsLog(statsLog) {
+ statsLog.forEach(stats => this.onStats(stats));
}
}
});
diff --git a/src/index.ts b/src/index.ts
index bcd6561691..42a4f484e6 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -17,7 +17,7 @@ import ProgressBar from './utils/cli/progressbar';
import EnvironmentInfo from './utils/environmentInfo';
import MachineInfo from './utils/machineInfo';
import DependencyInfo from './utils/dependencyInfo';
-import stats from './utils/stats';
+import serverStats from './server-stats';
import loadConfig from './config/load';
import { Config } from './config/types';
@@ -49,7 +49,7 @@ function main() {
masterMain(opt);
ev.mount();
- stats();
+ serverStats();
} else {
workerMain(opt);
}
diff --git a/src/utils/stats.ts b/src/server-stats.ts
index cfb710f5e1..85aa85b682 100644
--- a/src/utils/stats.ts
+++ b/src/server-stats.ts
@@ -9,10 +9,16 @@ const ev = new Xev();
* Report stats regularly
*/
export default function() {
+ const log = [];
+
+ ev.on('requestServerStatsLog', id => {
+ ev.emit('serverStatsLog:' + id, log);
+ });
+
setInterval(() => {
osUtils.cpuUsage(cpuUsage => {
const disk = diskusage.checkSync(os.platform() == 'win32' ? 'c:' : '/');
- ev.emit('stats', {
+ const stats = {
cpu_usage: cpuUsage,
mem: {
total: os.totalmem(),
@@ -21,7 +27,10 @@ export default function() {
disk,
os_uptime: os.uptime(),
process_uptime: process.uptime()
- });
+ };
+ ev.emit('serverStats', stats);
+ log.push(stats);
+ if (log.length > 50) log.shift();
});
}, 1000);
}
diff --git a/src/server/api/stream/server.ts b/src/server/api/stream/server.ts
index 4ca2ad1b10..342170a21e 100644
--- a/src/server/api/stream/server.ts
+++ b/src/server/api/stream/server.ts
@@ -11,9 +11,25 @@ export default function(request: websocket.request, connection: websocket.connec
}));
};
- ev.addListener('stats', onStats);
+ connection.on('message', async data => {
+ const msg = JSON.parse(data.utf8Data);
+
+ switch (msg.type) {
+ case 'requestLog':
+ ev.once('serverStatsLog:' + msg.id, statsLog => {
+ connection.send(JSON.stringify({
+ type: 'statsLog',
+ body: statsLog
+ }));
+ });
+ ev.emit('requestServerStatsLog', msg.id);
+ break;
+ }
+ });
+
+ ev.addListener('serverStats', onStats);
connection.on('close', () => {
- ev.removeListener('stats', onStats);
+ ev.removeListener('serverStats', onStats);
});
}