View Source StatsdMetric (statsd_metric v0.1.1)
A fast StatsD / DogStatsD metric encoder and single-pass parser.
StatsdMetric
supports all standard StatsD metric types:
- Counter
- Gauge
- Histogram
- Timer
- Set
- Meter
It also supports DogStatsD sample rates and tags.
Encoding Example
Encoding supports IO list and string return types.
iex> StatsdMetric.encode("name.spaced", 1.0, :counter)
["name.spaced", 58, "1.0", 124, "c"]
iex> StatsdMetric.encode_to_string("name.spaced", 1.0, :counter)
"name.spaced:1.0|c"
Parsing Example
iex> StatsdMetric.decode!("name.spaced:1.0|c|@0.1|#foo:bar")
%StatsdMetric{
key: "name.spaced",
value: 1.0,
type: :counter,
sample_rate: 0.1,
tags: %{"foo" => "bar"}
}
Summary
Functions
Parses a StatsD metric into a %StatsdMetric{}
.
Parses a StatsD metric into a %StatsdMetric{}
.
Encodes a %StatsdMetric{}
into a StatsD metric IO list.
Encodes a %StatsdMetric{}
into a StatsD metric string.
Types
Functions
@spec decode(binary()) :: {:ok, %StatsdMetric{ key: term(), sample_rate: term(), tags: term(), type: term(), value: term() }} | {:error, atom()}
Parses a StatsD metric into a %StatsdMetric{}
.
iex> StatsdMetric.decode("name.spaced:1.0|c|@0.1|#foo:bar")
{:ok, %StatsdMetric{
key: "name.spaced",
value: 1.0,
type: :counter,
sample_rate: 0.1,
tags: %{"foo" => "bar"}
}}
@spec decode!(binary()) :: %StatsdMetric{ key: term(), sample_rate: term(), tags: term(), type: term(), value: term() }
Parses a StatsD metric into a %StatsdMetric{}
.
iex> StatsdMetric.decode!("name.spaced:1.0|c|@0.1|#foo:bar")
%StatsdMetric{
key: "name.spaced",
value: 1.0,
type: :counter,
sample_rate: 0.1,
tags: %{"foo" => "bar"}
}
If the metric is invalid, it raises one of:
Encodes a %StatsdMetric{}
into a StatsD metric IO list.
iex> StatsdMetric.encode("name.spaced", 1.0, :counter)
["name.spaced", 58, "1.0", 124, "c"]
Encodes a %StatsdMetric{}
into a StatsD metric string.
iex> StatsdMetric.encode_to_string("name.spaced", 1.0, :counter)
"name.spaced:1.0|c"