tiny Erlang app to generate information on the Erlang VM
Erlang
256
79 commits
updated Sep 11, 2025
vmstats is a tiny Erlang app that gathers metrics on the Erlang VM and sends them to a configurable sink (e.g., StatsD).
The different metrics that vmstats gathers include:
error_logger queue lengthvmstats can be built using rebar3:
$ rebar3 compile
Once you have vmstats set up, just add it to the list of applications to start
in order to start gathering data. You'll need a sink (a module that implements
the vmstats_sink behaviour) to send metrics to.
The following is a list of the possible options for the configuration of the
vmstats app:
sink - (module) a module that implements the vmstats_sink behaviour; vmstats metrics will be collected through this module.base_key - (string) every metric name is prepended with this base key. Defaults to "vmstats".key_separator - (char) used as a separator between the parts of metric keys. Defaults to $..interval - (integer) the time (in milliseconds) between metric gatherings. Defaults to 1000 (1s).sched_time - (boolean) whether to gather statistics about scheduler wall time. Defaults to true.memory_metrics - (proplist of metric and key) what fields to collect statistics for.
Available fields can be found here.
Default list is [{total, total}, {processes_used, procs_used}, {atom_used, atom_used}, {binary, binary}, {ets, ets}].vmstats_sink behaviourvmstats sinks must implement the vmstats_sink behaviour. This behaviour only
specifies one function:
-callback collect(Type :: counter | gauge | timing,
Key :: iodata(),
Value :: term()) -> ok.
That's because you should use tags for stable versions instead! The changelog should let you know what to expect.
Make changes and be sure to test them ($ rebar3 eunit).
See the CHANGELOG.md file.
See the license file.
Erlang
95.6%
Shell
4.4%
tiny Erlang app to generate information on the Erlang VM
Erlang
256
79 commits
updated Sep 11, 2025
vmstats is a tiny Erlang app that gathers metrics on the Erlang VM and sends them to a configurable sink (e.g., StatsD).
The different metrics that vmstats gathers include:
error_logger queue lengthvmstats can be built using rebar3:
$ rebar3 compile
Once you have vmstats set up, just add it to the list of applications to start
in order to start gathering data. You'll need a sink (a module that implements
the vmstats_sink behaviour) to send metrics to.
The following is a list of the possible options for the configuration of the
vmstats app:
sink - (module) a module that implements the vmstats_sink behaviour; vmstats metrics will be collected through this module.base_key - (string) every metric name is prepended with this base key. Defaults to "vmstats".key_separator - (char) used as a separator between the parts of metric keys. Defaults to $..interval - (integer) the time (in milliseconds) between metric gatherings. Defaults to 1000 (1s).sched_time - (boolean) whether to gather statistics about scheduler wall time. Defaults to true.memory_metrics - (proplist of metric and key) what fields to collect statistics for.
Available fields can be found here.
Default list is [{total, total}, {processes_used, procs_used}, {atom_used, atom_used}, {binary, binary}, {ets, ets}].vmstats_sink behaviourvmstats sinks must implement the vmstats_sink behaviour. This behaviour only
specifies one function:
-callback collect(Type :: counter | gauge | timing,
Key :: iodata(),
Value :: term()) -> ok.
That's because you should use tags for stable versions instead! The changelog should let you know what to expect.
Make changes and be sure to test them ($ rebar3 eunit).
See the CHANGELOG.md file.
See the license file.
Erlang
95.6%
Shell
4.4%