peng.peng
2 years ago
4 changed files with 83 additions and 2 deletions
@ -0,0 +1,66 @@ |
|||||
|
'use strict'; |
||||
|
const moment = require('moment'); |
||||
|
const diskinfo = require('diskinfo'); |
||||
|
const os = require('os-utils'); |
||||
|
|
||||
|
function getNodeResources(opts) { |
||||
|
return async function (ctx, next) { |
||||
|
let errMsg = { message: '获取节点资源失败' } |
||||
|
try { |
||||
|
//获取系统内存情况
|
||||
|
let freeMem = os.freemem() |
||||
|
let totalMem = os.totalmem() |
||||
|
let memory = Math.round(((totalMem - freeMem) / totalMem) * 1000) / 10 |
||||
|
//cpu利用率
|
||||
|
let cpuUsage = await getCPUUsage() |
||||
|
|
||||
|
//硬盘占用率数据
|
||||
|
let disk = await getDiskInfo(); |
||||
|
ctx.status = 200; |
||||
|
ctx.body = { disk, memory, cpu: Math.round(cpuUsage * 1000) / 10 }; |
||||
|
|
||||
|
} catch (error) { |
||||
|
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); |
||||
|
ctx.status = 400; |
||||
|
ctx.body = errMsg |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 获取硬盘信息 |
||||
|
*/ |
||||
|
async function getDiskInfo() { |
||||
|
return new Promise(function (resolve, reject) { |
||||
|
diskinfo.getDrives((err, aDrives) => { |
||||
|
let map = new Map() |
||||
|
//遍历所有磁盘信息
|
||||
|
let total = 0, used = 0; |
||||
|
for (var i = 0; i < aDrives.length; i++) { |
||||
|
if (!map.has(aDrives[i].mounted)) { |
||||
|
map.set(aDrives[i].mounted, true) |
||||
|
total += aDrives[i].blocks; //总量
|
||||
|
used += aDrives[i].used; //已使用
|
||||
|
} |
||||
|
} |
||||
|
let rate = Math.round(used / total * 1000) / 10 |
||||
|
resolve(rate); |
||||
|
}); |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 获取系统cpu利用率 |
||||
|
*/ |
||||
|
async function getCPUUsage() { |
||||
|
return new Promise((resolve, reject) => { |
||||
|
os.cpuUsage(function (v) { |
||||
|
resolve(v) |
||||
|
}); |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
module.exports = { |
||||
|
getNodeResources |
||||
|
} |
@ -0,0 +1,10 @@ |
|||||
|
'use strict'; |
||||
|
|
||||
|
const backups = require('../../controllers/homepage/index'); |
||||
|
|
||||
|
module.exports = function (app, router, opts, AuthCode) { |
||||
|
|
||||
|
app.fs.api.logAttr['GET/homepage/node/resources'] = { content: '获取节点资源信息', visible: true }; |
||||
|
router.get('/homepage/node/resources', backups.getNodeResources(opts)) |
||||
|
|
||||
|
}; |
@ -1,8 +1,11 @@ |
|||||
import React, { useEffect, useState } from 'react' |
import React, { useEffect, useState } from 'react' |
||||
import './style.less' |
import './style.less' |
||||
|
|
||||
function homePage (props) { |
function homePage(props) { |
||||
return <>nothing</> |
|
||||
|
return <div style={{ width: '100%', height: clientHeight, overflow: 'hidden' }}> |
||||
|
|
||||
|
</div> |
||||
} |
} |
||||
|
|
||||
export default homePage |
export default homePage |
Loading…
Reference in new issue