Phoenix and Plug integrations for the Spandex tracing library.
Add spandex_phoenix
to your dendencies in mix.exs
:
def deps do
[
{:spandex_phoenix, "~> 0.4.0"}
]
end
Configure it to use your desired Spandex.Tracer
module in config.exs
:
config :spandex_phoenix, tracer: MyApp.Tracer
Add use SpandexPhoenix
to the appropriate module. This will "wrap" the
module with tracing and error-reporting via Spandex.
Phoenix integration:
defmodule MyAppWeb.Endpoint do
use Phoenix.Endpoint, otp_app: :my_app
use SpandexPhoenix
# ...
end
Plug integration:
defmodule MyApp.Router do
use Plug.Router
use SpandexPhoenix
# ...
end
Traces can be customized and filtered by passing options to the use SpandexPhoenix
macro.
See the documentation for SpandexPhoenix for more information.
If you are using Phoenix and you configure SpandexPhoenix.Instrumenter
in
your Phoenix instrumenters
list, you will automatically get spans created for
Phoenix.Controller
and Phoenix.View
timing, with the resource
set to the
name of the controller action or view name.
Note that this should be used in addition to the use SpandexPhoenix
macro to start the trace and top-level span, as the instrumenter only creates
child spans, assuming that the trace will already have been created.
Configure your Phoenix Endpoint
to use this library as one of its
instrumenters
:
config :my_app, MyAppWeb.Endpoint,
# ... existing config ...
instrumenters: [SpandexPhoenix.Instrumenter]
More details can also be found in the docs on Hexdocs.