
Um monitor muito simples para o os operacional interno, fs Módulos em Node.js.
Permite observar alguns parâmetros do sistema operacional, como memória livre disponível, carregar um espaço médio ou disco livre.
Liberado sob a licença do MIT.
Para instalar a versão estável mais recente do os-monitor :
npm install os-monitor
Se você estiver usando uma versão antiga do Node.js (mais antiga que v18.15.x), poderá precisar da versão herdada (1.x) do os-monitor ; Ele suporta Node.js de volta à 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 ) ;Atraso nos milissegundos entre cada ciclo do monitor. Padrão: 3000
Quantidade de memória em bytes sob o qual o evento 'freeMem' é acionado. Também pode ser uma porcentagem da memória total. Padrão: 0
Número de segundos em que o evento 'tempo de atividade' é acionado. Padrão: indefinido
Objeto contendo valores de blocos livres, para determinados caminhos do sistema de arquivos, sob os quais o evento 'DiskFree' é acionado. Suportado do Node.js v18.15.x e posterior. (Ref.) Padrão: {}
Valor da média de 1 minuto de carga sobre qual evento 'loadavg1' é acionado. Padrão: OS.CPUS (). Length
(Um conceito específico do UNIX, a média de carga é uma medida da atividade do sistema, calculada pelo sistema operacional e expressa como um número fracionário. Como regra geral, a média de carga deve ser idealmente menor que o número de CPUs lógicas no sistema.
Valor de 5 minutos de carga média sobre qual evento 'loadavg5' é acionado. Padrão: OS.CPUS (). Length
Valor de 15 minutos de carga média sobre qual evento 'loadavg15' é acionado. Padrão: OS.CPUS (). Length
Defina true como mudo do evento 'Monitor'. Padrão: false
Defina true para ativar o monitor como um fluxo legível. Padrão: false
Defina true para executar um ciclo de monitor em start (). Padrão: false
A propriedade monitor.version contém a string de versão os-monitor .
Inicia o monitor. Aceita um objeto de opções opcionais.
Interrompe o monitor.
Verifica se o monitor está em execução ou não; Retorna um booleano.
Aceita um objeto de opções opcionais e atualiza o Monitor Config. Sempre retorna opções de configuração de monitor.
Redefine o monitore Config para seus valores padrão.
Adiciona um ouvinte para o tipo de evento especificado. Os eventos suportados são: 'Monitor', 'Uptime', 'Freemem', 'DiskFree', 'Loadavg1', 'Loadavg5', 'Loadavg15', 'Start', 'Stop', 'Config', 'Reset', 'Destroy'.
Adiciona um ouvinte único para o tipo de evento especificado. Este ouvinte é chamado apenas na próxima vez que o evento for disparado, após o que é removido.
Adiciona um ouvinte acelerado. O ouvinte acelerado não será executado mais de uma vez a cada atraso milissegundos.
Remove um ouvinte acelerado anteriormente adicionado usando .throttle() . handler deve ser a função original.
Retorna uma promessa que resolve com um objeto de evento quando eventType é acionado.
Pare permanentemente e desativa o monitor.
Métodos de conveniência para obter a quantidade certa de milissegundos.
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 conveniência para obter a quantidade certa de blocos do sistema de arquivos.
monitor . blocks ( 100000000 , 4096 ) ; // -> 24415 blocks
// start by observing file system path `/filesystem`
monitor . start ( {
diskfree : {
'/filesystem' : monitor . blocks ( 100000000 , 4096 )
}
} ) ; Há algumas informações úteis no objeto de evento fornecido:
{
"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 os eventos suportados são: 'Monitor', 'Uptime', 'Freemem', 'DiskFree', 'Loadavg1', 'Loadavg5', 'Loadavg15', 'Start', 'Stop', 'Config', 'Reset', 'Destroy'. Observe que os-monitor é uma instância do EventEmitter .
API de eventos Docs: Nodejs.org/api/events
os-monitor também pode ser usado como um fluxo legível.
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 suporta Promise, Async/Wait: Usando .when(eventType) retorna uma promessa.
monitor.when('freemem').then(event => {
// ...
});
async function callback() {
let event = await monitor.when('uptime');
// ...
}
Precisa de instâncias simultâneas do monitor? Várias instâncias podem ser criadas usando a classe Monitor :
const { Monitor } = require('os-monitor');
let monitor1 = new Monitor();
let monitor2 = new Monitor();
let monitor3 = new Monitor();
os-monitor é liberado sob a licença do MIT.
100% gratuito: os-monitor pode ser usado livremente em projetos proprietários e de código aberto.
É necessária atribuição: você deve manter o nome do autor e as informações de licença em qualquer código distribuído. Esses itens não precisam estar voltados para o usuário e podem permanecer dentro da base de código.