| 1 | [![Build Status](https://travis-ci.org/ibnfirnas/beam_stats.svg?branch=master)](https://travis-ci.org/ibnfirnas/beam_stats) |
| 2 | |
| 3 | beam_stats |
| 4 | ========== |
| 5 | |
| 6 | Periodically collects and pushes VM metrics to arbitrary consumer processes, |
| 7 | which, in-turn, can do whatever they want with the given data (such as |
| 8 | serialize and forward to some time series storage). Includes, off by default, |
| 9 | example implementations of consumers for: |
| 10 | |
| 11 | - StatsD (`beam_stats_consumer_statsd`) |
| 12 | - Graphite (`beam_stats_consumer_graphite`) |
| 13 | - CSV file (`beam_stats_consumer_csv`) |
| 14 | |
| 15 | Essentially like `folsomite`, but different. Different in the following ways: |
| 16 | |
| 17 | - More-general: consumers other than graphite can be defined |
| 18 | - More-focused: only concerned with VM metrics, while `folsomite` ships off |
| 19 | _everything_ from `folsom` (in addition to VM metrics) |
| 20 | - Easier-(for me!)-to-reason-about implementation: |
| 21 | + Well-defined metrics-to-binary conversions, as opposed to the |
| 22 | nearly-arbitrary term-to-string conversions used in `folsomite` |
| 23 | + Spec'd, tested and Dialyzed |
| 24 | |
| 25 | #### Configure consumers |
| 26 | |
| 27 | ```erlang |
| 28 | {env, |
| 29 | [ {production_interval , 30000} |
| 30 | , {consumers, |
| 31 | [ {beam_stats_consumer_statsd, |
| 32 | [ {consumption_interval , 60000} |
| 33 | , {dst_host , "localhost"} |
| 34 | , {dst_port , 8125} |
| 35 | , {src_port , 8124} |
| 36 | ]} |
| 37 | , {beam_stats_consumer_graphite, |
| 38 | [ {consumption_interval , 60000} |
| 39 | , {host , "localhost"} |
| 40 | , {port , 2003} |
| 41 | , {timeout , 5000} |
| 42 | ]} |
| 43 | , {beam_stats_consumer_csv, |
| 44 | [ {consumption_interval , 60000} |
| 45 | , {path , "beam_stats.csv"} |
| 46 | ]} |
| 47 | , {some_custom_consumer_module, |
| 48 | [ {some_custom_option_a, "abc"} |
| 49 | , {some_custom_option_b, 123} |
| 50 | ]} |
| 51 | |
| 52 | ]} |
| 53 | ]} |
| 54 | ``` |