summary refs log tree commit diff
path: root/bundle/src/stats.ts
blob: 18bb85ca29ab00bf6575cdab9e34f36aa25648cf (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import os from "os";
import osu from "node-os-utils";
import { red } from "nanocolors";

export function initStats() {
	console.log(`[Path] running in ${__dirname}`);
	console.log(`[CPU] ${osu.cpu.model()} Cores x${osu.cpu.count()}`);
	console.log(`[System] ${os.platform()} ${os.arch()}`);
	console.log(`[Process] running with pid: ${process.pid}`);
	if (process.getuid && process.getuid() === 0) {
		console.warn(
			red(
				`[Process] Warning fosscord is running as root, this highly discouraged and might expose your system vulnerable to attackers. Please run fosscord as a user without root privileges.`
			)
		);
	}

	setInterval(async () => {
		const [cpuUsed, memory, network] = await Promise.all([
			osu.cpu.usage(),
			osu.mem.info(),
			osu.netstat.inOut(),
		]);
		var networkUsage = "";
		if (typeof network === "object") {
			networkUsage = `| [Network]: in ${network.total.inputMb}mb | out ${network.total.outputMb}mb`;
		}

		console.log(
			`[CPU] ${cpuUsed.toPrecision(3)}% | [Memory] ${Math.round(
				process.memoryUsage().rss / 1024 / 1024
			)}mb/${memory.totalMemMb.toFixed(0)}mb ${networkUsage}`
		);
	}, 1000 * 10);
}