A generic class that reports aggregate key/value data over a specific interval. This is useful for high volume metrics that need some aggregation (over time) to minimize network traffic, say.
Two functions are supported:
increment(key): increment a key, and report its sum over the interval (reset to 0 after the intervel). For computing hit-count events.
statistics(key,value): compute running statistics of values for a key. Computes count, average, standard deviation, and variance. For computing gauge data types (response time, etc).
Build & Test
Tests are written in mocha.
Several defaults are provided. Reports are sent to the console if no callback is specified:
var intervalLogger = ;var ilog = intervalLogger;ilog;// after 1 second, "test: count=1" is logged to the console.ilog;ilog;// after 1 second, "test: foo=3" is logged to the console.ilog// after another second, "test: bar.count=1 bar.average=0.433123948 bar.std=0.0 bar.variance=0.0"// if you want to report ALL keys every second even if they haven't been// incremented:intervalLogger = ;ilog;// after 1 second, "test: count=1" is logged to the console.// after 2 seconds, "test: count=NaN" is logged to the console.// cleanupilog;
Primarily though this is intended to tie into some external logging or logging service (say graphite, newrelic, bunyan or the like):
var intervalLogger = ;var ilog = intervalLogger;ilog;ilog