123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- const express = require('express');
- const router = express.Router();
- const os = require('os');
- const logger = require('../logger');
- // 获取系统状态
- router.get('/', (req, res) => {
- try {
- // 收集系统信息
- const cpuLoad = os.loadavg()[0] / os.cpus().length * 100;
- const totalMem = os.totalmem();
- const freeMem = os.freemem();
- const usedMem = totalMem - freeMem;
- const memoryUsage = `${Math.round(usedMem / totalMem * 100)}%`;
-
- // 组合结果
- const systemStatus = {
- dockerAvailable: true,
- containerCount: 0,
- cpuLoad: `${cpuLoad.toFixed(1)}%`,
- memoryUsage: memoryUsage,
- diskSpace: '未知',
- recentActivities: []
- };
-
- res.json(systemStatus);
- } catch (error) {
- logger.error('获取系统状态失败:', error);
- res.status(500).json({
- error: '获取系统状态失败',
- details: error.message
- });
- }
- });
- // 获取系统资源详情
- router.get('/system-resource-details', (req, res) => {
- try {
- const { type } = req.query;
- let data = {};
-
- switch(type) {
- case 'memory':
- const totalMem = os.totalmem();
- const freeMem = os.freemem();
- const usedMem = totalMem - freeMem;
-
- data = {
- totalMemory: formatBytes(totalMem),
- usedMemory: formatBytes(usedMem),
- freeMemory: formatBytes(freeMem),
- memoryUsage: `${Math.round(usedMem / totalMem * 100)}%`
- };
- break;
-
- case 'cpu':
- const cpus = os.cpus();
- const loadAvg = os.loadavg();
-
- data = {
- cpuCores: cpus.length,
- cpuModel: cpus[0].model,
- cpuLoad: `${(loadAvg[0] / cpus.length * 100).toFixed(1)}%`,
- loadAvg1: loadAvg[0].toFixed(2),
- loadAvg5: loadAvg[1].toFixed(2),
- loadAvg15: loadAvg[2].toFixed(2)
- };
- break;
-
- case 'disk':
- // 简单的硬编码数据,在实际环境中应该调用系统命令获取
- data = {
- totalSpace: '100 GB',
- usedSpace: '30 GB',
- freeSpace: '70 GB',
- diskUsage: '30%'
- };
- break;
-
- default:
- return res.status(400).json({ error: '无效的资源类型' });
- }
-
- res.json(data);
- } catch (error) {
- logger.error('获取系统资源详情失败:', error);
- res.status(500).json({ error: '获取系统资源详情失败', details: error.message });
- }
- });
- // 格式化字节数为可读格式
- function formatBytes(bytes, decimals = 2) {
- if (bytes === 0) return '0 Bytes';
-
- const k = 1024;
- const dm = decimals < 0 ? 0 : decimals;
- const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
-
- const i = Math.floor(Math.log(bytes) / Math.log(k));
-
- return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
- }
- module.exports = router;
|