Elixir Prometheus.io client based on Prometheus.erl.
Starting from v3.0.0 works with Elixir >=1.6 and Erlang >=20. For older versions, please use older tags.
Dashboard from Monitoring Elixir apps in 2016: Prometheus and Grafana by @skosch.
defmodule ExampleInstrumenter do
use Prometheus.Metric
def setup do
Histogram.new([name: :http_request_duration_milliseconds,
labels: [:method],
buckets: [100, 300, 500, 750, 1000],
help: "Http Request execution time"])
end
def instrument(%{time: time, method: method}) do
Histogram.observe([name: :http_request_duration_milliseconds, labels: [method]], time)
end
end
or
defmodule ExampleInstrumenter do
use Prometheus.Metric
@histogram [name: :http_request_duration_milliseconds,
labels: [:method],
buckets: [100, 300, 500, 750, 1000],
help: "Http Request execution time"]
def instrument(%{time: time, method: method}) do
Histogram.observe([name: :http_request_duration_milliseconds, labels: [method]], time)
end
end
Here histogram will be declared in auto-generated @on_load
callback, i.e.
you don't have to call setup manually.
Please read how to measure durations correctly with prometheus.ex.
Available in Hex, the package can be installed as:
Add prometheus_ex
to your list of dependencies in mix.exs
:
def deps do
[{:prometheus_ex, "~> 3.1"}]
end
Ensure prometheus_ex
is started before your application:
def application do
[applications: [:prometheus_ex]]
end