net-stat
______ _______ _______ _______ _______ _______ _______
| _ \| _ | | _ | | _ | |
|. | |. 1___|.| | | 1___|.| | |. 1 |.| | |
|. | |. __)_`-|. |-|____ `-|. |-|. _ `-|. |-'
|: | |: 1 | |: | |: 1 | |: | |: | | |: |
|::.| |::.. . | |::.| |::.. . | |::.| |::.|:. | |::.|
`--- ---`-------' `---' `-------' `---' `--- ---' `---'
Note: This repo can be found on npm here: net-stat
Note: This repo can be found on github here: node-net-stat
Caveat: Works by parsing /proc/net/dev, so will only work on nix OS.
Install
npm install net-stat
Examples
Require the module:
var netStat = require('net-stat');
By default totalRx() returns total received bytes for interface lo:
var totalrx = netStat.totalRx();
console.log(totalrx);
Return total received GiB on interface eth0, see docs below for accepted values of units and iface:
var totalrx = netStat.totalRx({ iface: 'eth0', units: 'GiB' });
console.log(totalrx);
Display the transmitted KiB per second of eth0 over the next 2000ms:
setInterval(function() {
netStat.usageTx({
iface: 'eth0',
units: 'KiB',
sampleMs: 2000,
}, function(kbps) {
console.log('Transmitted ' + kbps + ' kb/s');
});
}, 2500);
Get all fields available from /proc/net/dev, useful for finding accepted values of iface:
var allStats = netStat.raw();
console.log(allStats);
totalRx([opts])
Returns a number representing the number of units received on iface.
| Option | Type | Default | Explanation |
|---|---|---|---|
| opts | Object |
see below | Options object, specify what you need, the defaults will be filled in |
| opts.iface | String |
'lo' |
The name of the interface to be used. See the raw() function for a list of interfaces. |
| opts.units | String |
'bytes' |
The units of the returned value, can be one of bytes, KiB, MiB or GiB. |
totalTx([opts])
Returns a number representing the number of units transmitted on iface.
| Option | Type | Default | Explanation |
|---|---|---|---|
| opts | Object |
see below | Options object, specify what you need, the defaults will be filled in |
| opts.iface | String |
'lo' |
The name of the interface to be used. See the raw() function for a list of interfaces. |
| opts.units | String |
'bytes' |
The units of the returned value, can be one of bytes, KiB, MiB or GiB. |
usageRx([opts,] cb)
Async function which returns data, the usage received per second in units on iface over sampleMs
| Option | Type | Default | Explanation |
|---|---|---|---|
| opts | Object |
see below | Options object, specify what you need, the defaults will be filled in |
| opts.iface | String |
'lo' |
The name of the interface to be used. See the raw() function for a list of interfaces. |
| opts.units | String |
'bytes' |
The units of the returned value, can be one of bytes, KiB, MiB or GiB. |
| opts.sampleMs | Number |
1000 |
The number of milliseconds to take a usage sample over. |
| cb | Function |
none | A callback function with signature cb(data) where data is the usage received per second in units on iface over sampleMs. |
usageTx([opts,] cb)
Async function which returns data, the usage transmitted per second in units on iface over sampleMs
| Option | Type | Default | Explanation |
|---|---|---|---|
| opts | Object |
see below | Options object, specify what you need, the defaults will be filled in |
| opts.iface | String |
'lo' |
The name of the interface to be used. See the raw() function for a list of interfaces. |
| opts.units | String |
'bytes' |
The units of the returned value, can be one of bytes, KiB, MiB or GiB. |
| opts.sampleMs | Number |
1000 |
The number of milliseconds to take a usage sample over. |
| cb | Function |
none | A callback function with signature cb(data) where data is the usage transmitted per second in units on iface over sampleMs. |
raw()
Returns an object representing the data in /proc/net/dev.
{
eth0: {
bytes: { receive: '2085477580', transmit: '187911353' },
packets: { receive: '1782197', transmit: '1353772' },
errs: { receive: '0', transmit: '0' },
drop: { receive: '42', transmit: '0' },
fifo: { receive: '0', transmit: '0' },
frame: { receive: '0' },
compressed: { receive: '0', transmit: '0' },
multicast: { receive: '7923' },
colls: { transmit: '0' },
carrier: { transmit: '0' }
},
lo: {
bytes: { receive: '52720310', transmit: '52720310' },
packets: { receive: '443962', transmit: '443962' },
errs: { receive: '0', transmit: '0' },
drop: { receive: '0', transmit: '0' },
fifo: { receive: '0', transmit: '0' },
frame: { receive: '0' },
compressed: { receive: '0', transmit: '0' },
multicast: { receive: '0' },
colls: { transmit: '0' },
carrier: { transmit: '0' }
},
}
Contributing
Just send a PR, or create an issue if you are not sure.
Areas ripe for contribution:
- testing
- cross compatability for windows and darwin/osx
- performance
- bugs
Other Stat Modules
Note: net-stat, disk-stat, mem-stat only work on nix platforms.
License
MIT