module OpenTelemetry::Adapters::RestClient::Patches::Request
Module to prepend to RestClient::Request for instrumentation
Public Instance Methods
execute(&block)
click to toggle source
Calls superclass method
# File lib/opentelemetry/adapters/restclient/patches/request.rb, line 13 def execute(&block) trace_request do |_span| super(&block) end end
Private Instance Methods
trace_request() { |span| ... }
click to toggle source
# File lib/opentelemetry/adapters/restclient/patches/request.rb, line 21 def trace_request # rubocop:disable Metrics/AbcSize, Metrics/MethodLength http_method = method.upcase span = tracer.start_span( "HTTP #{http_method}", attributes: { 'component' => 'http', 'http.method' => http_method, 'http.url' => url }, kind: :client ) tracer.with_span(span) do OpenTelemetry.propagation.http.inject(processed_headers) end yield(span).tap do |response| # Verify return value is a response. # If so, add additional attributes. if response.is_a?(::RestClient::Response) span.set_attribute('http.status_code', response.code) span.set_attribute('http.status_text', ::RestClient::STATUSES[response.code]) span.status = OpenTelemetry::Trace::Status.http_to_status( response.code ) end end rescue ::RestClient::ExceptionWithResponse => e span.set_attribute('http.status_code', e.http_code) span.status = OpenTelemetry::Trace::Status.http_to_status( e.http_code ) raise e ensure span.finish end
tracer()
click to toggle source
# File lib/opentelemetry/adapters/restclient/patches/request.rb, line 59 def tracer RestClient::Adapter.instance.tracer end