
一個非常簡單的監視器,用於內置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可以在專有和開源項目中自由使用。
需要歸因:您必須將作者的姓名和許可信息保留在任何分佈式代碼中。這些項目不需要面向用戶,並且可以保留在代碼庫中。