feat: add cpu temp and swap memory to statistics

temp is currently hard-coded to C

also increased system info caching to 1s
This commit is contained in:
Bobby Wibowo 2022-08-19 10:38:24 +07:00
parent 86d9db3137
commit 991cfe134e
No known key found for this signature in database
GPG Key ID: 51C3A1E1E22D26CF
2 changed files with 31 additions and 7 deletions

View File

@ -815,14 +815,15 @@ const generateStats = async (req, res) => {
if (!data.cache && data.generating) { if (!data.cache && data.generating) {
stats[data.title] = false stats[data.title] = false
} else if (((Date.now() - data.generatedAt) <= 500) || data.generating) { } else if (((Date.now() - data.generatedAt) <= 1000) || data.generating) {
// Use cache for 500 ms (0.5 seconds) // Use cache for 1000 ms (1 second)
stats[data.title] = data.cache stats[data.title] = data.cache
} else { } else {
data.generating = true data.generating = true
data.generatedAt = Date.now() data.generatedAt = Date.now()
const cpu = await si.cpu() const cpu = await si.cpu()
const cpuTemperature = await si.cpuTemperature()
const currentLoad = await si.currentLoad() const currentLoad = await si.currentLoad()
const mem = await si.mem() const mem = await si.mem()
const time = si.time() const time = si.time()
@ -834,6 +835,10 @@ const generateStats = async (req, res) => {
CPU: `${cpu.cores} \u00d7 ${cpu.manufacturer} ${cpu.brand} @ ${cpu.speed.toFixed(2)}GHz`, CPU: `${cpu.cores} \u00d7 ${cpu.manufacturer} ${cpu.brand} @ ${cpu.speed.toFixed(2)}GHz`,
'CPU Load': `${currentLoad.currentLoad.toFixed(1)}%`, 'CPU Load': `${currentLoad.currentLoad.toFixed(1)}%`,
'CPUs Load': currentLoad.cpus.map(cpu => `${cpu.load.toFixed(1)}%`).join(', '), 'CPUs Load': currentLoad.cpus.map(cpu => `${cpu.load.toFixed(1)}%`).join(', '),
'CPU Temperature': {
value: cpuTemperature ? cpuTemperature.main : 'Not supported',
type: 'tempC' // temp value from this library is hard-coded to C
},
Memory: { Memory: {
value: { value: {
used: mem.active, used: mem.active,
@ -841,6 +846,15 @@ const generateStats = async (req, res) => {
}, },
type: 'byteUsage' type: 'byteUsage'
}, },
Swap: {
value: typeof mem.swapused === 'number' && typeof mem.swaptotal === 'number'
? {
used: mem.swapused,
total: mem.swaptotal
}
: null,
type: 'byteUsage'
},
Uptime: { Uptime: {
value: Math.floor(time.uptime), value: Math.floor(time.uptime),
type: 'uptime' type: 'uptime'

View File

@ -3045,13 +3045,23 @@ page.getStatistics = (params = {}) => {
parsed = page.getPrettyBytes(value) parsed = page.getPrettyBytes(value)
break break
case 'byteUsage': { case 'byteUsage': {
// Reasoning: https://github.com/sebhildebrandt/systeminformation/issues/464#issuecomment-756406053 if (typeof value === 'object') {
const totalForPercentage = typeof value.available !== 'undefined' // Reasoning: https://github.com/sebhildebrandt/systeminformation/issues/464#issuecomment-756406053
? (value.used + value.available) const totalForPercentage = value.available !== undefined
: value.total ? (value.used + value.available)
parsed = `${page.getPrettyBytes(value.used)} / ${page.getPrettyBytes(value.total)} (${(value.used / totalForPercentage * 100).toFixed(2)}%)` : value.total
parsed = `${page.getPrettyBytes(value.used)} / ${page.getPrettyBytes(value.total)} (${(value.used / totalForPercentage * 100).toFixed(2)}%)`
} else {
parsed = value
}
break break
} }
case 'tempC':
// TODO: Unit conversion when required?
parsed = typeof value === 'number'
? `${value} C`
: value
break
case 'uptime': case 'uptime':
parsed = page.getPrettyUptime(value) parsed = page.getPrettyUptime(value)
break break