
一个非常简单的监视器,用于内置os ,Node.js中的fs模块。
允许您观察一些OS参数,例如免费内存,加载平均或免费磁盘空间。
根据MIT许可发布。
要安装最新稳定版本的os-monitor :
npm install os-monitor
如果您使用的是Node.js的旧版本(比V18.15.x年龄大),则可能需要os-monitor的旧版本(1.x);它支持node.js回到v0.10.x:
npm install os-monitor@legacy
const { Monitor } = require ( "os-monitor" ) ;
const monitor = new Monitor ( ) ;
// basic usage
monitor . start ( ) ;
// more advanced usage with configs.
monitor . start ( { delay : 3000 // interval in ms between monitor cycles
, freemem : 1000000000 // freemem under which event 'freemem' is triggered
, uptime : 1000000 // number of secs over which event 'uptime' is triggered
, diskfree : {
'/' : 100000 , // number of free blocks under which event 'diskfree' is triggered
'/home' : 100000
}
, critical1 : 0.7 // loadavg1 over which event 'loadavg1' is triggered
, critical5 : 0.7 // loadavg5 over which event 'loadavg5' is triggered
, critical15 : 0.7 // loadavg15 over which event 'loadavg15' is triggered
, silent : false // set true to mute event 'monitor'
, stream : false // set true to enable the monitor as a Readable Stream
, immediate : false // set true to execute a monitor cycle at start()
} ) ;
// define handler that will always fire every cycle
monitor . on ( 'monitor' , ( event ) => {
console . log ( event . type , 'This event always happens on each monitor cycle!' ) ;
} ) ;
// define handler for a too high 1-minute load average
monitor . on ( 'loadavg1' , ( event ) => {
console . log ( event . type , 'Load average is exceptionally high!' ) ;
} ) ;
// define handler for a too low free memory
monitor . on ( 'freemem' , ( event ) => {
console . log ( event . type , 'Free memory is very low!' ) ;
} ) ;
// define a throttled handler
monitor . throttle ( 'loadavg5' , ( event ) => {
// whatever is done here will not happen
// more than once every 5 minutes(300000 ms)
} , monitor . minutes ( 5 ) ) ;
// change config while monitor is running
monitor . config ( {
freemem : 0.3 // alarm when 30% or less free memory available
} ) ;
// stop monitor
monitor . stop ( ) ;
// check whether monitor is running or not
monitor . isRunning ( ) ; // -> true / false
// use as readable stream
monitor . start ( { stream : true } ) . pipe ( process . stdout ) ;每个监视器周期之间的毫秒延迟。默认值:3000
触发事件“ freemem”的字节中的内存量。也可以是总内存的一定百分比。默认值:0
触发事件“正常运行时间”的秒数。默认值:未定义
包含自由块值的对象,对于给定的文件系统路径,触发事件“磁盘”的对象。由Node.js v18.15.x及以后支持。 (参考)默认值:{}
触发事件“ LoadAvg1”的1分钟负载的值。默认值:os.cpus()。长度
(一个特定于UNIX的概念,负载的平均值是系统活动的量度,由操作系统计算并表示为分数数。作为经验法则,负载的平均值理想情况下应小于系统中逻辑CPU的数量。
触发事件“ LoadAvg5”的5分钟负载的值。默认值:os.cpus()。长度
触发事件“ LoadAvg15”的15分钟负载的值。默认值:os.cpus()。长度
设置为静音事件“监视器”。默认值:false
设置为true以启用监视器作为可读流。默认值:false
设置为true以在start()处执行监视器周期。默认值:false
monitor.version属性包含os-monitor版本字符串。
启动显示器。接受可选的选项对象。
停止监视器。
检查监视器是否正在运行;返回布尔人。
接受可选的选项对象并更新监视器配置。始终返回监视器配置选项。
将监视器配置重置为其默认值。
为指定的事件类型添加了一个侦听器。受支持的事件是:“监视”,“正常运行时间”,“ freemem”,“ diskfree”,“ loadAvg1','loadAvg5','loadAvg15','start'start',stop','stop','stop','config','recont','repot','repot',“ destion'destion''。
为指定的事件类型添加一次性侦听器。仅在下次启动事件时,就会调用此听众,然后将其删除。
添加了一个节流的听众。节流的听众不会被执行一次以上,每毫秒毫秒毫秒。
删除先前使用.throttle()添加的节流侦听器。 handler必须是原始功能。
返回一个承诺,该承诺在触发eventType时用事件对象解决。
永久停止并禁用监视器。
获得适量的毫秒的便利方法。
monitor . seconds ( 10 ) ; // -> 10000 ms
monitor . minutes ( 5 ) ; // -> 300000 ms
monitor . hours ( 1 ) ; // -> 3600000 ms
monitor . days ( 1 ) ; // -> 86400000 ms
// start with a delay of 5000 ms
monitor . start ( { delay : monitor . seconds ( 5 ) } ) ;方便方法获取适量的文件系统块。
monitor . blocks ( 100000000 , 4096 ) ; // -> 24415 blocks
// start by observing file system path `/filesystem`
monitor . start ( {
diskfree : {
'/filesystem' : monitor . blocks ( 100000000 , 4096 )
}
} ) ; 提供的事件对象中有一些有用的信息:
{
"type": "monitor", // event type
"loadavg": [
0.4599609375,
0.53076171875,
0.4990234375
], // load average values for 1, 5, 15 minutes
"uptime": 1614056, // os uptime in seconds
"freemem": 241262592, // free memory available in bytes
"totalmem": 2147483648, // total memory available in bytes
"diskfree": {
"/": 25786328,
"/home": 12786329
}, // available blocks per file system path, if any config was passed for 'diskfree' event
"timestamp": 1394766898 // UNIX Timestamp
}
所有受支持的事件均为:“监视器”,“正常运行时间”,“ freemem”,“ diskfree”,“ loadAvg1','loadAvg5','loadAvg15','start'start',stop','stop','stop','config','repent','repot','destrot''。请注意, os-monitor是EventEmitter的一个实例。
活动API文档:Nodejs.org/api/events
os-monitor也可以用作可读的流。
monitor.start({ stream: true });
// write to STDOUT
monitor.pipe(process.stdout);
// write to a file
let fs = require('fs'),
logFile = fs.createWriteStream('/tmp/log.txt', {flags: 'a'});
monitor.pipe(logFile);
os-monitor支持Promise,异步/等待:使用.when(eventType)返回承诺。
monitor.when('freemem').then(event => {
// ...
});
async function callback() {
let event = await monitor.when('uptime');
// ...
}
需要并发监视器实例吗?可以使用Monitor类创建多个实例:
const { Monitor } = require('os-monitor');
let monitor1 = new Monitor();
let monitor2 = new Monitor();
let monitor3 = new Monitor();
os-monitor根据MIT许可发布。
100%免费: os-monitor可以在专有和开源项目中自由使用。
需要归因:您必须将作者的姓名和许可信息保留在任何分布式代码中。这些项目不需要面向用户,并且可以保留在代码库中。