class OpenTelemetry::Adapters::Faraday::Middlewares::TracerMiddleware

TracerMiddleware propagates context and instruments Faraday requests by way of its middlware system

Constants

HTTP_METHODS_SYMBOL_TO_STRING

Attributes

app[R]

Public Instance Methods

call(env) click to toggle source
# File lib/opentelemetry/adapters/faraday/middlewares/tracer_middleware.rb, line 26
def call(env)
  http_method = HTTP_METHODS_SYMBOL_TO_STRING[env.method]

  tracer.in_span(
    "HTTP #{http_method}",
    attributes: {
      'component' => 'http',
      'http.method' => http_method,
      'http.url' => env.url.to_s
    },
    kind: :client
  ) do |span|
    OpenTelemetry.propagation.http.inject(env.request_headers)

    app.call(env).on_complete { |resp| trace_response(span, resp) }
  end
end

Private Instance Methods

trace_response(span, response) click to toggle source
# File lib/opentelemetry/adapters/faraday/middlewares/tracer_middleware.rb, line 52
def trace_response(span, response)
  span.set_attribute('http.status_code', response.status)
  span.set_attribute('http.status_text', response.reason_phrase)
  span.status = OpenTelemetry::Trace::Status.http_to_status(
    response.status
  )
end
tracer() click to toggle source
# File lib/opentelemetry/adapters/faraday/middlewares/tracer_middleware.rb, line 48
def tracer
  Faraday::Adapter.instance.tracer
end