uptrace 1.0.0.rc1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5f9a4d977dcec234cd8810306f108488708ca23a30ce0836d71d52e5f759033b
4
- data.tar.gz: 305152b04753b7febe844a76ff675f192f5d0f939f179b77dfb73a4fd21d71fe
3
+ metadata.gz: 6666340ea7b7556a09c06a41878efdd58bb10b4d05cdc711654189e01eec4011
4
+ data.tar.gz: 78c26e6a6f6e59e2ac01fd14a872a5c9c164e72431238d5c8d79322201fd1a20
5
5
  SHA512:
6
- metadata.gz: c0593e88e857717b329f4f4d21278efddd605412e3ab63d617eccb3547bbabacaf98ff3f7c68630b90215eff7712cc824c7579e2c5edb78617931b3004b1930b
7
- data.tar.gz: d8c976e2e80dbaa0eb323c8c71ee919cac0b53331bec52483b34e0e393dece72914ef21810d4d5c677a1ee8bc8902a6f210d2c814366a9afe940f456ee9fa5c9
6
+ metadata.gz: b3780a0f3fa9841f4883618f0a7b28f1ec86e046e0f99c90ab6a5ffc0bd7a6c3e2ab3a004c2c3f7f848a62afbea5c9d699ecb07105f4f398c4594c6ce52099bf
7
+ data.tar.gz: '08270a500502c272d6eda9f96eab25909ea26a834e070ba8d6c4cb7ab7ccfee428d2094c63a353402c1a720b03d11fe7a3f95dad8e09171ad879df96eb2e3466'
data/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## v1.0.1 - 2021-11-08
4
+
5
+ - Updated OpenTelemetry to
6
+ [v1.0.1](https://github.com/open-telemetry/opentelemetry-ruby/blob/main/sdk/CHANGELOG.md#v101--2021-10-29).
7
+
8
+ ## v1.0.0 - 2021-10-06
9
+
10
+ - Updated OpenTelemetry to
11
+ [v1.0.0](https://github.com/open-telemetry/opentelemetry-ruby/blob/main/api/CHANGELOG.md#v100--2021-09-29).
12
+
13
+ ## v1.0.0.rc3 - 2021-08-17
14
+
15
+ - Updated OpenTelemetry to
16
+ [v1.0.0.rc3](https://github.com/open-telemetry/opentelemetry-ruby/blob/main/api/CHANGELOG.md#v100rc3--2021-08-12).
17
+ - Switched to using OTLP protocol.
18
+
3
19
  ## v1.0.0.rc1 - 2021-05-22
4
20
 
5
21
  - Updated OpenTelemetry to
data/README.md CHANGED
@@ -1,16 +1,16 @@
1
1
  # Uptrace Ruby exporter for OpenTelemetry
2
2
 
3
3
  ![build workflow](https://github.com/uptrace/uptrace-ruby/actions/workflows/build.yml/badge.svg)
4
- [![Documentation](https://img.shields.io/badge/uptrace-documentation-informational)](https://docs.uptrace.dev/ruby/)
4
+ [![Documentation](https://img.shields.io/badge/uptrace-documentation-informational)](https://docs.uptrace.dev/guide/ruby.html)
5
5
 
6
- <a href="https://docs.uptrace.dev/ruby/">
6
+ <a href="https://docs.uptrace.dev/guide/ruby.html">
7
7
  <img src="https://docs.uptrace.dev/devicon/ruby-original.svg" height="200px" />
8
8
  </a>
9
9
 
10
10
  ## Introduction
11
11
 
12
12
  uptrace-ruby is an OpenTelemery distribution configured to export
13
- [traces](https://docs.uptrace.dev/tracing/#spans) to Uptrace.
13
+ [traces](https://opentelemetry.uptrace.dev/guide/distributed-tracing.html) to Uptrace.
14
14
 
15
15
  ## Quickstart
16
16
 
@@ -30,33 +30,38 @@ require 'rubygems'
30
30
  require 'bundler/setup'
31
31
  require 'uptrace'
32
32
 
33
- OpenTelemetry::SDK.configure do |c|
33
+ # Configure OpenTelemetry with sensible defaults.
34
+ # Copy your project DSN here or use UPTRACE_DSN env var.
35
+ Uptrace.configure_opentelemetry(dsn: '') do |c|
36
+ # c is OpenTelemetry::SDK::Configurator
34
37
  c.service_name = 'myservice'
35
38
  c.service_version = '1.0.0'
36
-
37
- # Configure OpenTelemetry to export data to Uptrace.
38
- # Copy your project DSN here or use UPTRACE_DSN env var.
39
- Uptrace.configure_opentelemetry(c, dsn: '')
40
39
  end
41
40
 
41
+ # Create a tracer. Usually, tracer is a global variable.
42
42
  tracer = OpenTelemetry.tracer_provider.tracer('my_app_or_gem', '0.1.0')
43
43
 
44
- tracer.in_span('main') do |span|
45
- tracer.in_span('child1') do |child1|
44
+ # Create a root span (a trace) to measure some operation.
45
+ tracer.in_span('main-operation') do |main|
46
+ tracer.in_span('child1-of-main') do |child1|
46
47
  child1.set_attribute('key1', 'value1')
47
48
  child1.record_exception(ArgumentError.new('error1'))
48
49
  end
49
50
 
50
- tracer.in_span('child2') do |child2|
51
+ tracer.in_span('child2-of-main') do |child2|
51
52
  child2.set_attribute('key2', '24')
52
53
  child2.set_attribute('key3', 123.456)
53
54
  end
54
55
 
55
- puts("trace URL: #{Uptrace.trace_url(span)}")
56
+ puts("trace URL: #{Uptrace.trace_url(main)}")
56
57
  end
57
58
 
58
- # Send buffered spans.
59
+ # Send buffered spans and free resources.
59
60
  OpenTelemetry.tracer_provider.shutdown
60
61
  ```
61
62
 
62
- Please see [uptrace-ruby documentation](https://docs.uptrace.dev/ruby/) for more details.
63
+ ## Links
64
+
65
+ - [Examples](example)
66
+ - [Documentation](https://docs.uptrace.dev/guide/ruby.html)
67
+ - [Instrumentations](https://opentelemetry.uptrace.dev/instrumentations.html?lang=ruby)
@@ -5,6 +5,8 @@ require 'opentelemetry/sdk'
5
5
  module Uptrace
6
6
  # Uptrace client that configures OpenTelemetry SDK to use Uptrace exporter.
7
7
  class Client
8
+ attr_reader :dsn
9
+
8
10
  # @param [string] dsn
9
11
  def initialize(dsn: '')
10
12
  dsn = ENV.fetch('UPTRACE_DSN', '') if dsn.empty?
@@ -27,21 +29,8 @@ module Uptrace
27
29
  # @return [String]
28
30
  def trace_url(span = nil)
29
31
  span = OpenTelemetry::Trace.current_span if span.nil?
30
-
31
- host = @dsn.host.delete_prefix('api.')
32
32
  trace_id = span.context.hex_trace_id
33
- "#{@dsn.scheme}://#{host}/search/#{@dsn.project_id}?q=#{trace_id}"
34
- end
35
-
36
- # @return [OpenTelemetry::SDK::Trace::Export::BatchSpanProcessor]
37
- def span_processor
38
- exp = Uptrace::Trace::Exporter.new(@dsn)
39
- OpenTelemetry::SDK::Trace::Export::BatchSpanProcessor.new(
40
- exp,
41
- max_queue_size: 1000,
42
- max_export_batch_size: 1000,
43
- schedule_delay: 5_000
44
- )
33
+ "#{@dsn.app_addr}/traces/#{trace_id}"
45
34
  end
46
35
  end
47
36
  end
data/lib/uptrace/dsn.rb CHANGED
@@ -3,9 +3,7 @@
3
3
  module Uptrace
4
4
  # Uptrace DSN
5
5
  class DSN
6
- KEYS = %w[scheme host project_id token].freeze
7
-
8
- attr_reader :dsn, :port, *KEYS
6
+ attr_reader :dsn, :scheme, :host, :port, :project_id, :token
9
7
 
10
8
  def initialize(dsn)
11
9
  raise ArgumentError, "DSN can't be empty" if dsn.empty?
@@ -17,13 +15,21 @@ module Uptrace
17
15
  end
18
16
 
19
17
  @dsn = dsn
20
- @project_id = uri.path.delete_prefix('/')
21
- @token = uri.user
18
+ @scheme = uri.scheme
22
19
  @host = uri.host
23
20
  @port = uri.port
24
- @scheme = uri.scheme
21
+ @project_id = uri.path.delete_prefix('/')
22
+ @token = uri.user
23
+
24
+ %w[scheme host].each do |k|
25
+ v = public_send(k)
26
+ raise ArgumentError, %(DSN=#{dsn.inspect} does not have a #{k}) if v.nil? || v.empty?
27
+ end
28
+
29
+ @host = 'uptrace.dev' if @host == 'api.uptrace.dev'
30
+ return if @host != 'uptrace.dev'
25
31
 
26
- KEYS.each do |k|
32
+ %w[project_id token].each do |k|
27
33
  v = public_send(k)
28
34
  raise ArgumentError, %(DSN=#{dsn.inspect} does not have a #{k}) if v.nil? || v.empty?
29
35
  end
@@ -32,5 +38,17 @@ module Uptrace
32
38
  def to_s
33
39
  @dsn
34
40
  end
41
+
42
+ def app_addr
43
+ return 'https://app.uptrace.dev' if @host == 'uptrace.dev'
44
+
45
+ "#{@scheme}://#{@host}:#{@port}"
46
+ end
47
+
48
+ def otlp_addr
49
+ return 'https://otlp.uptrace.dev' if @host == 'uptrace.dev'
50
+
51
+ "#{@scheme}://#{@host}:#{@port}"
52
+ end
35
53
  end
36
54
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Uptrace
4
- VERSION = '1.0.0.rc1'
4
+ VERSION = '1.0.2'
5
5
  end
data/lib/uptrace.rb CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  require 'logger'
4
4
 
5
+ require 'opentelemetry/exporter/otlp'
6
+
5
7
  # Uptrace provides Uptrace exporters for OpenTelemetry.
6
8
  module Uptrace
7
9
  extend self
@@ -19,7 +21,7 @@ module Uptrace
19
21
  # @param [optional OpenTelemetry::Trace::Span] span
20
22
  # @return [String]
21
23
  def trace_url(span = nil)
22
- client.trace_url(span)
24
+ @client.trace_url(span)
23
25
  end
24
26
 
25
27
  # ConfigureOpentelemetry configures OpenTelemetry to export data to Uptrace.
@@ -31,14 +33,30 @@ module Uptrace
31
33
  def configure_opentelemetry(dsn: '')
32
34
  OpenTelemetry::SDK.configure do |c|
33
35
  @client = Client.new(dsn: dsn) unless dsn.empty?
34
- c.add_span_processor(client.span_processor) unless client.disabled?
36
+ c.add_span_processor(span_processor(@client.dsn)) unless client.disabled?
35
37
 
36
38
  yield c if block_given?
37
39
  end
38
40
  end
41
+
42
+ private
43
+
44
+ def span_processor(dsn)
45
+ exporter = OpenTelemetry::Exporter::OTLP::Exporter.new(
46
+ endpoint: "#{dsn.otlp_addr}/v1/traces",
47
+ # Set the Uptrace DSN here or use UPTRACE_DSN env var.
48
+ headers: { 'uptrace-dsn': dsn.to_s },
49
+ compression: 'gzip'
50
+ )
51
+ OpenTelemetry::SDK::Trace::Export::BatchSpanProcessor.new(
52
+ exporter,
53
+ max_queue_size: 1000,
54
+ max_export_batch_size: 1000,
55
+ schedule_delay: 5_000
56
+ )
57
+ end
39
58
  end
40
59
 
41
60
  require 'uptrace/version'
42
61
  require 'uptrace/dsn'
43
62
  require 'uptrace/client'
44
- require 'uptrace/trace'
metadata CHANGED
@@ -1,71 +1,63 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: uptrace
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.rc1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Uptrace Authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-05-22 00:00:00.000000000 Z
11
+ date: 2021-12-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: msgpack
14
+ name: opentelemetry-exporter-otlp
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: 1.4.2
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
17
+ - - ">="
25
18
  - !ruby/object:Gem::Version
26
- version: 1.4.2
27
- - !ruby/object:Gem::Dependency
28
- name: opentelemetry-sdk
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
19
+ version: 0.20.5
20
+ - - "<"
32
21
  - !ruby/object:Gem::Version
33
- version: 1.0.0.rc1
22
+ version: 0.22.0
34
23
  type: :runtime
35
24
  prerelease: false
36
25
  version_requirements: !ruby/object:Gem::Requirement
37
26
  requirements:
38
- - - "~>"
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 0.20.5
30
+ - - "<"
39
31
  - !ruby/object:Gem::Version
40
- version: 1.0.0.rc1
32
+ version: 0.22.0
41
33
  - !ruby/object:Gem::Dependency
42
- name: zstd-ruby
34
+ name: opentelemetry-sdk
43
35
  requirement: !ruby/object:Gem::Requirement
44
36
  requirements:
45
37
  - - "~>"
46
38
  - !ruby/object:Gem::Version
47
- version: 1.4.9.0
39
+ version: 1.0.2
48
40
  type: :runtime
49
41
  prerelease: false
50
42
  version_requirements: !ruby/object:Gem::Requirement
51
43
  requirements:
52
44
  - - "~>"
53
45
  - !ruby/object:Gem::Version
54
- version: 1.4.9.0
46
+ version: 1.0.2
55
47
  - !ruby/object:Gem::Dependency
56
48
  name: bundler
57
49
  requirement: !ruby/object:Gem::Requirement
58
50
  requirements:
59
51
  - - "~>"
60
52
  - !ruby/object:Gem::Version
61
- version: 2.1.4
53
+ version: '2.2'
62
54
  type: :development
63
55
  prerelease: false
64
56
  version_requirements: !ruby/object:Gem::Requirement
65
57
  requirements:
66
58
  - - "~>"
67
59
  - !ruby/object:Gem::Version
68
- version: 2.1.4
60
+ version: '2.2'
69
61
  - !ruby/object:Gem::Dependency
70
62
  name: minitest
71
63
  requirement: !ruby/object:Gem::Requirement
@@ -86,56 +78,56 @@ dependencies:
86
78
  requirements:
87
79
  - - "~>"
88
80
  - !ruby/object:Gem::Version
89
- version: '12.0'
81
+ version: '13.0'
90
82
  type: :development
91
83
  prerelease: false
92
84
  version_requirements: !ruby/object:Gem::Requirement
93
85
  requirements:
94
86
  - - "~>"
95
87
  - !ruby/object:Gem::Version
96
- version: '12.0'
88
+ version: '13.0'
97
89
  - !ruby/object:Gem::Dependency
98
90
  name: rubocop
99
91
  requirement: !ruby/object:Gem::Requirement
100
92
  requirements:
101
93
  - - "~>"
102
94
  - !ruby/object:Gem::Version
103
- version: 1.10.0
95
+ version: 1.23.0
104
96
  type: :development
105
97
  prerelease: false
106
98
  version_requirements: !ruby/object:Gem::Requirement
107
99
  requirements:
108
100
  - - "~>"
109
101
  - !ruby/object:Gem::Version
110
- version: 1.10.0
102
+ version: 1.23.0
111
103
  - !ruby/object:Gem::Dependency
112
104
  name: rubocop-minitest
113
105
  requirement: !ruby/object:Gem::Requirement
114
106
  requirements:
115
107
  - - "~>"
116
108
  - !ruby/object:Gem::Version
117
- version: 0.10.2
109
+ version: 0.17.0
118
110
  type: :development
119
111
  prerelease: false
120
112
  version_requirements: !ruby/object:Gem::Requirement
121
113
  requirements:
122
114
  - - "~>"
123
115
  - !ruby/object:Gem::Version
124
- version: 0.10.2
116
+ version: 0.17.0
125
117
  - !ruby/object:Gem::Dependency
126
118
  name: rubocop-rake
127
119
  requirement: !ruby/object:Gem::Requirement
128
120
  requirements:
129
121
  - - "~>"
130
122
  - !ruby/object:Gem::Version
131
- version: 0.5.1
123
+ version: 0.6.0
132
124
  type: :development
133
125
  prerelease: false
134
126
  version_requirements: !ruby/object:Gem::Requirement
135
127
  requirements:
136
128
  - - "~>"
137
129
  - !ruby/object:Gem::Version
138
- version: 0.5.1
130
+ version: 0.6.0
139
131
  - !ruby/object:Gem::Dependency
140
132
  name: yard
141
133
  requirement: !ruby/object:Gem::Requirement
@@ -179,14 +171,12 @@ files:
179
171
  - lib/uptrace.rb
180
172
  - lib/uptrace/client.rb
181
173
  - lib/uptrace/dsn.rb
182
- - lib/uptrace/metric.rb
183
- - lib/uptrace/trace.rb
184
- - lib/uptrace/trace/exporter.rb
185
174
  - lib/uptrace/version.rb
186
175
  homepage: https://github.com/uptrace/uptrace-ruby
187
176
  licenses:
188
177
  - BSD-2-Clause
189
- metadata: {}
178
+ metadata:
179
+ rubygems_mfa_required: 'true'
190
180
  post_install_message:
191
181
  rdoc_options: []
192
182
  require_paths:
@@ -198,9 +188,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
198
188
  version: 2.5.0
199
189
  required_rubygems_version: !ruby/object:Gem::Requirement
200
190
  requirements:
201
- - - ">"
191
+ - - ">="
202
192
  - !ruby/object:Gem::Version
203
- version: 1.3.1
193
+ version: '0'
204
194
  requirements: []
205
195
  rubygems_version: 3.1.4
206
196
  signing_key:
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Uptrace
4
- # Metric module provides metric exporter for OpenTelemetry.
5
- module Metric
6
- end
7
- end
@@ -1,224 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'uri'
4
- require 'net/http'
5
- require 'json'
6
-
7
- require 'opentelemetry/sdk'
8
- require 'msgpack'
9
- require 'zstd-ruby'
10
-
11
- module Uptrace
12
- module Trace
13
- # Exporter is a span exporter for OpenTelemetry.
14
- class Exporter
15
- SUCCESS = OpenTelemetry::SDK::Trace::Export::SUCCESS
16
- FAILURE = OpenTelemetry::SDK::Trace::Export::FAILURE
17
- TIMEOUT = OpenTelemetry::SDK::Trace::Export::TIMEOUT
18
- private_constant(:SUCCESS, :FAILURE, :TIMEOUT)
19
-
20
- ##
21
- # @param [Config] cfg
22
- #
23
- def initialize(dsn)
24
- @dsn = dsn
25
- @endpoint = "/api/v1/tracing/#{@dsn.project_id}/spans"
26
-
27
- @http = Net::HTTP.new(@dsn.host, 443)
28
- @http.use_ssl = true
29
- @http.open_timeout = 5
30
- @http.read_timeout = 5
31
- @http.keep_alive_timeout = 30
32
- end
33
-
34
- # Called to export sampled {OpenTelemetry::SDK::Trace::SpanData} structs.
35
- #
36
- # @param [Enumerable<OpenTelemetry::SDK::Trace::SpanData>] spans the
37
- # list of recorded {OpenTelemetry::SDK::Trace::SpanData} structs to be
38
- # exported.
39
- # @param [optional Numeric] timeout An optional timeout in seconds.
40
- # @return [Integer] the result of the export.
41
- def export(spans, timeout: nil)
42
- return SUCCESS if @disabled
43
- return FAILURE if @shutdown
44
-
45
- out = []
46
-
47
- spans.each do |span|
48
- out.push(uptrace_span(span))
49
- end
50
-
51
- send({ spans: out }, timeout: timeout)
52
- end
53
-
54
- # Called when {OpenTelemetry::SDK::Trace::TracerProvider#force_flush} is called, if
55
- # this exporter is registered to a {OpenTelemetry::SDK::Trace::TracerProvider}
56
- # object.
57
- #
58
- # @param [optional Numeric] timeout An optional timeout in seconds.
59
- def force_flush(timeout: nil) # rubocop:disable Lint/UnusedMethodArgument
60
- SUCCESS
61
- end
62
-
63
- # Called when {OpenTelemetry::SDK::Trace::Tracer#shutdown} is called, if
64
- # this exporter is registered to a {OpenTelemetry::SDK::Trace::Tracer}
65
- # object.
66
- #
67
- # @param [optional Numeric] timeout An optional timeout in seconds.
68
- def shutdown(timeout: nil) # rubocop:disable Lint/UnusedMethodArgument
69
- @shutdown = true
70
- @http.finish if @http.started?
71
- SUCCESS
72
- end
73
-
74
- private
75
-
76
- ##
77
- # @return [hash]
78
- #
79
- def uptrace_span(span)
80
- out = {
81
- id: span.span_id.unpack1('Q'),
82
- traceId: span.trace_id,
83
-
84
- name: span.name,
85
- kind: kind_as_str(span.kind),
86
- startTime: span.start_timestamp,
87
- endTime: span.end_timestamp,
88
-
89
- resource: uptrace_resource(span.resource),
90
- attrs: span.attributes
91
- }
92
-
93
- out[:parentId] = span.parent_span_id.unpack1('Q') if span.parent_span_id
94
-
95
- out[:events] = uptrace_events(span.events) unless span.events.nil?
96
- out[:links] = uptrace_links(span.links) unless span.links.nil?
97
-
98
- status = span.status
99
- out[:statusCode] = status_code_as_str(status.code)
100
- out[:statusMessage] = status.description unless status.description.empty?
101
-
102
- il = span.instrumentation_library
103
- out[:tracerName] = il.name
104
- out[:tracerVersion] = il.name unless il.version.empty?
105
-
106
- out
107
- end
108
-
109
- def send(data, timeout: nil) # rubocop:disable Lint/UnusedMethodArgument
110
- req = build_request(data)
111
-
112
- begin
113
- resp = @http.request(req)
114
- rescue Net::OpenTimeout, Net::ReadTimeout
115
- return FAILURE
116
- end
117
-
118
- case resp
119
- when Net::HTTPOK
120
- resp.body # Read and discard body
121
- SUCCESS
122
- when Net::HTTPBadRequest
123
- data = JSON.parse(resp.body)
124
- Uptrace.logger.error("status=#{data['status']}: #{data['message']}")
125
- FAILURE
126
- when Net::HTTPInternalServerError
127
- resp.body
128
- FAILURE
129
- else
130
- @http.finish
131
- FAILURE
132
- end
133
- end
134
-
135
- ##
136
- # @param [Hash] data
137
- # @return [Net::HTTP::Post]
138
- #
139
- def build_request(data)
140
- data = MessagePack.pack(data)
141
- data = Zstd.compress(data, 3)
142
-
143
- req = Net::HTTP::Post.new(@endpoint)
144
- req.add_field('Authorization', "Bearer #{@dsn.token}")
145
- req.add_field('Content-Type', 'application/msgpack')
146
- req.add_field('Content-Encoding', 'zstd')
147
- req.add_field('Connection', 'keep-alive')
148
- req.body = data
149
-
150
- req
151
- end
152
-
153
- # @param [SpanKind] kind
154
- # @return [String]
155
- def kind_as_str(kind)
156
- case kind
157
- when OpenTelemetry::Trace::SpanKind::SERVER
158
- 'server'
159
- when OpenTelemetry::Trace::SpanKind::CLIENT
160
- 'client'
161
- when OpenTelemetry::Trace::SpanKind::PRODUCER
162
- 'producer'
163
- when OpenTelemetry::Trace::SpanKind::CONSUMER
164
- 'consumer'
165
- else
166
- 'internal'
167
- end
168
- end
169
-
170
- ##
171
- # @param [Integer] code
172
- # @return [String]
173
- #
174
- def status_code_as_str(code)
175
- case code
176
- when OpenTelemetry::Trace::Status::OK
177
- 'ok'
178
- when OpenTelemetry::Trace::Status::ERROR
179
- 'error'
180
- else
181
- 'unset'
182
- end
183
- end
184
-
185
- ##
186
- # @param [OpenTelemetry::SDK::Resources::Resource] resource
187
- # @return [Hash]
188
- #
189
- def uptrace_resource(resource)
190
- out = {}
191
- resource.attribute_enumerator.map { |key, value| out[key] = value }
192
- out
193
- end
194
-
195
- def uptrace_events(events)
196
- out = []
197
- events.each do |event|
198
- out.push(
199
- {
200
- name: event.name,
201
- attrs: event.attributes,
202
- time: event.timestamp
203
- }
204
- )
205
- end
206
- out
207
- end
208
-
209
- def uptrace_links(links)
210
- out = []
211
- links.each do |link|
212
- out.push(
213
- {
214
- trace_id => link.span_context.trace_id,
215
- span_id => link.span_context.span_id.unpack1('Q'),
216
- attrs => link.attributes
217
- }
218
- )
219
- end
220
- out
221
- end
222
- end
223
- end
224
- end
data/lib/uptrace/trace.rb DELETED
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Uptrace
4
- # Trace module provides trace exporter for OpenTelemetry.
5
- module Trace
6
- end
7
- end
8
-
9
- require 'uptrace/trace/exporter'