couch_stats is a simple statistics collection app for Erlang applications. Its
core API is a thin wrapper around a stat storage library (currently Folsom,) but
abstracting over that library provides several benefits:
All references to stat storage are in one place, so it’s easy to swap
the module out.
Some common patterns, such as tying a process’s lifetime to a counter value,
are straightforward to support.
Configuration can be managed in a single place - for example, it’s much easier
to ensure that all histogram metrics use a 10-second sliding window if those
metrics are instantiated/configured centrally.
Adding a metric
Write a stat description file. See `priv/descriptions.cfg for an example.
The metric name should be of type [atom()].
The type should be one of counter, gauge, or histogram.
If you don’t add your metric to a description file, your metric will be
accessible via couch_stats:sample/1, but it won’t be read by the stats
collector and therefore won’t be available to HTTP _stats requests, etc.
Tell couch_stats to use your description file via application configuration.
Instrument your code with the helper functions in couch_stats.erl.
couch_stats
couch_stats is a simple statistics collection app for Erlang applications. Its core API is a thin wrapper around a stat storage library (currently Folsom,) but abstracting over that library provides several benefits:
All references to stat storage are in one place, so it’s easy to swap the module out.
Some common patterns, such as tying a process’s lifetime to a counter value, are straightforward to support.
Configuration can be managed in a single place - for example, it’s much easier to ensure that all histogram metrics use a 10-second sliding window if those metrics are instantiated/configured centrally.
Adding a metric
[atom()].counter,gauge, orhistogram.If you don’t add your metric to a description file, your metric will be accessible via
couch_stats:sample/1, but it won’t be read by the stats collector and therefore won’t be available to HTTP_statsrequests, etc.Tell couch_stats to use your description file via application configuration.
Instrument your code with the helper functions in
couch_stats.erl.