Prometheus.ex
Elixir Prometheus.io client based on Prometheus.erl.
Starting from v3.0.0 works with Elixir >=1.6 and Erlang >=20. For older verions, please use older tags.
Dashboard from Monitoring Elixir apps in 2016: Prometheus and Grafana by @skosch.
- IRC: #elixir-lang on Freenode;
- Slack: #prometheus channel - Browser or App(slack://elixir-lang.slack.com/messages/prometheus).
Example
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.
Integrations / Collectors / Instrumenters
- Ecto collector
- Elli middleware
- Extatus - App to report metrics to Prometheus from Elixir GenServers
- Plugs Instrumenter/Exporter
- Fuse plugin
- OS process info Collector (linux-only)
- Phoenix instrumenter
- RabbitMQ Exporter
Dashboards
Installation
Available in Hex, the package can be installed as:
-
Add
prometheus_ex
to your list of dependencies inmix.exs
:def deps do [{:prometheus_ex, "~> 3.0"}] end
-
Ensure
prometheus_ex
is started before your application:def application do [applications: [:prometheus_ex]] end