README.md

# ExVmstats

An Elixir package for pushing Erlang VM stats into StatsD, based on [ferd/vmstats](https://github.com/ferd/vmstats).

## Installation

  1. Add ex_vmstats to your list of dependencies in `mix.exs`:

    ```elixir
    def deps do
      [{:ex_vmstats, "~> 0.0.1"}]
    end
    ```

  2. Ensure ex_vmstats is started before your application:

    ```elixir
    def application do
      [applications: [:ex_vmstats]]
    end
    ```

## Dependencies

Your project must include [ExStatsD](https://github.com/CargoSense/ex_statsd), unless you use a custom backend. (See configuration options below.)

## Configuration

Configure ExVmstats using `Mix.Config`, normally somewhere in `config/`:

```elixir
use Mix.Config

config :ex_vmstats,
  namespace: "vm_stats",
  backend: :ex_statsd,
  interval: 3000,
  use_histogram: false,
  sched_time: false

```

Defaults are shown. The configuration options are:

* **namespace**: This will be prepended to all metrics sent by ExVmStats, but will follow the ExStatsD namespace (if applicable).

* **backend**: Out of the box, the only supported backend is ExStatsD. A custom backend module may be identified here. Backend modules must define the functions `&timing/2`, `&counter/2`, and one or both of `&gauge/2` and `&histogram/2`. The arguments passed to each are `(value, metric)`.

* **interval**: The number of milliseconds to wait between VM stats deliveries.

* **use_histogram**: Use histograms instead of gauges. For use with Datadog's DogStatD.

* **sched_time**: Enable reporting of Erlang `scheduler_wall_time` statistics (if available). For more information, see the section dealing with `scheduler_wall_time` [here](http://www1.erlang.org/doc/man/erlang.html#statistics-1).