如何使用节点.js获取系统统计信息
How to get system statistics with node.js
我有一个分布式服务器系统。
有很多服务器,通过PubSub进行协调。所有这些都连接到统计服务器。每分钟服务器将其统计信息发送到统计信息服务器(处理的请求数,平均时间等)。
所以。。。最好在此统计信息中包含系统状态。我需要 CPU 负载(每个内核)和可用内存量。
我做了一些解决方法,并决定使用"exec"调用 linux 命令,解析答案并形成用于发送的 JSON 数据。
但是如何从命令行获取这些数据呢?
在Mac OS X上,我可以很容易地用geektool脚本获得我需要的一切,但在linux(debian)上,它们不起作用。
例如:
top -l 1 | awk '/PhysMem/ {print "Used: " $8 " Free: " $10}'
在Mac OS X Lion上,我得到:
Used: 3246M Free: 848M
只是 debian 中的一个错误...
在 Linux 上,你可以使用/proc。请参阅此处以获取一堆命令行示例以阅读统计信息。
最好直接从 Node 读取文件,使用 fs.readFile()
更新:还有操作系统API,它可能更好。示例用法:将 Node.js 中 os.cpus() 的输出转换为 percent
我直言,最好的选择是使用系统信息模块,
您可以在其中检索详细的硬件、系统和操作系统信息,包括 Linux、macOS、部分 Windows 和 FreeBSD 支持。
例如,要获取 CPU 信息:
const si = require('systeminformation');
// callback style
si.cpu(function(data) {
console.log('CPU-Information:');
console.log(data);
});
// promises style - new in version 3
si.cpu()
.then(data => console.log(data))
.catch(error => console.error(error));
// full async / await example (node >= 7.6)
async function cpu() {
try {
const data = await si.cpu();
console.log(data)
} catch (e) {
console.log(e)
}
}
此示例将产生以下结果:
{ manufacturer: 'Intel®',
brand: 'Core™ i5-3317U',
vendor: 'GenuineIntel',
family: '6',
model: '58',
stepping: '9',
revision: '',
voltage: '',
speed: '1.70',
speedmin: '0.80',
speedmax: '2.60',
cores: 4,
cache: { l1d: 32768, l1i: 32768, l2: 262144, l3: 3145728 } }
CPU-Information:
{ manufacturer: 'Intel®',
brand: 'Core™ i5-3317U',
vendor: 'GenuineIntel',
family: '6',
model: '58',
stepping: '9',
revision: '',
voltage: '',
speed: '1.70',
speedmin: '0.80',
speedmax: '2.60',
cores: 4,
cache: { l1d: 32768, l1i: 32768, l2: 262144, l3: 3145728 } }
您可以尝试 os-usage,它是top
命令的包装器。
它提供 CPU 使用情况和内存使用情况等统计信息。用法示例:
var usage = require('os-usage');
// create an instance of CpuMonitor
var cpuMonitor = new usage.CpuMonitor();
// watch cpu usage overview
cpuMonitor.on('cpuUsage', function(data) {
console.log(data);
// { user: '9.33', sys: '56.0', idle: '34.66' }
});
// watch processes that use most cpu percentage
cpuMonitor.on('topCpuProcs', function(data) {
console.log(data);
// [ { pid: '21749', cpu: '0.0', command: 'top' },
// { pid: '21748', cpu: '0.0', command: 'node' },
// { pid: '21747', cpu: '0.0', command: 'node' },
// { pid: '21710', cpu: '0.0', command: 'com.apple.iCloud' },
// { pid: '21670', cpu: '0.0', command: 'LookupViewServic' } ]
});
无耻的插头 -https://www.npmjs.com/package/microstats
还可以配置为在磁盘空间、CPU 或内存超过用户定义的阈值时提醒用户。 适用于 Linux、macOS 和 Windows。
- 数据绑定:'系统Char'不包含名为'xxxxx'
- Java-彩票统计解析器
- Javascript模块系统I'I’我正在努力,但搞不明白
- 是否可以在系统/电脑浏览器中访问手机摄像头
- Node JS中的排名系统算法
- 任何将(SSH)终端嵌入到一些HTML5表示系统中的想法(例如,show.js)
- 如何在foreach循环中对每个产品单独应用评级系统
- Javascript-修复搜索系统
- 是否有任何设置阻止JavaScript在系统上工作
- 如何组织用户系统的Mongo集合
- 数字文件命名系统
- 如何对单个页面进行密码保护(这不是身份验证系统的一部分)
- 动态代码中存在系统应用程序地址错误
- 从自己的安全系统中重新找回自己
- 统计ajax返回数据中的html元素
- 难以置信的简单密码系统不工作
- 如何使用jQuery对多个文本区域进行字数统计
- 在chrome.runtime消息系统中使用promise
- 当地址栏出现时,安卓系统上的css固定页脚被隐藏
- 如何使用节点.js获取系统统计信息