commit | ab8d36b3973364b3a87f90767b9fadab016ac38b | [log] [tgz] |
---|---|---|
author | Mike Wallace <mikewallace@apache.org> | Wed Sep 03 20:43:37 2014 +0100 |
committer | Mike Wallace <mikewallace@apache.org> | Wed Sep 03 21:03:05 2014 +0100 |
tree | 354a422d6350df933ba45e1376721cb824776946 | |
parent | 1c3dae9616bf70e3af21a7481da2fb59afdc2940 [diff] |
Avoid recreating all metrics on reload This commit fixes a bug in the comparison of the loaded metrics and all application metrics. Because the Props for each metric differ in the output of couch_stats:list/0 and load_metrics_for_application/0 the set subtraction operations in reload_metrics/0 would always leave a full set, so all metrics would be deleted and created on every reload. This is fixed by ensuring the sets for existing and current metrics consist of {Name, Type} only.
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.
[atom()]
.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
.