statman
is a set of modules to assist with collection of metrics
Supported metrics
- gauge: represents a point in time measurement
- meter: measures flow, including count and average time
- stopwatch: used to record timings
Install it!
statman
is decomposed into several smaller modules. To utilize the metric modules, you have two choices
- access directly: this is recommended if there is one single metric package. Like if you just want the stopwatch
- access via
statman
: this provides some capabilities such as a registry to easily access many metrics
Option 1: access directly
Install using npm:
npm install statman-stopwatch
Reference in your app:
var Gauge = require('statman-stopwatch');
var gauge = Gauge('gauge-name');
statman
Option 2: access from Install using npm:
npm install statman
Reference in your app:
var statman = require('statman');
var gauge = new statman.Gauge('gauge-name');
Use it!
Registry
statman
provides a registry that allow for you to track your metrics.
You can manually add metrics to the registry. For the built in metrics, you can also auto-register those while creating
// register a metric with a key
var metric = { ..some object.. }
statman.register('my metric name', metric)
// register a metric with implicit key = name
var metric2 = { name: 'my second metric' ..some object.. }
statman.register(metric2);
// access metric from registry
statman.registry('my metric name') //return metric
Gauge
For the capabilities of gauge
see: https://github.com/jasonray/statman-gauge
The following two approaches are equivalent
Explicit creation of gauge
var gauge = statman.gauge('metric-name');
statman.regiser(gauge);
gauge.set(5);
Create and register a gauge
statman.gauge('metric-name').set(5); //if gauge by name 'metric-name' does not exist, create one, and set to '5'
statman.gauge('metric-name').value() //return '5'
Meter
Stopwatch
Extend it!
TODO: how to build a new metric
Build it!
- Make sure that you have
node
andnpm
installed - Clone source code to you local machine
- Setup dependencies:
npm install
- run tests:
npm test
Roadmap
- Add meter
- Move stopwatch back to its own repo. Sigh.
- Create reporters to output metrics
- Provide guidance how to hook with HTTP/TCP/async calls
- Provide hook to register with express
- Integrate with visualizations
- Provide web interface to access metrics