Class: TIMEx::Telemetry::Adapters::OpenTelemetry
- Defined in:
- lib/timex/telemetry/adapters.rb
Overview
Bridges TIMEx spans to OpenTelemetry when the gem is available.
Constant Summary collapse
- ATTRIBUTE_TYPES =
[String, Symbol, Numeric, TrueClass, FalseClass, NilClass].freeze
Instance Method Summary collapse
- #finish(event:, payload:) ⇒ void
-
#initialize ⇒ OpenTelemetry
constructor
A new instance of OpenTelemetry.
- #start(event:, payload:) ⇒ void
Methods inherited from Base
Constructor Details
#initialize ⇒ OpenTelemetry
Returns a new instance of OpenTelemetry.
116 117 118 119 |
# File 'lib/timex/telemetry/adapters.rb', line 116 def initialize super require "opentelemetry/api" end |
Instance Method Details
#finish(event:, payload:) ⇒ void
This method returns an undefined value.
135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
# File 'lib/timex/telemetry/adapters.rb', line 135 def finish(event:, payload:) span = payload.delete(:__otel_span) return unless span span.set_attribute("timex.elapsed_ms", payload[:elapsed_ms]) if payload[:elapsed_ms] && span.respond_to?(:set_attribute) if span.respond_to?(:status=) case payload[:outcome] when :timeout span.status = ::OpenTelemetry::Trace::Status.error("timeout") when :error span.status = ::OpenTelemetry::Trace::Status.error(payload[:error_class].to_s) end end span.finish end |
#start(event:, payload:) ⇒ void
This method returns an undefined value.
124 125 126 127 128 129 130 |
# File 'lib/timex/telemetry/adapters.rb', line 124 def start(event:, payload:) tracer = ::OpenTelemetry.tracer_provider.tracer("timex") payload[:__otel_span] = tracer.start_span( event, attributes: coerce_attributes(payload) ) end |