
Un monitor muy simple para el os operativo incorporado, los módulos fs en Node.js.
Le permite observar algunos parámetros del sistema operativo, como la memoria libre disponible, cargar promedio o espacio de disco libre.
Liberado bajo la licencia MIT.
Para instalar la última versión estable de os-monitor :
npm install os-monitor
Si está utilizando una versión anterior de Node.js (más antigua que V18.15.x), es posible que necesite la versión heredada (1.x) de os-monitor ; Admite Node.js de regreso a 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 ) ;Retraso en milisegundos entre cada ciclo de monitor. Valor predeterminado: 3000
Cantidad de memoria en bytes bajo el cual se activa el evento 'freemem'. También puede ser un porcentaje de la memoria total. Valor predeterminado: 0
Se activa el número de segundos sobre qué evento 'tiempo de actividad'. Valor predeterminado: indefinido
El objeto que contiene valores de bloques gratuitos, para rutas del sistema de archivos dadas, bajo las cuales se activa el evento 'diskfree'. Compatible con node.js v18.15.x y más tarde. (Ref.) Default: {}
Valor de 1 minuto de carga promedio sobre el cual se activa 'LoadAVG1'. Predeterminado: os.cpus (). Longitud
(Un concepto específico de la UNIX, el promedio de carga es una medida de la actividad del sistema, calculada por el sistema operativo y expresado como un número fraccional. Como regla general, el promedio de carga debe ser menor que el número de CPU lógicas en el sistema.
Valor de 5 minutos de carga promedio sobre el cual se activa 'LoadAVG5'. Predeterminado: os.cpus (). Longitud
Valor de 15 minutos de carga promedio sobre el cual se activa 'LoadAVG15'. Predeterminado: os.cpus (). Longitud
Establezca verdadero al evento mute 'monitor'. Valor predeterminado: falso
Establezca verdadero para habilitar el monitor como una secuencia legible. Valor predeterminado: falso
Establezca verdadero para ejecutar un ciclo de monitor en Start (). Valor predeterminado: falso
La propiedad monitor.version contiene la cadena de la versión os-monitor .
Inicia el monitor. Acepta un objeto Opciones opcionales.
Detiene el monitor.
Comprueba si el monitor se está ejecutando o no; Devuelve un booleano.
Acepta un objeto opcional de opciones y actualiza la configuración del monitor. Siempre devuelve las opciones de configuración del monitor.
Restablece la configuración del monitor a sus valores predeterminados.
Agrega un oyente para el tipo de evento especificado. Los eventos compatibles son: 'monitor', 'tiempo de actividad', 'freemem', 'diskfree', 'loadAvg1', 'loadAvg5', 'loadAVG15', 'inicio', 'stop', 'config', 'restablecer', 'destruir'.
Agrega un oyente único para el tipo de evento especificado. Este oyente se invoca solo la próxima vez que se dispare el evento, después de lo cual se elimina.
Agrega un oyente acelerado. El oyente acelerado no se ejecutará más de una vez cada demora milisegundos.
Elimina un oyente acelerado agregado previamente usando .throttle() . handler debe ser la función original.
Devuelve una promesa que se resuelve con un objeto de evento cuando eventType se activa.
Se detiene y deshabilita permanentemente el monitor.
Métodos de conveniencia para obtener la cantidad correcta de milisegundos.
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 ) } ) ;Método de conveniencia para obtener la cantidad correcta de bloques del sistema de archivos.
monitor . blocks ( 100000000 , 4096 ) ; // -> 24415 blocks
// start by observing file system path `/filesystem`
monitor . start ( {
diskfree : {
'/filesystem' : monitor . blocks ( 100000000 , 4096 )
}
} ) ; Hay información útil en el objeto de evento proporcionado:
{
"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
}
Todos los eventos compatibles son: 'monitor', 'tiempo de actividad', 'freemem', 'diskfree', 'loadAVG1', 'loadAVG5', 'loadAVG15', 'inicio', 'stop', 'config', 'reinic', 'destruir'. Tenga en cuenta que os-monitor es una instancia de EventEmitter .
Eventos API Docs: nodejs.org/api/events
os-monitor también se puede usar como un flujo legible.
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 admite Promise, Async/Agait: Using .when(eventType) devuelve una promesa.
monitor.when('freemem').then(event => {
// ...
});
async function callback() {
let event = await monitor.when('uptime');
// ...
}
¿Necesita instancias de monitor concurrentes? Se pueden crear varias instancias utilizando la clase Monitor :
const { Monitor } = require('os-monitor');
let monitor1 = new Monitor();
let monitor2 = new Monitor();
let monitor3 = new Monitor();
os-monitor se libera bajo la licencia MIT.
100% GRATIS: os-monitor se puede usar libremente tanto en proyectos de código abierto como de código abierto.
Se requiere atribución: debe retener el nombre del autor y la información de la licencia en cualquier código distribuido. Estos elementos no necesitan ser orientados al usuario y pueden permanecer dentro de la base de código.