Class: Datadog::Trace::Listener
- Inherits:
-
Object
- Object
- Datadog::Trace::Listener
- Defined in:
- lib/datadog/lambda/trace/listener.rb
Overview
TraceListener tracks tracing context information
Instance Method Summary collapse
-
#initialize(handler_name:, function_name:, patch_http:, merge_xray_traces:) ⇒ Listener
constructor
A new instance of Listener.
- #on_end ⇒ Object
- #on_start(event:) ⇒ Object
- #on_wrap(request_context:, cold_start:, &block) ⇒ Object
Constructor Details
#initialize(handler_name:, function_name:, patch_http:, merge_xray_traces:) ⇒ Listener
Returns a new instance of Listener.
19 20 21 22 23 24 25 26 |
# File 'lib/datadog/lambda/trace/listener.rb', line 19 def initialize(handler_name:, function_name:, patch_http:, merge_xray_traces:) @handler_name = handler_name @function_name = function_name @merge_xray_traces = merge_xray_traces Datadog::Trace.patch_http if patch_http end |
Instance Method Details
#on_end ⇒ Object
37 |
# File 'lib/datadog/lambda/trace/listener.rb', line 37 def on_end; end |
#on_start(event:) ⇒ Object
28 29 30 31 32 33 34 35 |
# File 'lib/datadog/lambda/trace/listener.rb', line 28 def on_start(event:) trace_context = Datadog::Trace.extract_trace_context(event, @merge_xray_traces) Datadog::Trace.trace_context = trace_context Datadog::Utils.logger.debug "extracted trace context #{trace_context}" rescue StandardError => e Datadog::Utils.logger.error "couldn't read tracing context #{e}" end |
#on_wrap(request_context:, cold_start:, &block) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/datadog/lambda/trace/listener.rb', line 39 def on_wrap(request_context:, cold_start:, &block) = ( request_context: request_context, cold_start: cold_start ) context = Datadog::Trace.trace_context source = context[:source] if context [:tags]['_dd.parent_source'] = source if source && source != 'ddtrace' [:resource] = @function_name [:service] = 'aws.lambda' [:span_type] = 'serverless' Datadog::Trace.apply_datadog_trace_context(Datadog::Trace.trace_context) Datadog::Trace.wrap_datadog() do block.call end end |