opentelemetry-erlang-contrib/instrumentation/opentelemetry_finch
Patrik Stenmark ddf0706bf1
Make exdocs settings a bit more similar between different packages (#168)
* 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.
2023-04-30 12:10:03 -06:00
..
config finch-instrumentation (#115) 2022-11-09 12:27:40 -07:00
lib chore: add sc to finch (#141) 2022-12-15 04:36:52 -07:00
test Fix CI errors, update GHA deps, update versions (#125) 2022-11-15 16:22:28 -07:00
.formatter.exs finch-instrumentation (#115) 2022-11-09 12:27:40 -07:00
.gitignore finch-instrumentation (#115) 2022-11-09 12:27:40 -07:00
CHANGELOG.md finch-instrumentation (#115) 2022-11-09 12:27:40 -07:00
LICENSE finch-instrumentation (#115) 2022-11-09 12:27:40 -07:00
README.md finch-instrumentation (#115) 2022-11-09 12:27:40 -07:00
mix.exs Make exdocs settings a bit more similar between different packages (#168) 2023-04-30 12:10:03 -06:00
mix.lock Phoenix Plug.Cowboy adapter support (#144) 2023-01-06 13:46:06 -07:00

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.