SpandexTesla (SpandexTesla v1.4.0) View Source

Tracing integration between tesla and spandex. It leverages telemetry to get the tesla events and trace them with spandex.

Hex.pm Version CI Coverage Status

Installation

The package can be installed by adding spandex_tesla to your list of dependencies in mix.exs:

def deps do
  [
    {:spandex_tesla, "~> 1.4.0"}
  ]
end

Checkout the documentation for more information.

Usage

Configure the correct tracer to be used:

config :spandex_tesla
  service: :tesla, # Optional
  tracer: MyApp.Tracer, # Required

Include the telemetry middleware in your tesla client:

defmodule MyClient do
  use Tesla

  plug Tesla.Middleware.Telemetry

end

Attach the telemetry handler:

# in application.ex
SpandexTesla.Telemetry.attach()

The docs can be found at https://hexdocs.pm/spandex_tesla.

Resource grouping

You can pass a custom resource callback to SpandexTesla.Telemetry.attach/1 with :resource key in the config. If none provided, resource name will default to <METHOD> <REQ_URL>.

The resource callback takes telemetry event metadata (map) as parameter and returns a string resource name.

See Tesla.Middleware.Telemetry for metadata structure, and also usage of middleware for URL event scoping.

SpandexTesla.Telemetry.attach(
  resource: fn %{env: %{url: url, method: method}} ->
    upcased_method = method |> to_string() |> String.upcase()
    "#{upcased_method} #{Regex.replace(~r/item\/(\d+$)/, url, "item/:item_id")}"
  end
)

Changelog

See the changelog.

Link to this section Summary

Functions

Telemetry handler. Attach it to the telemetry tesla events in order to trace the tesla calls.

Link to this section Functions

Link to this function

handle_event(list, measurements, metadata, config)

View Source

Telemetry handler. Attach it to the telemetry tesla events in order to trace the tesla calls.