-
Notifications
You must be signed in to change notification settings - Fork 4
/
getSystemStats.js
86 lines (77 loc) · 2.48 KB
/
getSystemStats.js
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import si from "systeminformation";
import path from "path";
import { debugToFile } from "./helpers.js";
export function getMemoryUsage() {
return new Promise((resolve, reject) => {
si.mem()
.then((memory) => {
const totalMemory = memory.total;
const usedMemory = memory.active; // 'active' is usually what's actually used
const memoryUsagePercent = (usedMemory / totalMemory) * 100;
resolve(memoryUsagePercent.toFixed(1)); // Return memory usage as a percentage
})
.catch((error) => {
debugToFile(`getMemoryUsage(): ${error}`, () => {});
reject(error);
});
});
}
export function getCpuUsage() {
return new Promise((resolve, reject) => {
si.currentLoad()
.then((load) => {
const currentLoad = load.currentLoad;
resolve(currentLoad);
})
.catch((error) => {
debugToFile(`getCpuUsage(): ${error}`, () => {});
reject(error);
});
});
}
export function getDiskUsage(installDir) {
return new Promise((resolve, reject) => {
si.fsSize()
.then((drives) => {
let diskUsagePercent = 0;
// Sort drives by the length of their mount point, descending
drives.sort((a, b) => b.mount.length - a.mount.length);
// Find the drive with the longest mount point that is a prefix of installDir
const installDrive = drives.find((drive) => {
return installDir.startsWith(drive.mount);
});
if (installDrive) {
diskUsagePercent =
100 - (installDrive.available / installDrive.size) * 100;
} else {
debugToFile(
`getDiskUsage(): Drive for ${installDir} not found.`,
() => {}
);
}
resolve(diskUsagePercent.toFixed(1));
})
.catch((error) => {
debugToFile(`getDiskUsage(): ${error}`, () => {});
reject(error);
});
});
}
export function getCpuTemperature() {
return new Promise((resolve, reject) => {
si.cpuTemperature()
.then((data) => {
// debugToFile(`CPU data: ${JSON.stringify(data, null, 2)}`, () => {});
const cpuTemp = data.main;
if (cpuTemp !== null && cpuTemp !== undefined) {
resolve(cpuTemp.toFixed(1)); // Return CPU temperature as a fixed-point number
} else {
resolve(0);
}
})
.catch((error) => {
debugToFile(`Error fetching CPU temperature: ${error}`, () => {});
reject(error);
});
});
}