OpentelemetryFinch
OpentelemetryFinch uses telemetry handlers to
create OpenTelemetry spans from Finch events.
Installation
The package can be installed by adding opentelemetry_finch to your list of
dependencies in mix.exs:
def deps do
[
{:opentelemetry_finch, "~> 0.1"}
]
endIn your application start:
def start(_type, _args) do
OpentelemetryFinch.setup()
# ...
endSince this instrumentation is based on telemetry, it is not possible to automatically propagate the context in the http headers. If you need to perform context propagation, you should opt for manual instrumentation. Something like this:
require OpenTelemetry.Tracer, as: Tracer
Tracer.with_span "HTTP #{url}" do
headers = :otel_propagator_text_map.inject([])
with request <- Finch.build(:get, url, headers),
{:ok, response} <- Finch.request(request, HttpFinch) do
Tracer.set_attributes([
{"http.url", url},
{"http.method", request.method},
{"http.status_code", response.status}])
{:ok, response}
else
{:error, %{__exception__: true} = error} ->
Tracer.set_status(:error, Exception.message(error))
{:error, error}
end
endCompatibility Matrix
| OpentelemetryFinch Version | Otel Version | Notes |
|---|---|---|
| v0.1.0 | v1.0.0 |
Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/opentelemetry_finch.