
Очень простой монитор для встроенной os , модулей fs в node.js.
Позволяет наблюдать некоторые параметры ОС, такие как свободная память, средняя загрузка или бесплатное дисковое пространство.
Выпущено по лицензии MIT.
Чтобы установить последнюю стабильную версию os-monitor :
npm install os-monitor
Если вы используете старую версию node.js (старше V18.15.x), вам может понадобиться устаревая версия (1.x) os-monitor ; он поддерживает 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
Количество секунд по сравнению с каким событием «время безотказной работы» запускается. По умолчанию: не определен
Объект, содержащий значения бесплатных блоков, для заданных путей файловой системы, в соответствии с которым запускается «Diskfree». Поддерживается из node.js v18.15.x, а затем. (Ref.) по умолчанию: {}
Значение 1 -минутного среднего нагрузки, по какому событию «LoadAVG1» запускается. По умолчанию: os.cpus (). Длина
(Концепция UNIX-специфической, среднее значение нагрузки является мерой системной деятельности, рассчитанной операционной системой и выраженной в виде дробного числа.
Значение 5 минут среднего нагрузки, по какому событию «LoadAvg5» запускается. По умолчанию: os.cpus (). Длина
Значение 15 минут нагрузки, по сравнению с тем, каким событием будет запускается событие 'LoadAVG15'. По умолчанию: os.cpus (). Длина
Установите True To Mute Event «Монитор». По умолчанию: ложь
Установите True, чтобы включить монитор в качестве читаемого потока. По умолчанию: ложь
Установите True, чтобы выполнить цикл монитора в start (). По умолчанию: ложь
Свойство monitor.version содержит строку версии os-monitor .
Запускает монитор. Принимает дополнительный объект параметров.
Останавливает монитор.
Проверяет, работает ли монитор или нет; Возвращает логическое.
Принимает дополнительный объект параметров и монитор обновлений. Всегда возвращает параметры конфигурации монитора.
Сбросит монитор конфигурации к значениям по умолчанию.
Добавляет слушателя для указанного типа события. Поддерживаемые события: «Монитор», «Uptime», «freemem», «diskfree», «loadavg1», «loadavg5», «loadavg15», «start», «stop», «config», «reset», «dissult».
Добавляет одноразовый слушатель для указанного типа события. Этот слушатель вызывается только в следующий раз, когда событие будет запущено, после чего оно удалено.
Добавляет дроссельный слушатель. Слушатель с дросселом не будет выполняться более одного раза каждую задержку миллисекунды.
Удаляет дроссельный слушатель ранее добавленным с использованием .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
}
Все поддерживаемые события: «Монитор», «Uptime», «Freemem», «Diskfree», «LoadAvg1», «LoadAvg5», «LoadAvg15», «Start», «Stop», «config», «Reset», «Dissult». Обратите внимание, что os-monitor является экземпляром EventEmitter .
События API Docs: 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 поддерживает обещание, Async/wait: использование .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 может использоваться свободно как в проприетарных, так и в проектах с открытым исходным кодом.
Атрибуция требуется: вы должны сохранить имя автора и информацию о лицензии в любом распределенном коде. Эти элементы не должны быть пользовательскими, и могут оставаться в кодовой базе.