summaryrefslogtreecommitdiff
path: root/src/daemons/server-stats.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/daemons/server-stats.ts')
-rw-r--r--src/daemons/server-stats.ts42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/daemons/server-stats.ts b/src/daemons/server-stats.ts
new file mode 100644
index 0000000000..1403402508
--- /dev/null
+++ b/src/daemons/server-stats.ts
@@ -0,0 +1,42 @@
+import * as os from 'os';
+const osUtils = require('os-utils');
+import * as diskusage from 'diskusage';
+import Xev from 'xev';
+
+const ev = new Xev();
+
+const interval = 1000;
+
+/**
+ * Report server stats regularly
+ */
+export default function() {
+ const log = [];
+
+ ev.on('requestServerStatsLog', id => {
+ ev.emit('serverStatsLog:' + id, log);
+ });
+
+ async function tick() {
+ osUtils.cpuUsage(cpuUsage => {
+ const disk = diskusage.checkSync(os.platform() == 'win32' ? 'c:' : '/');
+ const stats = {
+ cpu_usage: cpuUsage,
+ mem: {
+ total: os.totalmem(),
+ free: os.freemem()
+ },
+ disk,
+ os_uptime: os.uptime(),
+ process_uptime: process.uptime()
+ };
+ ev.emit('serverStats', stats);
+ log.push(stats);
+ if (log.length > 50) log.shift();
+ });
+ }
+
+ tick();
+
+ setInterval(tick, interval);
+}