Commit | Line | Data |
---|---|---|
fa46439c SK |
1 | [![Build Status](https://travis-ci.org/ibnfirnas/beam_stats.svg?branch=master)](https://travis-ci.org/ibnfirnas/beam_stats) |
2 | ||
caf75ed8 SK |
3 | beam_stats |
4 | ========== | |
5 | ||
ef2b90d7 SK |
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: | |
caf75ed8 | 10 | |
ef2b90d7 SK |
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: | |
caf75ed8 SK |
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) | |
ef2b90d7 SK |
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 | |
875ffc3a | 24 | |
199b5f71 SK |
25 | ### Adding consumers |
26 | ||
27 | #### At app config time | |
875ffc3a SK |
28 | |
29 | ```erlang | |
30 | {env, | |
31 | [ {production_interval , 30000} | |
32 | , {consumers, | |
33 | [ {beam_stats_consumer_statsd, | |
34 | [ {consumption_interval , 60000} | |
35 | , {dst_host , "localhost"} | |
36 | , {dst_port , 8125} | |
37 | , {src_port , 8124} | |
4d24f3b7 | 38 | , {num_msgs_per_packet , 10} |
5b6519f3 SK |
39 | |
40 | % If you want to name your node something other than what | |
41 | % erlang:node() returns: | |
42 | , {static_node_name , <<"unicorn_at_rainbow">>} | |
875ffc3a SK |
43 | ]} |
44 | , {beam_stats_consumer_graphite, | |
45 | [ {consumption_interval , 60000} | |
46 | , {host , "localhost"} | |
47 | , {port , 2003} | |
48 | , {timeout , 5000} | |
49 | ]} | |
50 | , {beam_stats_consumer_csv, | |
51 | [ {consumption_interval , 60000} | |
52 | , {path , "beam_stats.csv"} | |
53 | ]} | |
875ffc3a | 54 | , {some_custom_consumer_module, |
ef2b90d7 SK |
55 | [ {some_custom_option_a, "abc"} |
56 | , {some_custom_option_b, 123} | |
875ffc3a SK |
57 | ]} |
58 | ||
59 | ]} | |
60 | ]} | |
61 | ``` | |
199b5f71 SK |
62 | |
63 | #### Dynamically | |
64 | ||
65 | ```erlang | |
66 | beam_stats_consumer:add(consumer_module, ConsumerOptions). | |
67 | ``` | |
68 | ||
69 | ### Removing consumers | |
70 | ||
71 | Not yet implemented. |