class OpenCensus::Trace::Exporters::Datadog::Converter
Constants
- CANONICAL_CODES
- DATADOG_MAX_TRACE_ID
- DATADOG_RESOURCE_NAME_KEY
- DATADOG_SAMPLING_PRIORITY_KEY
- DATADOG_SERVICE_NAME_KEY
- DATADOG_SPAN_TYPE_KEY
- STATUS_DESCRIPTION_KEY
Public Class Methods
new(service)
click to toggle source
# File lib/opencensus/trace/exporters/datadog/converter.rb, line 40 def initialize(service) @service = service end
Public Instance Methods
convert_span(span)
click to toggle source
# File lib/opencensus/trace/exporters/datadog/converter.rb, line 44 def convert_span(span) dd_span = { span_id: span.span_id.to_i(16), parent_id: span.parent_span_id.to_i(16), trace_id: (span.trace_id.to_i(16) & DATADOG_MAX_TRACE_ID), name: span.name.to_s, service: @service, resource: span.name.to_s, type: span_type(span.kind.to_s), meta: {}, metrics: {}, error: 0, start: (span.start_time.to_f * 1e9).to_i, duration: ((span.end_time.to_f - span.start_time.to_f) * 1e9).to_i, } dd_span[:metrics][DATADOG_SAMPLING_PRIORITY_KEY] = ::Datadog::Ext::Priority::AUTO_KEEP convert_status(dd_span, span.status) span.attributes.each do |k, v| case v when Integer if k == DATADOG_SAMPLING_PRIORITY_KEY dd_span[:metrics][DATADOG_SAMPLING_PRIORITY_KEY] = v else dd_span[:metrics][k] = v end when ::OpenCensus::Trace::TruncatableString case k when DATADOG_SPAN_TYPE_KEY dd_span[:type] = v.to_s when DATADOG_SERVICE_NAME_KEY dd_span[:service] = v.to_s when DATADOG_RESOURCE_NAME_KEY dd_span[:resource] = v.to_s else dd_span[:meta][k] = v.to_s end else dd_span[:meta][k] = v.to_s end end dd_span end
convert_status(dd_span, status)
click to toggle source
# File lib/opencensus/trace/exporters/datadog/converter.rb, line 91 def convert_status(dd_span, status) status_key = STATUS_DESCRIPTION_KEY return if status.nil? if status.code != 0 then status_key = ::Datadog::Ext::Errors::MSG dd_span[:error] = 1 code = status.code.to_i return if code < 0 || code >= CANONICAL_CODES.length dd_span[:meta][status_key] = CANONICAL_CODES[code] end dd_span[:meta][status_key] = status.message.to_s unless status.message.empty? return end
span_type(kind)
click to toggle source
# File lib/opencensus/trace/exporters/datadog/converter.rb, line 105 def span_type(kind) case kind when OpenCensus::Trace::Span::SERVER 'server' when OpenCensus::Trace::Span::CLIENT 'client' else '' end end