0e6a776ffb
* Fix CI errors, update GHA deps, update versions * output syntax * remove OTP 22 tests * set concurrency to cancel in progress * whitespace * incompatible vsns and failed test * Try pulling excludes out * Escaping * Just drop < 1.13 until this can move to workflows * quote |
||
---|---|---|
.. | ||
config | ||
lib | ||
test | ||
.formatter.exs | ||
.gitignore | ||
CHANGELOG.md | ||
LICENSE | ||
README.md | ||
mix.exs | ||
mix.lock |
README.md
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"}
]
end
In your application start:
def start(_type, _args) do
OpentelemetryFinch.setup()
# ...
end
Since 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
end
Compatibility 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.