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
|
# File 'lib/restify/adapter/telemetry.rb', line 9
def call(request)
method = request.method.to_s.upcase
uri = URI.parse(request.uri)
name = "#{method} #{uri.scheme}://#{uri.host}:#{uri.port}"
attributes = {
'http.request.method' => method,
'server.address' => uri.host,
'server.port' => uri.port,
'url.full' => uri.to_s,
'url.scheme' => uri.scheme,
}
span = tracer.start_span(name, attributes:, kind: :client)
OpenTelemetry::Trace.with_span(span) do
OpenTelemetry.propagation.inject(request.)
super.tap do |x|
x.add_observer do |_, response, err|
if response
span.set_attribute('http.response.status_code', response&.code)
span.status = OpenTelemetry::Trace::Status.error unless (100..399).cover?(response&.code)
end
span.status = OpenTelemetry::Trace::Status.error(err) if err
span.finish
end
end
end
end
|