UNPKG

metrics-server

Version:

Basic metrics server and client.

158 lines (130 loc) 3.51 kB
# 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 ```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(); ``` ## 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`