Ecto integration for Prometheus.ex
- IRC: #elixir-lang on Freenode;
- Slack: #prometheus channel - Browser or App(slack://elixir-lang.slack.com/messages/prometheus).
-
Define your instrumenter:
defmodule MyApp.Repo.Instrumenter do use Prometheus.EctoInstrumenter end
-
Call
MyApp.Repo.Instrumenter.setup/0
when application starts (e.g. supervisor setup):MyApp.Repo.Instrumenter.setup()
-
If using Ecto 2, add
MyApp.Repo.Instrumenter
to Repo loggers list:config :myapp, MyApp.Repo, loggers: [MyApp.Repo.Instrumenter, Ecto.LogEntry] # ...
If using Ecto 3, attach to telemetry in your application start function:
:ok = Telemetry.attach( "prometheus-ecto", [:my_app, :repo, :query], MyApp.Repo.Instrumenter, :handle_event, %{} )
If using Ecto 3.1 with telemetry 0.4+:
:ok = :telemetry.attach( "prometheus-ecto", [:my_app, :repo, :query], &MyApp.Repo.Instrumenter.handle_event/4, %{} )
- Ecto collector
- Plugs Instrumenter/Exporter
- Elli middleware
- Fuse plugin
- Phoenix instrumenter
- Process Info Collector
- RabbitMQ Exporter
Available in Hex, the package can be installed as:
-
Add
:prometheus_ecto
to your list of dependencies inmix.exs
:def deps do [{:prometheus_ecto, "~> 1.4.3"}] end
-
Ensure
:prometheus_ecto
is started before your application:def application do [applications: [:prometheus_ecto]] end