OpenTelemetryTesla
This library is divided into two components:
Tesla middleware that injects tracing headers into HTTP requests
Telemetry handler that creates OpenTelemetry spans from Tesla HTTP client events
The handler implementation attaches to the following events:
[:tesla, :request, :start]- emitted at the beginning of the request.-
Measurement:
%{system_time: System.system_time()} -
Metadata:
%{env: Tesla.Env.t()}
-
Measurement:
[:tesla, :request, :stop]- emitted at the end of the request.-
Measurement:
%{duration: native_time} -
Metadata:
%{env: Tesla.Env.t()} | %{env: Tesla.Env.t(), error: term()}
-
Measurement:
[:tesla, :request, :exception]- emitted when an exception has been raised.-
Measurement:
%{duration: native_time} -
Metadata:
%{kind: Exception.kind(), reason: term(), stacktrace: Exception.stacktrace()}
-
Measurement:
Installation
If available in Hex, the package can be installed
by adding opentelemetry_tesla to your list of dependencies in mix.exs:
def deps do
[
{:opentelemetry_tesla, "~> 1.1.0-rc.1"}
]
endSetup
If you want to use Telemetry handler, make sure you add the following lines to your application start:
OpenTelemetry.register_application_tracer(:my_telemetry_api)
OpentelemetryTesla.setup()To propagate tracing information you'll also have to add the tesla middleware.
plug Tesla.Middleware.OpenTelemetry