systeminformation 终极指南:快速上手 Node.js 系统信息采集神器
systeminformation 是一个轻量级的 Node.js 库,专门用于获取详尽的硬件系统和操作系统信息。它提供了超过 50 种函数来一键获取 CPU、内存、磁盘、网络、电池等关键系统数据,支持 Linux、macOS、Windows、FreeBSD、OpenBSD、NetBSD、SunOS 和 Android 等多个平台,且无需任何 npm 依赖包。
1. 工具概览与核心价值
systeminformation 库的核心价值在于其全面性和易用性。作为一个专门为后端服务器设计的系统信息采集工具,它能够帮助开发者和系统管理员:
- 实时监控系统状态:获取 CPU 使用率、内存占用、磁盘空间等关键指标
- 硬件检测与识别:精确识别 CPU 型号、内存规格、显卡信息等
- 跨平台兼容:支持从 Linux 服务器到 Windows 桌面系统的多种环境
- 零依赖设计:无需额外安装其他 npm 包,减少项目复杂度
2. 极速安装与配置
基础安装
只需一行命令即可完成安装:
npm install systeminformation --save
命令行快速体验
不想写代码?直接通过 npx 命令体验:
# 获取基础系统信息
npx systeminformation info
# 获取所有静态数据(可能需要30秒)
npx systeminformation
项目集成
在你的 Node.js 项目中引入并使用:
const si = require('systeminformation');
// 获取 CPU 信息
si.cpu()
.then(data => {
console.log('CPU 制造商:', data.manufacturer);
console.log('CPU 品牌:', data.brand);
console.log('核心数量:', data.cores);
})
.catch(error => console.error('获取信息失败:', error));
3. 实战应用场景
场景一:服务器监控面板
async function getServerStatus() {
try {
const [cpu, memory, disk] = await Promise.all([
si.cpu(),
si.mem(),
si.fsSize()
];
return {
cpuUsage: cpu,
memoryUsage: Math.round((memory.used / memory.total) * 100),
diskSpace: disk[0].use
};
} catch (error) {
console.error('监控数据获取失败:', error);
}
}
场景二:系统健康检查
const si = require('systeminformation');
async function healthCheck() {
const systemInfo = await si.system();
const osInfo = await si.osInfo();
const cpuInfo = await si.cpu();
console.log('系统型号:', systemInfo.model);
console.log('操作系统:', osInfo.distro);
console.log('CPU 核心数:', cpuInfo.cores);
}
场景三:资源预警系统
const si = require('systeminformation');
setInterval(async () => {
const memory = await si.mem();
const usagePercent = Math.round((memory.used / memory.total) * 100);
if (usagePercent > 90) {
console.warn('⚠️ 内存使用率过高:', usagePercent + '%');
}
}, 60000); // 每分钟检查一次
4. 高级用法与技巧
批量获取数据
const si = require('systeminformation');
async function getAllSystemInfo() {
const staticData = await si.getStaticData();
const dynamicData = await si.getDynamicData();
console.log('静态信息:', staticData);
console.log('动态信息:', dynamicData);
}
自定义数据过滤
const si = require('systeminformation');
// 只获取需要的字段
async function getEssentialInfo() {
const cpu = await si.cpu();
const memory = await si.mem();
return {
cpuBrand: cpu.brand,
totalMemory: Math.round(memory.total / 1024 / 1024 / 1024) + 'GB',
freeMemory: Math.round(memory.free / 1024 / 1024 / 1024) + 'GB'
};
}
错误处理最佳实践
const si = require('systeminformation');
async function safeSystemQuery() {
try {
const data = await si.cpuTemperature();
if (data.main && data.main > 80) {
console.warn('🔥 CPU 温度过高:', data.main + '°C');
} else {
console.log('CPU 温度正常:', data.main + '°C');
}
} catch (error) {
console.error('温度检测失败,可能不支持当前系统');
}
}
5. 生态整合方案
与监控系统集成
systeminformation 可以轻松集成到现有的监控生态中:
- Prometheus 集成:将系统信息导出为 Prometheus 指标格式
- Grafana 可视化:在 Grafana 面板中展示实时系统数据
- Kubernetes 监控:在容器环境中监控节点资源使用情况
自定义监控脚本
const si = require('systeminformation');
const fs = require('fs');
async function logSystemMetrics() {
const metrics = await si.getDynamicData();
const timestamp = new Date().toISOString();
const logEntry = {
timestamp,
cpuLoad: metrics.currentLoad,
memoryUsage: metrics.mem,
diskUsage: metrics.fsSize
};
fs.appendFileSync('system_metrics.log', JSON.stringify(logEntry) + '\n');
}
// 每小时记录一次
setInterval(logSystemMetrics, 60 * 60 * 1000);
自动化运维应用
结合其他工具实现自动化运维:
const si = require('systeminformation');
const { exec } = require('child_process');
async function autoScaleCheck() {
const load = await si.currentLoad();
if (load.currentLoad > 80) {
console.log('系统负载过高,触发扩容流程');
// 这里可以集成云平台的扩容 API
}
}
通过本指南,你已经掌握了 systeminformation 库的核心用法和最佳实践。这个强大的工具将帮助你轻松构建专业的系统监控解决方案,无论是个人开发环境还是企业级服务器集群,都能提供准确可靠的系统信息支持。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考




