Module: JCW::HttpTracer
- Defined in:
- lib/jcw/http_tracer.rb
Class Method Summary collapse
-
.patch_perform ⇒ Object
rubocop:disable Metrics/MethodLength.
Class Method Details
.patch_perform ⇒ Object
rubocop:disable Metrics/MethodLength
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/jcw/http_tracer.rb', line 9 def patch_perform ::HTTP::Client.class_eval do def perform_with_tracing(request, ) if ::HTTP::Tracer.ignore_request.call(request, ) res = perform_without_tracing(request, ) else path, host, port, verb = nil path = request.uri.path if request.uri.respond_to?(:path) host = request.uri.host if request.uri.respond_to?(:host) port = request.uri.port if request.uri.respond_to?(:port) verb = request.verb.to_s.upcase if request.respond_to?(:verb) full_path = request.uri.to_s = { "component" => "ruby-httprb", "span.kind" => "client", "http.method" => verb, "http.url" => path, "peer.host" => host, "peer.port" => port, "full_path" => full_path, }.compact tracer = ::HTTP::Tracer.tracer request_name = "http.request #{verb} #{path}" tracer.start_active_span(request_name, tags: ) do |scope| request.headers.merge!(.headers) OpenTracing.inject(scope.span.context, OpenTracing::FORMAT_TEXT_MAP, request.headers) res = perform_without_tracing(request, ) scope.span.set_tag("http.status_code", res.status) scope.span.set_tag("error", true) if res.is_a?(StandardError) end end res end alias_method :perform_without_tracing, :perform alias_method :perform, :perform_with_tracing end end |