Skip to content


Subversion checkout URL

You can clone with
Download ZIP
A node.js addon for reading Solaris kstats
C++ JavaScript Python
Branch: master
Pull request Compare This branch is 11 commits ahead, 15 commits behind bcantrill:master.

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.


kstat, a node.js addon for reading kstats

This is a simple node.js addon that allows one to read kernel statistics via
the kstat framework on Solaris.  The "kstat" module exports a single class,
"Reader" that has the following methods:

 Reader():  Takes an optional object specifying the kstats to read.  This
            object may have the following members:

            class    =>  optional string denoting class of kstat(s) to read
            module   =>  optional string denoting module of kstat(s) to read
            name     =>  optional string denoting name of kstat(s) to read
            instance =>  optional integer denoting instance of kstat(s) to read

            Together, these members form a specification of kstats to read.

 read():    Returns an array of kstats that match the specification with
            which the reader instance was constructed.  Each element of the
            array is an object that contains the following members:
            class    =>  string denoting class of kstat
            module   =>  string denoting module of kstat
            name     =>  string denoting name of kstat
            instance =>  integer denoting instance of kstat
            snaptime =>  nanoseconds since boot of this snapshot
            crtime   =>  nanoseconds since boot that this kstat was created
            type     =>  integer representing the internal type of kstat
            data     =>  an object containing the named kstat data itself

 list():    Returns the list of all kstats. Each entry is as above, but
            without the data, so the potentially expensive step of reading
            the kstat data is omitted.

 getkcid(): Returns, as an int, the curent ID of the kstat chain.

 chainupdate(): Update the kstat chain and return 0 if unchanged or the new
            chain ID if the chain changed.

For example, here is a simple node.js program that dumps the kstats of
class 'mib2':

  var kstat = require('kstat');
  var sys = require('sys');
  var reader = new kstat.Reader({ 'class': 'mib2' } );

Here is a the same program that reads only the 'mib2' class kstats from
the 'icmp' module:

  var kstat = require('kstat');
  var sys = require('sys');
  var reader = new kstat.Reader({ 'class': 'mib2', module: 'icmp' } );

Finally, here is a simple program that prints the number of ICMP datagrams
received per second:

  var kstat = require('kstat');
  var sys = require('sys');
  var reader = new kstat.Reader({ 'class': 'mib2', module: 'icmp' } );

  var data = [];
  var gen = 0;

  setInterval(function() {
        data[gen] =[0];
        gen ^= 1;

        if (!(data[0] && data[1]))

          sys.puts(data[gen ^ 1].data.inDatagrams - data[gen].data.inDatagrams);
  }, 1000);
Something went wrong with that request. Please try again.