Module: OpenTelemetry::Exporter::Jaeger::Encoder Private
This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.
Instance Method Summary collapse
- #encoded_instrumentation_scope(instrumentation_scope) ⇒ Object private
- #encoded_kind(kind) ⇒ Object private
- #encoded_logs(events) ⇒ Object private
- #encoded_process(resource) ⇒ Object private
- #encoded_references(links) ⇒ Object private
-
#encoded_span(span_data) ⇒ Object
private
rubocop:disable Metrics/MethodLength, Metrics/CyclomaticComplexity.
- #encoded_status(status) ⇒ Object private
- #encoded_tag(key, value) ⇒ Object private
- #encoded_tags(attributes) ⇒ Object private
- #int64(byte_string) ⇒ Object private
Instance Method Details
#encoded_instrumentation_scope(instrumentation_scope) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 |
# File 'lib/opentelemetry/exporter/jaeger/encoder.rb', line 144 def encoded_instrumentation_scope(instrumentation_scope) return EMPTY_ARRAY unless instrumentation_scope = [] if instrumentation_scope.name << encoded_tag('otel.scope.name', instrumentation_scope.name) << encoded_tag('otel.library.name', instrumentation_scope.name) end if instrumentation_scope.version << encoded_tag('otel.scope.version', instrumentation_scope.version) << encoded_tag('otel.library.version', instrumentation_scope.version) end end |
#encoded_kind(kind) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/opentelemetry/exporter/jaeger/encoder.rb', line 99 def encoded_kind(kind) value = KIND_MAP[kind] return EMPTY_ARRAY unless value Array( Thrift::Tag.new( KEY => 'span.kind', TYPE => Thrift::TagType::STRING, STRING => value ) ) end |
#encoded_logs(events) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
112 113 114 115 116 117 118 119 |
# File 'lib/opentelemetry/exporter/jaeger/encoder.rb', line 112 def encoded_logs(events) events&.map do |event| Thrift::Log.new( 'timestamp' => event. / 1_000, 'fields' => (event.attributes) + ('name' => event.name) ) end end |
#encoded_process(resource) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
36 37 38 39 40 41 42 43 44 |
# File 'lib/opentelemetry/exporter/jaeger/encoder.rb', line 36 def encoded_process(resource) service_name = DEFAULT_SERVICE_NAME = resource&.attribute_enumerator&.select do |key, value| service_name = value if key == 'service.name' key != 'service.name' end = () Thrift::Process.new('serviceName' => service_name, 'tags' => ) end |
#encoded_references(links) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
121 122 123 124 125 126 127 128 129 130 |
# File 'lib/opentelemetry/exporter/jaeger/encoder.rb', line 121 def encoded_references(links) links&.map do |link| Thrift::SpanRef.new( 'refType' => Thrift::SpanRefType::FOLLOWS_FROM, 'traceIdLow' => int64(link.span_context.trace_id[8, 8]), 'traceIdHigh' => int64(link.span_context.trace_id[0, 8]), 'spanId' => int64(link.span_context.span_id) ) end end |
#encoded_span(span_data) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
rubocop:disable Metrics/MethodLength, Metrics/CyclomaticComplexity
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/opentelemetry/exporter/jaeger/encoder.rb', line 67 def encoded_span(span_data) # rubocop:disable Metrics/MethodLength, Metrics/CyclomaticComplexity start_time = span_data. / 1_000 duration = span_data. / 1_000 - start_time = (span_data.attributes) + encoded_status(span_data.status) + encoded_kind(span_data.kind) + encoded_instrumentation_scope(span_data.instrumentation_scope) dropped_attributes_count = span_data.total_recorded_attributes - span_data.attributes&.size.to_i dropped_events_count = span_data.total_recorded_events - span_data.events&.size.to_i dropped_links_count = span_data.total_recorded_links - span_data.links&.size.to_i << encoded_tag('otel.dropped_attributes_count', dropped_attributes_count) if dropped_attributes_count.positive? << encoded_tag('otel.dropped_events_count', dropped_events_count) if dropped_events_count.positive? << encoded_tag('otel.dropped_links_count', dropped_links_count) if dropped_links_count.positive? Thrift::Span.new( 'traceIdLow' => int64(span_data.trace_id[8, 8]), 'traceIdHigh' => int64(span_data.trace_id[0, 8]), 'spanId' => int64(span_data.span_id), 'parentSpanId' => int64(span_data.parent_span_id), 'operationName' => span_data.name, 'references' => encoded_references(span_data.links), 'flags' => span_data.trace_flags.sampled? ? 1 : 0, 'startTime' => start_time, 'duration' => duration, 'tags' => , 'logs' => encoded_logs(span_data.events) ) end |
#encoded_status(status) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
132 133 134 135 136 137 138 139 140 141 142 |
# File 'lib/opentelemetry/exporter/jaeger/encoder.rb', line 132 def encoded_status(status) return EMPTY_ARRAY unless status&.code == OpenTelemetry::Trace::Status::ERROR Array( Thrift::Tag.new( KEY => 'error', TYPE => Thrift::TagType::BOOL, BOOL => true ) ) end |
#encoded_tag(key, value) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/opentelemetry/exporter/jaeger/encoder.rb', line 52 def encoded_tag(key, value) value_key = case value when Integer then LONG when Float then DOUBLE when String, Array then STRING when false, true then BOOL end value = value.to_json if value.is_a?(Array) Thrift::Tag.new( KEY => key, TYPE => TYPE_MAP[value_key], value_key => value ) end |
#encoded_tags(attributes) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
46 47 48 49 50 |
# File 'lib/opentelemetry/exporter/jaeger/encoder.rb', line 46 def (attributes) attributes&.map do |key, value| encoded_tag(key, value) end || EMPTY_ARRAY end |
#int64(byte_string) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
161 162 163 164 |
# File 'lib/opentelemetry/exporter/jaeger/encoder.rb', line 161 def int64(byte_string) int = byte_string.unpack1('Q>') int < (1 << 63) ? int : int - (1 << 64) end |