
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
이벤트 '프리 메미'가 트리거되는 바이트의 메모리 양. 총 메모리의 비율이 될 수도 있습니다. 기본값 : 0
어떤 이벤트 '가동 시간'이 트리거되는 초에 대한 몇 초. 기본값 : 정의되지 않았습니다
주어진 파일 시스템 경로에 대해 자유 블록 값을 포함하는 객체는 이벤트 '디스크 프리'가 트리거됩니다. node.js v18.15.x에서 지원됩니다. (참조) 기본값 : {}
어떤 이벤트 'loadavg1'이 트리거되는 1 분 부하 평균 값. 기본값 : os.cpus (). 길이
(UNIX- 특이 적 개념, 부하 평균은 운영 체제에 의해 계산되고 분수 숫자로 표현 된 시스템 활동의 척도입니다. 경험상 하중 평균은 시스템의 논리적 CPU 수보다 이상적이어야합니다. 참조 : http://nodejs.org/api/api/os.html#os_loadavg)
5 분의 값 5 분 평균 이벤트 '로드 아그5'가 트리거되는 경우 평균. 기본값 : os.cpus (). 길이
값 15 분의 값은 어떤 이벤트 'loadavg15'가 트리거되는 평균로드 평균입니다. 기본값 : os.cpus (). 길이
이벤트 '모니터'를 음소거하도록 충실하십시오. 기본값 : False
모니터를 읽을 수있는 스트림으로 활성화하도록 충실을 설정하십시오. 기본값 : False
start ()에서 모니터 사이클을 실행하도록 true를 설정하십시오. 기본값 : False
monitor.version 속성에는 os-monitor 버전 문자열이 포함되어 있습니다.
모니터를 시작합니다. 선택적 옵션 객체를 허용합니다.
모니터를 중지합니다.
모니터가 실행 중인지 여부를 확인합니다. 부울을 반환합니다.
옵션 옵션 개체 및 업데이트 모니터 구성을 허용합니다. 항상 모니터 구성 옵션을 반환합니다.
기본값에 대한 모니터 구성을 재설정합니다.
지정된 이벤트 유형에 대한 리스너를 추가합니다. 지원되는 이벤트는 '모니터', '가동 시간', '프리 메미', '디스크 프리', '로드 아브 그1', 'loadavg5', 'loadavg15', 'start', 'stop', 'config', 'reset', 'destroy'입니다.
지정된 이벤트 유형에 대해 일회성 리스너를 추가합니다. 이 청취자는 다음에 이벤트가 발사 될 때만 호출되며, 그 후에는 제거됩니다.
스로틀 리스너를 추가합니다. 스로틀 리스어 리스너는 지연 밀리 초마다 두 번 이상 실행되지 않습니다.
.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
}
모든 지원되는 이벤트는 '모니터', '가동 시간', '프리 메미', '디스크 프리', '로드 아브 그1', '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 독점 및 오픈 소스 프로젝트 모두에서 자유롭게 사용할 수 있습니다.
귀속이 필요합니다. 분산 코드에 저자의 이름과 라이센스 정보를 유지해야합니다. 이러한 항목은 사용자를 향할 필요가 없으며 코드베이스 내에 남아있을 수 있습니다.