商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > 如何利用JS日志监控Linux性能

如何利用JS日志监控Linux性能

  发布于2026-07-05 阅读(0)

扫一扫,手机访问

在日常运维中,Linux服务器的性能监控是个绕不开的话题。你当然可以装一套Prometheus+Grafana,但有时候我们只是想要一个轻量、快速、能按需定制的方案。这时候,用Node.js写一个脚本,直接调用系统命令来抓取数据并写入日志,反而更灵活、更可控。下面就来拆解一下具体的实现思路。

  1. 前提条件:Node.js环境是必须的。如果还没安装,去官网下个LTS版本装好就行。

  2. 新建一个Ja vaScript文件,比如叫monitor.js

  3. 在文件里写上如下代码,核心逻辑就是通过child_process模块执行Linux命令,再异步获取输出。

const fs = require('fs');
const { exec } = require('child_process');

// 封装命令执行函数,返回Promise便于异步处理
function executeCommand(command) {
  return new Promise((resolve, reject) => {
    exec(command, (error, stdout, stderr) => {
      if (error) {
        reject(error);
      } else {
        resolve(stdout.trim());
      }
    });
  });
}

// 将性能数据追加写入日志文件
function logPerformanceData(data) {
  const logEntry = `${new Date().toISOString()} - ${data}\n`;
  fs.appendFile('performance.log', logEntry, (err) => {
    if (err) {
      console.error('Error writing to log file:', err);
    }
  });
}

// 主监控函数,依次获取CPU、内存、磁盘信息
async function monitorPerformance() {
  try {
    // 获取CPU使用率(load a verage)
    const cpuUsage = await executeCommand('top -bn1 | grep load | awk '{printf("%.2f"), $(NF-2)}'');
    console.log(`CPU Usage: ${cpuUsage}`);

    // 获取内存使用百分比
    const memoryUsage = await executeCommand('free -m | grep Mem | awk '{printf("%.2f"), $3/$2 * 100}'');
    console.log(`Memory Usage: ${memoryUsage}`);

    // 获取磁盘使用率(根分区)
    const diskUsage = await executeCommand('df -h | grep / | awk '{print $5}'');
    console.log(`Disk Usage: ${diskUsage}`);

    // 记录到日志
    logPerformanceData(`CPU Usage: ${cpuUsage}, Memory Usage: ${memoryUsage}, Disk Usage: ${diskUsage}`);
  } catch (error) {
    console.error('Error monitoring performance:', error);
  }
}

// 每10秒执行一次监控
setInterval(monitorPerformance, 10000);
  1. 在终端中运行这个脚本:
node monitor.js

脚本启动后,每10秒就会抓一次CPU负载、内存占用和磁盘使用率,并追加到performance.log里。你也可以根据实际需求调整监控间隔(把10000改成你想要的毫秒数),或者增加其他指标,比如网络I/O、进程数等。

需要说明的是,这个示例更偏向演示思路——用最简单的方式把数据拿到并落盘。生产环境里,你可能会遇到更复杂的场景:命令执行失败的处理、日志轮转、数据格式标准化、甚至直接推送到远程存储。到那时,不妨考虑结合pm2做进程守护,或者用winston这类日志库来替代简单的fs.appendFile。当然,如果监控规模真的上去了,专业工具才是正道——Prometheus+Grafana依然是扛把子。不过,手边临时用Node.js搭一个,三两下就能跑起来,不也挺香吗?

本文转载于:https://www.yisu.com/ask/18829010.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注