linux

如何用JS监控Linux服务器性能

小樊
46
2025-10-05 22:04:13
栏目: 云计算

要使用JavaScript监控Linux服务器的性能,您可以通过以下几种方法:

  1. 使用Node.js的os模块:

Node.js是一个基于Chrome V8引擎的JavaScript运行时环境。它提供了一个名为os的内置模块,可以用来获取操作系统相关的信息。例如,您可以获取CPU使用率、内存使用情况、磁盘空间等信息。

以下是一个简单的示例,展示了如何使用os模块获取服务器性能信息:

const os = require('os');

// 获取CPU信息
const cpuInfo = os.cpus();
console.log('CPU Info:', cpuInfo);

// 获取内存使用情况
const totalMemory = os.totalmem();
const freeMemory = os.freemem();
console.log('Total Memory:', totalMemory);
console.log('Free Memory:', freeMemory);

// 获取磁盘空间信息
os.diskUsage('/', (err, stats) => {
  if (err) throw err;
  console.log('Disk Usage:', stats);
});
  1. 使用第三方库:

有许多第三方库可以帮助您更轻松地监控Linux服务器的性能。例如,pidusage库可以用来获取进程的资源使用情况,systeminformation库可以提供详细的系统信息。

要使用这些库,您需要先安装它们:

npm install pidusage systeminformation

然后在您的JavaScript代码中使用它们:

const pidusage = require('pidusage');
const si = require('systeminformation');

// 获取当前进程的资源使用情况
pidusage(process.pid, (err, stats) => {
  if (err) throw err;
  console.log('Process Stats:', stats);
});

// 获取系统信息
si.cpu()
  .then(data => {
    console.log('CPU Info:', data);
  })
  .catch(err => {
    console.error(err);
  });

si.mem()
  .then(data => {
    console.log('Memory Info:', data);
  })
  .catch(err => {
    console.error(err);
  });

si.diskLayout()
  .then(data => {
    console.log('Disk Layout:', data);
  })
  .catch(err => {
    console.error(err);
  });
  1. 使用Web界面:

您还可以创建一个Web界面来展示服务器性能信息。这可以通过使用诸如Express.js之类的Web框架和Socket.IO之类的实时通信库来实现。

首先,安装所需的库:

npm install express socket.io

然后创建一个简单的Web服务器,展示服务器性能信息:

const express = require('express');
const http = require('http');
const socketIo = require('socket.io');
const os = require('os');

const app = express();
const server = http.createServer(app);
const io = socketIo(server);

app.get('/', (req, res) => {
  res.sendFile(__dirname + '/index.html');
});

io.on('connection', socket => {
  setInterval(() => {
    const cpuInfo = os.cpus();
    const totalMemory = os.totalmem();
    const freeMemory = os.freemem();

    socket.emit('serverStats', {
      cpuInfo,
      totalMemory,
      freeMemory
    });
  }, 1000);
});

server.listen(3000, () => {
  console.log('Server is running on port 3000');
});

index.html文件中,您可以创建一个简单的HTML页面来展示这些信息:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Server Stats</title>
</head>
<body>
  <h1>Server Stats</h1>
  <div id="cpuInfo"></div>
  <div id="memoryInfo"></div>

  <script src="/socket.io/socket.io.js"></script>
  <script>
    const socket = io();

    socket.on('serverStats', data => {
      document.getElementById('cpuInfo').innerHTML = JSON.stringify(data.cpuInfo, null, 2);
      document.getElementById('memoryInfo').innerHTML = `Total Memory: ${data.totalMemory}, Free Memory: ${data.freeMemory}`;
    });
  </script>
</body>
</html>

现在,当您访问http://localhost:3000时,您将看到服务器性能信息的实时更新。

0
看了该问题的人还看了