Class: LightStep::Span
- Inherits:
-
Object
- Object
- LightStep::Span
- Defined in:
- lib/lightstep/span.rb
Overview
Span represents an OpenTracer Span
See www.opentracing.io for more information.
Instance Attribute Summary collapse
-
#baggage ⇒ Object
readonly
Internal use only.
-
#end_micros ⇒ Object
readonly
Internal use only.
-
#guid ⇒ Object
readonly
Internal use only.
-
#start_micros ⇒ Object
readonly
Internal use only.
-
#tags ⇒ Object
readonly
Internal use only.
-
#trace_guid ⇒ Object
readonly
Internal use only.
Instance Method Summary collapse
-
#dropped_logs_count ⇒ Object
Internal use only.
-
#finish(end_time: Time.now) ⇒ Object
Finish the Span.
-
#get_baggage_item(key) ⇒ Object
Get a baggage item.
-
#initialize(tracer:, operation_name:, child_of_guid: nil, trace_guid:, start_micros:, tags: nil, max_log_records:) ⇒ Span
constructor
Creates a new Span.
-
#log(event: nil, timestamp: Time.now, **fields) ⇒ Object
Add a log entry to this span.
-
#logs_count ⇒ Object
Internal use only.
-
#set_baggage_item(key, value) ⇒ Object
Set a baggage item on the span.
-
#set_tag(key, value) ⇒ Object
Set a tag value on this span a String, Numeric, or Boolean it will be encoded with to_s.
-
#to_h ⇒ Object
Hash representation of a span.
Constructor Details
#initialize(tracer:, operation_name:, child_of_guid: nil, trace_guid:, start_micros:, tags: nil, max_log_records:) ⇒ Span
Creates a new LightStep::Span
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/lightstep/span.rb', line 20 def initialize( tracer:, operation_name:, child_of_guid: nil, trace_guid:, start_micros:, tags: nil, max_log_records: ) @tags = Concurrent::Hash.new() @baggage = Concurrent::Hash.new @log_records = Concurrent::Array.new @dropped_logs = Concurrent::AtomicFixnum.new @max_log_records = max_log_records @tracer = tracer @guid = LightStep.guid self.operation_name = operation_name self.start_micros = start_micros self.trace_guid = trace_guid set_tag(:parent_span_guid, child_of_guid) if !child_of_guid.nil? end |
Instance Attribute Details
#baggage ⇒ Object (readonly)
Internal use only
10 11 12 |
# File 'lib/lightstep/span.rb', line 10 def baggage @baggage end |
#end_micros ⇒ Object
Internal use only
10 11 12 |
# File 'lib/lightstep/span.rb', line 10 def end_micros @end_micros end |
#guid ⇒ Object
Internal use only
10 11 12 |
# File 'lib/lightstep/span.rb', line 10 def guid @guid end |
#start_micros ⇒ Object
Internal use only
10 11 12 |
# File 'lib/lightstep/span.rb', line 10 def start_micros @start_micros end |
#tags ⇒ Object (readonly)
Internal use only
10 11 12 |
# File 'lib/lightstep/span.rb', line 10 def @tags end |
#trace_guid ⇒ Object
Internal use only
10 11 12 |
# File 'lib/lightstep/span.rb', line 10 def trace_guid @trace_guid end |
Instance Method Details
#dropped_logs_count ⇒ Object
Internal use only
132 133 134 |
# File 'lib/lightstep/span.rb', line 132 def dropped_logs_count dropped_logs.value end |
#finish(end_time: Time.now) ⇒ Object
Finish the LightStep::Span
104 105 106 107 108 109 110 |
# File 'lib/lightstep/span.rb', line 104 def finish(end_time: Time.now) if end_micros.nil? self.end_micros = LightStep.micros(end_time) end tracer.finish_span(self) self end |
#get_baggage_item(key) ⇒ Object
Get a baggage item
71 72 73 |
# File 'lib/lightstep/span.rb', line 71 def get_baggage_item(key) baggage[key] end |
#log(event: nil, timestamp: Time.now, **fields) ⇒ Object
Add a log entry to this span
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/lightstep/span.rb', line 79 def log(event: nil, timestamp: Time.now, **fields) return unless tracer.enabled? record = { runtime_guid: tracer.guid, timestamp_micros: LightStep.micros() } record[:stable_name] = event.to_s if !event.nil? begin record[:payload_json] = JSON.generate(fields, max_nesting: 8) rescue # TODO: failure to encode a payload as JSON should be recorded in the # internal library logs, with catioun not flooding the internal logs. end log_records.push(record) if log_records.size > @max_log_records log_records.shift dropped_logs.increment end end |
#logs_count ⇒ Object
Internal use only
138 139 140 |
# File 'lib/lightstep/span.rb', line 138 def logs_count log_records.size end |
#set_baggage_item(key, value) ⇒ Object
Set a baggage item on the span
63 64 65 66 |
# File 'lib/lightstep/span.rb', line 63 def set_baggage_item(key, value) baggage[key] = value self end |
#set_tag(key, value) ⇒ Object
Set a tag value on this span a String, Numeric, or Boolean it will be encoded with to_s
47 48 49 50 51 52 53 54 55 |
# File 'lib/lightstep/span.rb', line 47 def set_tag(key, value) case value when String, Fixnum, TrueClass, FalseClass [key] = value else [key] = value.to_s end self end |
#to_h ⇒ Object
Hash representation of a span
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/lightstep/span.rb', line 113 def to_h { runtime_guid: tracer.guid, span_guid: guid, trace_guid: trace_guid, span_name: operation_name, attributes: .map {|key, value| {Key: key.to_s, Value: value} }, oldest_micros: start_micros, youngest_micros: end_micros, error_flag: false, dropped_logs: dropped_logs_count, log_records: log_records } end |