Class: Zipkin::Tracer
- Inherits:
-
Object
- Object
- Zipkin::Tracer
- Defined in:
- lib/zipkin/tracer.rb
Constant Summary collapse
- DEFAULT_FLUSH_INTERVAL =
10
Class Method Summary collapse
Instance Method Summary collapse
-
#extract(format, carrier) ⇒ SpanContext
Extract a SpanContext in the given format from the given carrier.
-
#initialize(collector, sender) ⇒ Tracer
constructor
A new instance of Tracer.
-
#inject(span_context, format, carrier) ⇒ Object
Inject a SpanContext into the given carrier.
-
#start_span(operation_name, child_of: nil, start_time: Time.now, tags: {}) ⇒ Span
Starts a new span.
- #stop ⇒ Object
Constructor Details
#initialize(collector, sender) ⇒ Tracer
Returns a new instance of Tracer.
26 27 28 29 |
# File 'lib/zipkin/tracer.rb', line 26 def initialize(collector, sender) @collector = collector @sender = sender end |
Class Method Details
.build(url:, service_name:, flush_interval: DEFAULT_FLUSH_INTERVAL) ⇒ Object
15 16 17 18 19 20 21 22 23 24 |
# File 'lib/zipkin/tracer.rb', line 15 def self.build(url:, service_name:, flush_interval: DEFAULT_FLUSH_INTERVAL) collector = Collector.new(Endpoint.local_endpoint(service_name)) sender = JsonClient.new( url: url, collector: collector, flush_interval: flush_interval ) sender.start new(collector, sender) end |
Instance Method Details
#extract(format, carrier) ⇒ SpanContext
Extract a SpanContext in the given format from the given carrier.
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/zipkin/tracer.rb', line 86 def extract(format, carrier) case format when OpenTracing::FORMAT_TEXT_MAP trace_id = carrier['trace-id'] parent_id = carrier['parent-id'] span_id = carrier['span-id'] sampled = carrier['sampled'] == '1' create_span_context(trace_id, span_id, parent_id, sampled) when OpenTracing::FORMAT_RACK trace_id = carrier['HTTP_X_B3_TRACEID'] parent_id = carrier['HTTP_X_B3_PARENTSPANID'] span_id = carrier['HTTP_X_B3_SPANID'] sampled = carrier['HTTP_X_B3_SAMPLED'] == '1' create_span_context(trace_id, span_id, parent_id, sampled) else STDERR.puts "Logasm::Tracer with format #{format} is not supported yet" nil end end |
#inject(span_context, format, carrier) ⇒ Object
Inject a SpanContext into the given carrier
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/zipkin/tracer.rb', line 64 def inject(span_context, format, carrier) case format when OpenTracing::FORMAT_TEXT_MAP carrier['trace-id'] = span_context.trace_id carrier['parent-id'] = span_context.parent_id carrier['span-id'] = span_context.span_id carrier['sampled'] = span_context.sampled? ? '1' : '0' when OpenTracing::FORMAT_RACK carrier['X-B3-TraceId'] = span_context.trace_id carrier['X-B3-ParentSpanId'] = span_context.parent_id carrier['X-B3-SpanId'] = span_context.span_id carrier['X-B3-Sampled'] = span_context.sampled? ? '1' : '0' else STDERR.puts "Logasm::Tracer with format #{format} is not supported yet" end end |
#start_span(operation_name, child_of: nil, start_time: Time.now, tags: {}) ⇒ Span
Starts a new span.
45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/zipkin/tracer.rb', line 45 def start_span(operation_name, child_of: nil, start_time: Time.now, tags: {}, **) context = if child_of parent_context = child_of.respond_to?(:context) ? child_of.context : child_of SpanContext.create_from_parent_context(parent_context) else SpanContext.create_parent_context end Span.new(context, operation_name, @collector, { start_time: start_time, tags: }) end |
#stop ⇒ Object
31 32 33 |
# File 'lib/zipkin/tracer.rb', line 31 def stop @sender.stop end |