当前位置:

首页 > 编程开发 > 如何利用JS日志监控Linux性能

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

利用Node.js的child_process模块执行Linux命令,异步获取CPU、内存及磁盘使用率等性能数据,通过fs.appendFile每10秒写入日志文件。该方案轻量、按需,适用于服务器性能实时监控。

在日常运维中,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搭一个,三两下就能跑起来,不也挺香吗?

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
作者最新文章
编程开发 Linux
相关文章 更多
linux删除用户与用户组的方法及命令教程
linux删除用户与用户组的方法及命令教程

掌握Linux中删除用户和用户组的正确方法,避免残留文件和进程冲突。本文深入解析userdel和groupdel命令的参数用法,提供处理“用户仍在使用”等常见错误的实战方案。

Linux如何开启端口号?开放端口命令详解
Linux如何开启端口号?开放端口命令详解

详细讲解Linux如何开启端口号以及常用的开放端口命令。

crossover卸载软件下载及重新安装教程
crossover卸载软件下载及重新安装教程

遇到CrossOver运行错误或需要更新版本时,如何彻底卸载旧版并干净重装?本教程详解macOS和Linux下的卸载步骤、残留文件清理方法及官方下载渠道,确保软件环境纯净稳定。

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

PDF教程
PDF教程

正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

Mac软件 更多
IntelliJ IDEA macOS版
IntelliJ IDEA macOS版
Mac

IntelliJ IDEA 是 JetBrains 推出的专业集成开发环境,重点服务于 Java、Kotlin 与 JVM 项目开发。软件集成代码补全、静态检查、重构、调试、测试、版本控制及构建工具,并可借助插件扩展语言和框架支持。

PyCharm macOS版
PyCharm macOS版
Mac

JetBrains PyCharm 是面向 Python 开发者的集成开发环境,提供智能补全、代码检查、重构、调试、测试、版本控制及虚拟环境管理功能。Mac 版兼容 Intel 与 Apple 芯片,核心功能可免费使用。

WebStorm macOS版
WebStorm macOS版
Mac

JetBrains WebStorm 是面向 JavaScript、TypeScript 和现代 Web 技术的专业集成开发环境,可智能理解项目结构,提供代码补全、重构、错误检查、运行调试、测试及 Git 工具。

WINDOWS 更多
IntelliJ IDEA Windows版
IntelliJ IDEA Windows版
Windows

JetBrains IntelliJ IDEA 是以 Java、Kotlin 和 JVM 项目为核心的专业集成开发环境,提供智能补全、代码检查、安全重构、调试、测试、版本控制及构建工具集成。统一发行版的核心功能可免费用于商业和非商业项目,

PhpStorm Windows版
PhpStorm Windows版
Windows

PhpStorm 是 JetBrains 面向 PHP 与现代 Web 开发打造的专业集成开发环境,提供代码补全、静态检查、重构、调试、测试、数据库、版本控制及前端语言支持。Windows 用户可直接下载安装程序,

PyCharm Windows版
PyCharm Windows版
Windows

PyCharm 是 JetBrains 推出的 Python 集成开发环境,提供智能代码补全、错误检查、重构、调试、测试、Git、终端及 Jupyter Notebook 支持。统一版安装后可体验 30 天 Pro 功能,