UNPKG

node-os-utils

Version:
352 lines (259 loc) 6.48 kB
## Description monitor vital signs of your server : - CPU average usage - Free and used drive space - Free and used memory space - Operating System - All processes running - TTY/SSH opened - Total opened files - Network speed (input and output) # node-os-utils [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com) [![Build Status](https://api.travis-ci.org/SunilWang/node-os-utils.svg?branch=master)](https://travis-ci.org/SunilWang/node-os-utils) [![NPM Version][npm-image]][npm-url] [![NPM Downloads][downloads-image]][downloads-url] An operating system utility library. Some methods are wrappers of node libraries and others are calculations made by the module. [os-utils](https://github.com/oscmejia/os-utils) extended ## Installation One line installation with [npm](http://npmjs.org). ```bash $ npm install node-os-utils --save ``` Then in your code ## Example ```js var osu = require('node-os-utils') var cpu = osu.cpu var count = cpu.count() // 8 cpu.usage() .then(cpuPercentage => { console.log(cpuPercentage) // 10.38 }) var osCmd = osu.osCmd osCmd.whoami() .then(userName => { console.log(userName) // admin }) ``` ## Configuration require('node-os-utils').options Default settings: - `NOT_SUPPORTED_VALUE` is `not supported`. os not supported, return value. - `INTERVAL` is `1000` millisecond. Represents the refresh of the cpu and network workers. :warning: If this module uses too much CPU, set the `INTERVAL` value to 10000 or more. ## Info If you have `not supported` in some categories, your OS configuration is not supported for this option. You can use `require('node-os-utils').isNotSupported()` to decide `not supported`. ```js var osu = require('node-os-utils') var osCmd = osu.osCmd osCmd .topCpu() .then(function(res){ if(osu.isNotSupported(res)){ // Handle 'not supported' }else{ // Things to do... } }) ```` ## Usage The following methods are available: ### require('node-os-utils').cpu #### cpu.average():object CPU average ```js var osu = require('node-os-utils') var cpu = osu.cpu var info = cpu.average() console.log(info) ``` ``` { totalIdle: 33526410, totalTick: 37460330, avgIdle: 4190801.25, avgTotal: 4682541.25 } ``` #### cpu.usage(interval):Promise(number) CPU average usage - [interval]: number - interval millisecond. defaulta: 1000 ```js var osu = require('node-os-utils') var cpu = osu.cpu cpu.usage() .then(info => { console.log(info) }) ``` ``` 10.06 ``` #### cpu.free(interval):Promise(number) cpu free percentage - [interval]: number - interval millisecond. defaulta: 1000 ```js var osu = require('node-os-utils') var cpu = osu.cpu cpu.free() .then(info => { console.log(info) }) ``` ``` 89.26 ``` #### cpu.count():number #### cpu.model():string #### cpu.loadavg():Array[number] #### cpu.loadavgTime(time):number - time: number - 1, 5 or 15 minutes, defaulta: 1 --- ### require('node-os-utils').drive #### drive.info():Promise(Object) drive info ```js var osu = require('node-os-utils') var drive = osu.drive drive.info() .then(info => { console.log(info) }) ``` ``` { totalGb: '464.8', usedGb: '147.7', freeGb: '316.9', usedPercentage: '31.8', freePercentage: '68.2' } ``` #### drive.free():Promise(Object) ``` { totalGb: '464.8', freeGb: '316.9', freePercentage: '68.2' } ``` #### drive.used():Promise(Object) ``` { totalGb: '464.8', usedGb: '316.9', usedPercentage: '68.2' } ``` --- ### require('node-os-utils').mem #### mem.info():Promise(Object) memory info ```js var osu = require('node-os-utils') var mem = osu.mem mem.info() .then(info => { console.log(info) }) ``` ``` { totalMemMb: 16384, usedMemMb: 13403.41, freeMemMb: 2980.59, freeMemPercentage: 18.19 } ``` #### mem.free():Promise(Object) ``` { totalMemMb: 16384, freeMemMb: 3033.63 } ``` #### mem.used():Promise(Object) ``` { totalMemMb: 16384, usedMemMb: 13421.15 } ``` #### mem.totalMem():number ``` 17179869184 ``` --- ### require('node-os-utils').netstat #### netstat.stats():Promise(Array[Object]) ```js var osu = require('node-os-utils') var netstat = osu.netstat netstat.stats() .then(info => { console.log(info) }) ``` ``` [ { interface: 'lo', inputBytes: '731508412', outputBytes: '731508412' }, { interface: 'eth0', inputBytes: '1356471479', outputBytes: '26631036763' } ] ``` #### netstat.inOut(interval):Promise(Object) - [interval]: number - interval millisecond. defaulta: 1000 ```js var osu = require('node-os-utils') var netstat = osu.netstat netstat.inOut() .then(info => { console.log(info) }) ``` ``` { total: { inputMb: 0.02, outputMb: 1.22 }, eth0: { inputMb: 0.02, outputMb: 1.22 } } ``` --- ### require('node-os-utils').openfiles #### openfiles.openFd():Promise(number) Total opened files ``` 1088 ``` --- ### require('node-os-utils').os #### os.oos():Promise(string) original operating system ``` Mac OS X 10.12.5 ``` ``` Red Hat 7.3 ``` #### os.platform():string #### os.uptime():number - (seconds) #### os.ip():string #### os.hostname():string #### os.type():string #### os.arch():string --- ### require('node-os-utils').proc #### proc.totalProcesses():Promise(number) #### proc.zombieProcesses():Promise(number) --- ### require('node-os-utils').users #### users.openedCount():Promise(number) TTY/SSH opened --- ### require('node-os-utils').osCmd #### osCmd.topCpu():Promise(string) #### osCmd.topMem():Promise(string) #### osCmd.vmstats():Promise(string) ...... ```js var bucket = require('./bucket') var exec = require('./exec') var wrapExec = exec.wrapExec bucket.osCmd = { topCpu: wrapExec('ps -eo pcpu,user,args --no-headers | sort -k 1 -n | tail -n 10 | sort -k 1 -nr | cut -c 1-70'), topMem: wrapExec('ps -eo pmem,pid,cmd | sort -k 1 -n | tail -n 10 | sort -k 1 -nr | cut -c 1-70'), vmstats: wrapExec('vmstat -S m'), processesUsers: wrapExec('ps hax -o user | sort | uniq -c'), diskUsage: wrapExec('df -h'), who: wrapExec('who'), whoami: wrapExec('whoami'), openPorts: wrapExec('lsof -Pni4 | grep ESTABLISHED'), ifconfig: wrapExec('ifconfig') } ``` ## License [MIT](LICENSE). Copyright (c). [npm-image]: https://img.shields.io/npm/v/node-os-utils.svg [npm-url]: https://www.npmjs.com/package/node-os-utils [downloads-image]: https://img.shields.io/npm/dt/node-os-utils.svg [downloads-url]: https://npmjs.org/package/node-os-utils