Class: Ditliti::Span

Inherits:
Object
  • Object
show all
Defined in:
lib/ditliti.rb

Overview

Returned by Client#start_span; call #finish when the operation completes to record and send the span.

Instance Method Summary collapse

Constructor Details

#initialize(client, operation_name, parent_span_id, ctx, tags) ⇒ Span

Returns a new instance of Span.



61
62
63
64
65
66
67
68
69
# File 'lib/ditliti.rb', line 61

def initialize(client, operation_name, parent_span_id, ctx, tags)
  @client = client
  @operation_name = operation_name
  @parent_span_id = parent_span_id
  @ctx = ctx
  @tags = tags
  @started_at = Time.now.utc
  @started_monotonic = Process.clock_gettime(Process::CLOCK_MONOTONIC)
end

Instance Method Details

#finish(extra_tags: {}) ⇒ Object



83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/ditliti.rb', line 83

def finish(extra_tags: {})
  duration_ms = (Process.clock_gettime(Process::CLOCK_MONOTONIC) - @started_monotonic) * 1000
  @client.record_span(
    trace_id: @ctx.trace_id,
    span_id: @ctx.span_id,
    parent_span_id: @parent_span_id,
    operation_name: @operation_name,
    duration_ms: duration_ms,
    started_at: @started_at,
    tags: @tags.merge(extra_tags)
  )
end

#span_idObject



75
76
77
# File 'lib/ditliti.rb', line 75

def span_id
  @ctx.span_id
end

#trace_idObject



71
72
73
# File 'lib/ditliti.rb', line 71

def trace_id
  @ctx.trace_id
end

#traceparentObject



79
80
81
# File 'lib/ditliti.rb', line 79

def traceparent
  @ctx.to_traceparent
end