ddf0706bf1
* Add source_url_pattern to be able to use the "link to source" button * Add README.md as an "extra" where it wasn't already * Add a `main` setting. They all have a very obvious main module. Set that as `main`, so a user is shown this immediately instead of a list of usually only this module. |
||
---|---|---|
.. | ||
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.