Current section
Files
Jump to
Current section
Files
lib/metrics_statsd.ex
defmodule MetricsStatsD.Statix do
use Statix, runtime_config: true
end
defmodule MetricsStatsD do
@moduledoc """
Metrics reporting module for Statsd.
"""
def new(_type, _name) do
:ok
end
def increment_counter(name) do
__MODULE__.Statix.increment(sanitize(name))
end
def increment_counter(name, value) do
__MODULE__.Statix.increment(sanitize(name), value)
end
def decrement_counter(name) do
__MODULE__.Statix.decrement(sanitize(name))
end
def decrement_counter(name, value) do
__MODULE__.Statix.decrement(sanitize(name), value)
end
def update_histogram(name, fun) when is_function(fun, 0) do
{elapsed, result} = :timer.tc(fun)
update_histogram(name, elapsed / 1_000)
result
end
def update_histogram(name, value) do
__MODULE__.Statix.timing(sanitize(name), value)
end
def update_gauge(name, value) do
__MODULE__.Statix.gauge(sanitize(name), value)
end
def update_meter(_name, _value) do
:not_implemented
end
def delete(_name) do
:ok
end
defp sanitize([:hackney|_] = name), do: name |> Enum.map(&sanitize/1) |> Enum.join(".")
defp sanitize(name) when is_list(name), do: Enum.map(name, &sanitize/1)
defp sanitize(name) when is_atom(name), do: Atom.to_string(name)
defp sanitize(name), do: name
end