用 Node.js 把重复性工作自动化、把监控与分析可视化、把部署与编排标准化,从而提升 Linux 系统的整体效率与可维护性。
// monitor.js
const os = require('os');
const cron = require('node-cron');
const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
transports: [new winston.transports.File({ filename: 'monitor.log' })],
});
function getMetrics() {
const load = os.loadavg(); // 1/5/15 分钟负载
const total = os.totalmem(); // 总内存(字节)
const free = os.freemem(); // 可用内存(字节)
const used = total - free;
const memUsage = (used / total * 100).toFixed(2);
return { ts: new Date().toISOString(), load, memUsage: `${memUsage}%` };
}
function checkThresholds(m) {
const cpuCores = os.cpus().length;
if (m.load[0] > cpuCores * 1.5) {
logger.warn(`High load: ${m.load[0]} (cores: ${cpuCores})`);
}
const memPct = parseFloat(m.memUsage);
if (memPct > 85) {
logger.warn(`High memory usage: ${m.memUsage}`);
}
}
// 每 1 分钟执行一次
cron.schedule('* * * * *', () => {
const m = getMetrics();
logger.info('metrics', m);
checkThresholds(m);
});
logger.info('Monitor started');
/path/monitor.log {
daily
rotate 7
compress
missingok
copytruncate
}