
node.jsの組み込みos 、 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以降からサポートされています。 (ref。)デフォルト:{}
イベント「LoadAvg1」がトリガーされる1分の負荷平均の値。デフォルト:os.cpus()。長さ
(UNIX固有の概念である負荷平均は、オペレーティングシステムによって計算され、分数数として表されるシステムアクティビティの尺度です。経験則として、負荷平均はシステムの論理CPUの数よりも少ない必要があります。
5分間の値は、イベント「LoadAvg5」がトリガーされるかどうかにかかわります。デフォルト:os.cpus()。長さ
15分の値は、イベント「LoadAvg15」がトリガーされるかどうかにかかわります。デフォルト:os.cpus()。長さ
ミュートイベント「モニター」にtrueを設定します。デフォルト:false
モニターを読み取り可能なストリームとして有効にするには、trueを設定します。デフォルト:false
start()でモニターサイクルを実行するようにtrueを設定します。デフォルト:false
monitor.versionプロパティにはos-monitorバージョン文字列が含まれています。
モニターを起動します。オプションのオプションオブジェクトを受け入れます。
モニターを停止します。
モニターが実行されているかどうかを確認します。ブールを返します。
オプションのオプションオブジェクトを受け入れ、監視設定を更新します。常にモニター設定オプションを返します。
モニターのデフォルト値に監視をリセットします。
指定されたイベントタイプのリスナーを追加します。サポートされているイベントは、「モニター」、「アップタイム」、「フリーメム」、「ディスクフリー」、「LoadAVG1」、「LoadAvg5」、「LoadAvg15」、「start」、stop '、' config '、' reset '、' destroy '。
指定されたイベントタイプに1回限りのリスナーを追加します。このリスナーは、次回イベントが解雇されたときにのみ呼び出され、その後削除されます。
スロットルリスナーを追加します。スロットルリスナーは、ミリ秒ごとに1回以上実行されません。
.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
}
サポートされているすべてのイベントは、「モニター」、「アップタイム」、「フリーメム」、「ディスクフリー」、「LoadAVG1」、「LoadAvg5」、「LoadAvg15」、「Start」、「Stop」、「Config」、「Reset」、「Destroy」です。 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約束.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独自およびオープンソースプロジェクトの両方で自由に使用できます。
帰属が必要です。分散コードに著者の名前とライセンス情報を保持する必要があります。これらのアイテムはユーザー面である必要はなく、コードベース内にとどまることができます。