opentelemetry-erlang-contrib/instrumentation/opentelemetry_phoenix
Andrew Rosa 3faa246d02
Remove exporter race-condition on tests (#44)
Default exporter immediately attempts on start connect to
`:otel-collector` default port. As we don't have any collector running
on our test environment, this results in a few warnings. That's not an
issue in itself, as code immediately switches to another export, but
creates a lot of noise.

This patch moves the exporter setup to `config/test.exs`, essentially
removing the need to restart opentelemetry applicationn for each test
case. The only work setup blocks do is update the exporter's target pid.

The processor was changed to simple mode, available now, which also remove
another vector of (unlikely but theoretically possible) race-conditions.
2022-03-24 11:48:59 -06:00
..
config Remove exporter race-condition on tests (#44) 2022-03-24 11:48:59 -06:00
lib Only attempt to record an exception if there is an active span. (#37) 2022-03-18 05:21:26 -06:00
test Remove exporter race-condition on tests (#44) 2022-03-24 11:48:59 -06:00
.formatter.exs Otel phoenix migration (#4) 2021-09-12 13:49:24 -06:00
.gitignore Otel phoenix migration (#4) 2021-09-12 13:49:24 -06:00
CHANGELOG.md Otel 1.0 support (#57) 2022-01-04 18:58:06 -07:00
LICENSE Otel phoenix migration (#4) 2021-09-12 13:49:24 -06:00
README.md Otel 1.0.0-rc.4 updates (#54) 2021-12-28 16:39:06 -07:00
mix.exs Otel 1.0 support (#57) 2022-01-04 18:58:06 -07:00
mix.lock Otel 1.0 support (#57) 2022-01-04 18:58:06 -07:00

README.md

OpentelemetryPhoenix

EEF Observability WG project Hex.pm Build Status

Telemetry handler that creates Opentelemetry spans from Phoenix events.

After installing, setup the handler in your application behaviour before your top-level supervisor starts.

OpentelemetryPhoenix.setup()

See the documentation for OpentelemetryPhoenix.setup/1 for additional options that may be supplied.

Installation

def deps do
  [
    {:opentelemetry_phoenix, "~> 1.0.0-rc.6"}
  ]
end

Compatibility Matrix

OpentelemetryPhoenix Version Otel Version Notes
v0.1.0 <= v.0.5.0
v1.0.0-rc.3 v1.0.0-rc.1
v1.0.0-rc.2
v1.0.0-rc.4 v1.0.0-rc.2 Otel rc.3 will be a breaking change
v1.0.0-rc.5 v1.0.0-rc.3
v1.0.0-rc.6 v1.0.0-rc.4

Note on phoenix integration

OpentelemetryPhoenix requires phoenix to use Plug.Telemetry in order to correctly trace endpoint calls.

The endpoint.ex file should look like:

defmodule MyApp.Endpoint do
  use Phoenix.Endpoint, otp_app: :my_app
  ...
  plug Plug.Telemetry, event_prefix: [:phoenix, :endpoint]
  ...
end

The Phoenix endpoint.ex template can be used as a reference