发布于2026-07-05 阅读(0)
扫一扫,手机访问
在日常运维中,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搭一个,三两下就能跑起来,不也挺香吗?
下一篇:JS日志对Linux安全有何影响
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8