Module: Mnemosyne::Probes::Restify::Base::Probe::Instrumentation

Defined in:
lib/mnemosyne/probes/restify/base.rb

Instance Method Summary collapse

Instance Method Details

#call(request) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/mnemosyne/probes/restify/base.rb', line 13

def call(request)
  if (trace = ::Mnemosyne::Instrumenter.current_trace)
    meta = {url: request.uri.to_s, method: request.method}
    span = ::Mnemosyne::Span.new('external.http.restify', meta:)

    span.start!

    request.headers['X-Mnemosyne-Transaction'] = trace.transaction
    request.headers['X-Mnemosyne-Origin'] = span.uuid

    super.tap do |x|
      x.add_observer do |_, response, _err|
        span.meta[:status] = response.code

        trace << span.finish!
      end
    end
  else
    super
  end
end