Prometheus.io collector for Elixir.Ecto
Ecto integration for Prometheus.ex
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,
%{}
)
Available in Hex, the package can be installed as:
Add :prometheus_ecto
to your list of dependencies in mix.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