metrics-server
Version:
Basic metrics server and client.
158 lines (130 loc) • 3.51 kB
Markdown
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.
```javascript
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();
```
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
`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`