metrics-server
v0.2.2
Published
Basic metrics server and client.
Downloads
14
Readme
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