abacus
Version:
Counter library with statsD support
66 lines (49 loc) • 2.05 kB
Markdown
Abacus
===
A simple node.js module to count, report, and plot application metrics.
````sh
npm install abacus
````
````javascript
var Abacus = require('abacus');
var config = {
statsD: {
connection:{
host: 'localhost',
port: 5007
},
// This is the prefix for all metric names sent to statsD / graphite
metricPrefix: 'apps.abacus.'
},
flushFrequency: 60000,
printFrequency: 10000,
resetOnFlush: true, // set all values to 0 on flush
deleteOnFlush: false, // delete all values on flush (will not send 0's)
printEmpty: true, // whether or not to print empty objects (default false)
printOnFlush: false, // print the metrics just before flushing them (default false)
debug: console.log // Prints messages from abacus to STDOUT
};
var metrics = new Abacus(config);
// increment by 1
metrics.increment('metricName');
// increment by 5
metrics.increment('metricName', 5);
// set value of metric
metrics.set('metricName', 153);
// Get value of metric
metrics.get('metricName');
// Print a summary of counters to STDOUT every 10 seconds. This is automatically setup if config.printFrequency is set.
metrics.printPeriodically(10000);
// Periodically flush counters to statsD. This is opposed to sending the counter each time it is changed
// If config.resetOnFlush is false, the counters will be cumulative. Otherwise, they're reset to 0 on each flush.
// This is automatically setup if config.flushFrequency is set.
metrics.flushPeriodically(60000); // in milliseconds. Flush every 60 seconds
````
You can pass a configuration object directly to abacus on instantiation: `new Abacus(config);`. See usage example.
Abacus can be configured to send its counters to an instance of [StatsD](https://github.com/etsy/statsd/). You can configure the StatsD connection as shown in the example.
The `debug` option allows you to pass in a function that will be invoked each time abacus logs something. If not set, the log will be silently discarded.