Class: Jaeger::Tracer
- Inherits:
-
Object
- Object
- Jaeger::Tracer
- Defined in:
- lib/jaeger/tracer.rb
Instance Attribute Summary collapse
-
#scope_manager ⇒ ScopeManager
readonly
The current ScopeManager, which may be a no-op but may not be nil.
Instance Method Summary collapse
-
#active_span ⇒ Span?
The active span.
-
#extract(format, carrier) ⇒ SpanContext
Extract a SpanContext in the given format from the given carrier.
-
#initialize(reporter:, sampler:, injectors:, extractors:) ⇒ Tracer
constructor
A new instance of Tracer.
-
#inject(span_context, format, carrier) ⇒ Object
Inject a SpanContext into the given carrier.
-
#start_active_span(operation_name, child_of: nil, references: nil, start_time: Time.now, tags: {}, ignore_active_scope: false, finish_on_close: true) {|Scope| ... } ⇒ Scope, Object
Creates a newly started and activated Scope.
-
#start_span(operation_name, child_of: nil, references: nil, start_time: Time.now, tags: {}, ignore_active_scope: false) {|Span| ... } ⇒ Span, Object
Starts a new span.
Constructor Details
#initialize(reporter:, sampler:, injectors:, extractors:) ⇒ Tracer
Returns a new instance of Tracer.
5 6 7 8 9 10 11 |
# File 'lib/jaeger/tracer.rb', line 5 def initialize(reporter:, sampler:, injectors:, extractors:) @reporter = reporter @sampler = sampler @injectors = injectors @extractors = extractors @scope_manager = ScopeManager.new end |
Instance Attribute Details
#scope_manager ⇒ ScopeManager (readonly)
Returns the current ScopeManager, which may be a no-op but may not be nil.
15 16 17 |
# File 'lib/jaeger/tracer.rb', line 15 def scope_manager @scope_manager end |
Instance Method Details
#active_span ⇒ Span?
Returns the active span. This is a shorthand for ‘scope_manager.active.span`, and nil will be returned if Scope#active is nil.
20 21 22 23 |
# File 'lib/jaeger/tracer.rb', line 20 def active_span scope = scope_manager.active scope&.span end |
#extract(format, carrier) ⇒ SpanContext
Extract a SpanContext in the given format from the given carrier.
157 158 159 160 161 162 163 164 |
# File 'lib/jaeger/tracer.rb', line 157 def extract(format, carrier) @extractors .fetch(format) .lazy .map { |extractor| extractor.extract(carrier) } .reject(&:nil?) .first end |
#inject(span_context, format, carrier) ⇒ Object
Inject a SpanContext into the given carrier
146 147 148 149 150 |
# File 'lib/jaeger/tracer.rb', line 146 def inject(span_context, format, carrier) @injectors.fetch(format).each do |injector| injector.inject(span_context, carrier) end end |
#start_active_span(operation_name, child_of: nil, references: nil, start_time: Time.now, tags: {}, ignore_active_scope: false, finish_on_close: true) {|Scope| ... } ⇒ Scope, Object
Creates a newly started and activated Scope
If the Tracer’s ScopeManager#active is not nil, no explicit references are provided, and ‘ignore_active_scope` is false, then an inferred References#CHILD_OF reference is created to the ScopeManager#active’s SpanContext when start_active is invoked.
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 |
# File 'lib/jaeger/tracer.rb', line 112 def start_active_span(operation_name, child_of: nil, references: nil, start_time: Time.now, tags: {}, ignore_active_scope: false, finish_on_close: true, **) span = start_span( operation_name, child_of: child_of, references: references, start_time: start_time, tags: , ignore_active_scope: ignore_active_scope ) scope = @scope_manager.activate(span, finish_on_close: finish_on_close) if block_given? begin yield scope ensure scope.close end else scope end end |
#start_span(operation_name, child_of: nil, references: nil, start_time: Time.now, tags: {}, ignore_active_scope: false) {|Span| ... } ⇒ Span, Object
Starts a new span.
This is similar to #start_active_span, but the returned Span will not be registered via the ScopeManager.
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/jaeger/tracer.rb', line 51 def start_span(operation_name, child_of: nil, references: nil, start_time: Time.now, tags: {}, ignore_active_scope: false, **) context, = prepare_span_context( operation_name: operation_name, child_of: child_of, references: references, ignore_active_scope: ignore_active_scope ) span = Span.new( context, operation_name, @reporter, start_time: start_time, references: references, tags: .merge() ) if block_given? begin yield(span) ensure span.finish end else span end end |