如何利用JS日志监控Linux性能
利用Node.js的child_process模块执行Linux命令,异步获取CPU、内存及磁盘使用率等性能数据,通过fs.appendFile每10秒写入日志文件。该方案轻量、按需,适用于服务器性能实时监控。
在日常运维中,Linux服务器的性能监控是个绕不开的话题。你当然可以装一套Prometheus+Grafana,但有时候我们只是想要一个轻量、快速、能按需定制的方案。这时候,用Node.js写一个脚本,直接调用系统命令来抓取数据并写入日志,反而更灵活、更可控。下面就来拆解一下具体的实现思路。
前提条件:Node.js环境是必须的。如果还没安装,去官网下个LTS版本装好就行。
新建一个Ja vaScript文件,比如叫
monitor.js。在文件里写上如下代码,核心逻辑就是通过
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);
- 在终端中运行这个脚本:
node monitor.js
脚本启动后,每10秒就会抓一次CPU负载、内存占用和磁盘使用率,并追加到performance.log里。你也可以根据实际需求调整监控间隔(把10000改成你想要的毫秒数),或者增加其他指标,比如网络I/O、进程数等。
需要说明的是,这个示例更偏向演示思路——用最简单的方式把数据拿到并落盘。生产环境里,你可能会遇到更复杂的场景:命令执行失败的处理、日志轮转、数据格式标准化、甚至直接推送到远程存储。到那时,不妨考虑结合pm2做进程守护,或者用winston这类日志库来替代简单的fs.appendFile。当然,如果监控规模真的上去了,专业工具才是正道——Prometheus+Grafana依然是扛把子。不过,手边临时用Node.js搭一个,三两下就能跑起来,不也挺香吗?
IntelliJ IDEA 是 JetBrains 推出的专业集成开发环境,重点服务于 Java、Kotlin 与 JVM 项目开发。软件集成代码补全、静态检查、重构、调试、测试、版本控制及构建工具,并可借助插件扩展语言和框架支持。
JetBrains PyCharm 是面向 Python 开发者的集成开发环境,提供智能补全、代码检查、重构、调试、测试、版本控制及虚拟环境管理功能。Mac 版兼容 Intel 与 Apple 芯片,核心功能可免费使用。
JetBrains WebStorm 是面向 JavaScript、TypeScript 和现代 Web 技术的专业集成开发环境,可智能理解项目结构,提供代码补全、重构、错误检查、运行调试、测试及 Git 工具。
JetBrains IntelliJ IDEA 是以 Java、Kotlin 和 JVM 项目为核心的专业集成开发环境,提供智能补全、代码检查、安全重构、调试、测试、版本控制及构建工具集成。统一发行版的核心功能可免费用于商业和非商业项目,
PhpStorm 是 JetBrains 面向 PHP 与现代 Web 开发打造的专业集成开发环境,提供代码补全、静态检查、重构、调试、测试、数据库、版本控制及前端语言支持。Windows 用户可直接下载安装程序,
PyCharm 是 JetBrains 推出的 Python 集成开发环境,提供智能代码补全、错误检查、重构、调试、测试、Git、终端及 Jupyter Notebook 支持。统一版安装后可体验 30 天 Pro 功能,






