X-Git-Url: https://git.xandkar.net/?p=beam_stats.git;a=blobdiff_plain;f=README.md;h=3a5553699fc02fa92036b2c402ea9809c6e60b33;hp=09d28d3a736bb01ed053f8ee9902bc46389a1d23;hb=8965c25fc1ebaef1bf129e8c7ff7fda3e4e8b26a;hpb=b545475b0a1ae7d01648ba5798a803c97bf28582 diff --git a/README.md b/README.md index 09d28d3..3a55536 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,67 @@ +[![Build Status](https://travis-ci.org/ibnfirnas/beam_stats.svg?branch=master)](https://travis-ci.org/ibnfirnas/beam_stats) + beam_stats ========== -Periodically collects and pushes VM metrics to arbitrary consumers. Defaults to -StatsD and includes off-by-default implementations for Graphite -(`beam_stats_consumer_graphite`) and CSV file (`beam_stats_consumer_csv`) -consumers). +Periodically collects and pushes VM metrics to arbitrary consumer processes, +which, in-turn, can do whatever they want with the given data (such as +serialize and forward to some time series storage). Includes, off by default, +example implementations of consumers for: + +- StatsD (`beam_stats_consumer_statsd`) +- Graphite (`beam_stats_consumer_graphite`) +- CSV file (`beam_stats_consumer_csv`) -Essentially like `folsomite`, but better. Better in the following ways: +Essentially like `folsomite`, but different. Different in the following ways: - More-general: consumers other than graphite can be defined - More-focused: only concerned with VM metrics, while `folsomite` ships off _everything_ from `folsom` (in addition to VM metrics) -- Easier-to-reason-about implementation: well-defined metrics-to-binary - conversions, as opposed to the nearly-arbitrary term-to-string conversions - used in `folsomite` -- Spec'd, tested and Dialyzed +- Easier-(for me!)-to-reason-about implementation: + + Well-defined metrics-to-binary conversions, as opposed to the + nearly-arbitrary term-to-string conversions used in `folsomite` + + Spec'd, tested and Dialyzed + +### Adding consumers + +#### At app config time + +```erlang +{env, + [ {production_interval , 30000} + , {consumers, + [ {beam_stats_consumer_statsd, + [ {consumption_interval , 60000} + , {dst_host , "localhost"} + , {dst_port , 8125} + , {src_port , 8124} + , {num_msgs_per_packet , 10} + ]} + , {beam_stats_consumer_graphite, + [ {consumption_interval , 60000} + , {host , "localhost"} + , {port , 2003} + , {timeout , 5000} + ]} + , {beam_stats_consumer_csv, + [ {consumption_interval , 60000} + , {path , "beam_stats.csv"} + ]} + , {some_custom_consumer_module, + [ {some_custom_option_a, "abc"} + , {some_custom_option_b, 123} + ]} + + ]} + ]} +``` + +#### Dynamically + +```erlang +beam_stats_consumer:add(consumer_module, ConsumerOptions). +``` + +### Removing consumers + +Not yet implemented.