node package manager

metrics-server

metrics-server

metrics-server is a basic metrics server and client. The client uses UDP to send metric to the server. The server stores all metric into a mongodb database.

examples

var usage = require('usage');
 
var udpServer = require('./lib/udpserver').createServer({
    host : '127.0.0.1',
    port : 4001,
    mongodb : {
        host : '127.0.0.1'
    }
});
 
var webServer = require('./lib/webserver').createServer({
    udp : udpServer,
    host : '127.0.0.1',
    port : 4002,
    mongodb : {
        host : '127.0.0.1'
    }
});
 
var memory = require('./lib/metric').createMetric({
    host : '127.0.0.1',
    port : 4001
});
 
var cpu = require('./lib/metric').createMetric({
    host : '127.0.0.1',
    port : 4001
});
 
memory.interval = cpu.interval = false;
memory.token = cpu.token = 'random-token';
 
memory.name = 'memory';
cpu.name = 'cpu';
 
var pid = process.pid;
setInterval(function() {
 
    usage.lookup(pid, {
        keepHistory : true
    }, function(err, result) {
        memory.cb(result.memory);
        cpu.cb(result.cpu);
    });
}, 1000);
 
webServer.start();
udpServer.start();
memory.start();
cpu.start();
 

Methods

var Metrics = require('metrics-server')

var udpserver = Metrics.udpserver.createServer(opts);

To create the UDP server. This is used to recive metrics from the clients. Options to pass in are

{
    host : '127.0.0.1',
    port : 4001,
    mongodb : {
        host : '127.0.0.1',
        port : 27017,
        path : '/data/db'
    }
}

udpserver.start()

Call udpserver.start to start the server

var webserver = Metrics.webserver.createServer(opts);

To create the UDP server. This is used to recive metrics from the clients. Options to pass in are

{
    host : '127.0.0.1',
    port : 4002,
    mongodb : {
        host : '127.0.0.1',
        port : 27017,
        path : '/data/db'
    }
}

webserver.start()

Call webserver.start to start the server

var metric = Metrics.metric.createMetric(opts)

This is used to send metrics to the server.

{
    host : '127.0.0.1',//use the udp server host
    port : 4002//use the udp server port
}

metric.token = uuid()

metric.token is used to group metrics together. The token should non guessable string.

metric.name = 'cpu'

metric.name is the name of the metrics type

metric.interval = 5000

metric.interval is the interval in milliseconds between calls to metric.run() If you set this to false then you can manually call metric.cb(metricValue)

metric.run = function(cb){}

metric.run is the function that is called when using metric.interval

metric.run = function(cb){
    setTimeout(function(){
        cb(Math.floor((Math.random() * 100) + 1));
    },100);
}

metric.cb(value)

metric.cb is used when metric.interval is set to false You would call it directly when you dont want call metric.run

setInterval(function(){
    metric.cb(Math.floor((Math.random() * 100) + 1));
},1000);

metric.start()

Call metric.start to start collection metrics

API

Metrics.webserver is used to recive metric from the database.

GET /metric/:token

Called to recive metrics from the DB #### query name=cpu Query the database for e certen metrics name. #### query from=2014-05-08T00:04:56.656Z Query the database from a certain time. #### query to=2014-05-08T00:04:56.656Z Query the database to a certain time. Must include from. #### query limit=500 Query the database and pull out 500. Defaults to 1000, MAX is 10000.

GET /metric/:token/count

Count the metrics in the DB. Same query params can be sent as /metric/:token