metrics-server

Basic metrics server and client.

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.

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(errresult) {
        memory.cb(result.memory);
        cpu.cb(result.cpu);
    });
}, 1000);
 
webServer.start();
udpServer.start();
memory.start();
cpu.start();
 
var Metrics = require('metrics-server')

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'
    }
}

Call udpserver.start to start the server

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'
    }
}

Call webserver.start to start the server

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 is used to group metrics together. The token should non guessable string.

metric.name is the name of the metrics type

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 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 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);

Call metric.start to start collection metrics

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

Called to recive metrics from the DB

Query the database for e certen metrics name.

Query the database from a certain time.

Query the database to a certain time. Must include from.

Query the database and pull out 500. Defaults to 1000, MAX is 10000.

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