opentelemetry-sdk 0.9.0 → 0.12.1
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 +4 -4
- data/CHANGELOG.md +28 -0
- data/LICENSE +1 -1
- data/lib/opentelemetry-sdk.rb +1 -1
- data/lib/opentelemetry/sdk.rb +12 -1
- data/lib/opentelemetry/sdk/baggage.rb +1 -1
- data/lib/opentelemetry/sdk/baggage/builder.rb +1 -1
- data/lib/opentelemetry/sdk/baggage/manager.rb +1 -1
- data/lib/opentelemetry/sdk/configurator.rb +9 -2
- data/lib/opentelemetry/sdk/instrumentation_library.rb +1 -1
- data/lib/opentelemetry/sdk/internal.rb +12 -2
- data/lib/opentelemetry/sdk/resources.rb +1 -1
- data/lib/opentelemetry/sdk/resources/constants.rb +1 -1
- data/lib/opentelemetry/sdk/resources/resource.rb +2 -2
- data/lib/opentelemetry/sdk/trace.rb +1 -1
- data/lib/opentelemetry/sdk/trace/config.rb +1 -1
- data/lib/opentelemetry/sdk/trace/config/trace_config.rb +23 -21
- data/lib/opentelemetry/sdk/trace/event.rb +1 -1
- data/lib/opentelemetry/sdk/trace/export.rb +2 -1
- data/lib/opentelemetry/sdk/trace/export/batch_span_processor.rb +35 -12
- data/lib/opentelemetry/sdk/trace/export/console_span_exporter.rb +1 -1
- data/lib/opentelemetry/sdk/trace/export/in_memory_span_exporter.rb +1 -1
- data/lib/opentelemetry/sdk/trace/export/metrics_reporter.rb +59 -0
- data/lib/opentelemetry/sdk/trace/export/multi_span_exporter.rb +1 -1
- data/lib/opentelemetry/sdk/trace/export/noop_span_exporter.rb +1 -1
- data/lib/opentelemetry/sdk/trace/export/simple_span_processor.rb +2 -2
- data/lib/opentelemetry/sdk/trace/multi_span_processor.rb +1 -1
- data/lib/opentelemetry/sdk/trace/noop_span_processor.rb +1 -1
- data/lib/opentelemetry/sdk/trace/samplers.rb +3 -10
- data/lib/opentelemetry/sdk/trace/samplers/constant_sampler.rb +12 -5
- data/lib/opentelemetry/sdk/trace/samplers/decision.rb +1 -1
- data/lib/opentelemetry/sdk/trace/samplers/parent_based.rb +12 -0
- data/lib/opentelemetry/sdk/trace/samplers/result.rb +14 -3
- data/lib/opentelemetry/sdk/trace/samplers/trace_id_ratio_based.rb +8 -5
- data/lib/opentelemetry/sdk/trace/span.rb +11 -6
- data/lib/opentelemetry/sdk/trace/span_data.rb +1 -1
- data/lib/opentelemetry/sdk/trace/tracer.rb +7 -7
- data/lib/opentelemetry/sdk/trace/tracer_provider.rb +3 -2
- data/lib/opentelemetry/sdk/version.rb +2 -2
- metadata +9 -8
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: '079e4ea0a93345e6e014c3f7760425e042544ae619cf5761cb08813dac99a728'
|
|
4
|
+
data.tar.gz: f36464e88c42bd56a60060854da46daa42b35b720619201ed30e8a038ea567c7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7305bdedc102299c04c3c0798d9137fc74919e4edd3eb37a4b239c739218274427b82f925d97cdcdebd192559033f025a6cad2f729f5d05c5856b6aa6e9e2170
|
|
7
|
+
data.tar.gz: efcd32dc9aa6c9e260b05829d790c294308e08bc7ca275647c33f54b03ac463a63da7962a9038917c6fe3571ae10dc61efaa09dfc17eb5bfae4ed040719a8c80
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
# Release History: opentelemetry-sdk
|
|
2
2
|
|
|
3
|
+
### v0.12.1 / 2021-01-13
|
|
4
|
+
|
|
5
|
+
* FIXED: Fix several BatchSpanProcessor errors related to fork safety
|
|
6
|
+
* FIXED: Define default value for traceid ratio
|
|
7
|
+
|
|
8
|
+
### v0.12.0 / 2020-12-24
|
|
9
|
+
|
|
10
|
+
* ADDED: Structured error handling
|
|
11
|
+
* ADDED: Pluggable ID generation
|
|
12
|
+
* FIXED: BSP dropped span buffer full reporting
|
|
13
|
+
* FIXED: Implement SDK environment variables
|
|
14
|
+
* FIXED: Remove incorrect TODO
|
|
15
|
+
|
|
16
|
+
### v0.11.1 / 2020-12-16
|
|
17
|
+
|
|
18
|
+
* FIXED: BSP dropped span buffer full reporting
|
|
19
|
+
|
|
20
|
+
### v0.11.0 / 2020-12-11
|
|
21
|
+
|
|
22
|
+
* ADDED: Metrics reporting from trace export
|
|
23
|
+
* FIXED: Copyright comments to not reference year
|
|
24
|
+
|
|
25
|
+
### v0.10.0 / 2020-12-03
|
|
26
|
+
|
|
27
|
+
* BREAKING CHANGE: Allow samplers to modify tracestate
|
|
28
|
+
|
|
29
|
+
* FIXED: Allow samplers to modify tracestate
|
|
30
|
+
|
|
3
31
|
### v0.9.0 / 2020-11-27
|
|
4
32
|
|
|
5
33
|
* BREAKING CHANGE: Pass full Context to samplers
|
data/LICENSE
CHANGED
|
@@ -186,7 +186,7 @@
|
|
|
186
186
|
same "printed page" as the copyright notice for easier
|
|
187
187
|
identification within third-party archives.
|
|
188
188
|
|
|
189
|
-
Copyright
|
|
189
|
+
Copyright The OpenTelemetry Authors
|
|
190
190
|
|
|
191
191
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
192
192
|
you may not use this file except in compliance with the License.
|
data/lib/opentelemetry-sdk.rb
CHANGED
data/lib/opentelemetry/sdk.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# Copyright
|
|
3
|
+
# Copyright The OpenTelemetry Authors
|
|
4
4
|
#
|
|
5
5
|
# SPDX-License-Identifier: Apache-2.0
|
|
6
6
|
|
|
@@ -18,6 +18,11 @@ module OpenTelemetry
|
|
|
18
18
|
module SDK
|
|
19
19
|
extend self
|
|
20
20
|
|
|
21
|
+
# ConfigurationError is an exception type used to wrap configuration errors
|
|
22
|
+
# passed to OpenTelemetry.error_handler. This can be used to distinguish
|
|
23
|
+
# errors reported during SDK configuration.
|
|
24
|
+
ConfigurationError = Class.new(OpenTelemetry::Error)
|
|
25
|
+
|
|
21
26
|
# Configures SDK and instrumentation
|
|
22
27
|
#
|
|
23
28
|
# @yieldparam [Configurator] configurator Yields a configurator to the
|
|
@@ -57,6 +62,12 @@ module OpenTelemetry
|
|
|
57
62
|
configurator = Configurator.new
|
|
58
63
|
yield configurator if block_given?
|
|
59
64
|
configurator.configure
|
|
65
|
+
rescue StandardError
|
|
66
|
+
begin
|
|
67
|
+
raise ConfigurationError
|
|
68
|
+
rescue ConfigurationError => e
|
|
69
|
+
OpenTelemetry.handle_error(exception: e, message: 'unexpected configuration error')
|
|
70
|
+
end
|
|
60
71
|
end
|
|
61
72
|
end
|
|
62
73
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# Copyright
|
|
3
|
+
# Copyright The OpenTelemetry Authors
|
|
4
4
|
#
|
|
5
5
|
# SPDX-License-Identifier: Apache-2.0
|
|
6
6
|
|
|
@@ -16,7 +16,7 @@ module OpenTelemetry
|
|
|
16
16
|
private_constant :USE_MODE_UNSPECIFIED, :USE_MODE_ONE, :USE_MODE_ALL
|
|
17
17
|
|
|
18
18
|
attr_writer :logger, :http_extractors, :http_injectors, :text_map_extractors,
|
|
19
|
-
:text_map_injectors
|
|
19
|
+
:text_map_injectors, :error_handler, :id_generator
|
|
20
20
|
|
|
21
21
|
def initialize
|
|
22
22
|
@instrumentation_names = []
|
|
@@ -28,12 +28,17 @@ module OpenTelemetry
|
|
|
28
28
|
@span_processors = []
|
|
29
29
|
@use_mode = USE_MODE_UNSPECIFIED
|
|
30
30
|
@resource = Resources::Resource.telemetry_sdk
|
|
31
|
+
@id_generator = OpenTelemetry::Trace
|
|
31
32
|
end
|
|
32
33
|
|
|
33
34
|
def logger
|
|
34
35
|
@logger ||= OpenTelemetry.logger
|
|
35
36
|
end
|
|
36
37
|
|
|
38
|
+
def error_handler
|
|
39
|
+
@error_handler ||= OpenTelemetry.error_handler
|
|
40
|
+
end
|
|
41
|
+
|
|
37
42
|
# Accepts a resource object that is merged with the default telemetry sdk
|
|
38
43
|
# resource. The use of this method is optional, and is provided as means
|
|
39
44
|
# to include additional resource information.
|
|
@@ -110,9 +115,11 @@ module OpenTelemetry
|
|
|
110
115
|
# - install instrumentation
|
|
111
116
|
def configure
|
|
112
117
|
OpenTelemetry.logger = logger
|
|
118
|
+
OpenTelemetry.error_handler = error_handler
|
|
113
119
|
OpenTelemetry.baggage = Baggage::Manager.new
|
|
114
120
|
configure_propagation
|
|
115
121
|
configure_span_processors
|
|
122
|
+
tracer_provider.id_generator = @id_generator
|
|
116
123
|
OpenTelemetry.tracer_provider = tracer_provider
|
|
117
124
|
install_instrumentation
|
|
118
125
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# Copyright
|
|
3
|
+
# Copyright The OpenTelemetry Authors
|
|
4
4
|
#
|
|
5
5
|
# SPDX-License-Identifier: Apache-2.0
|
|
6
6
|
|
|
@@ -45,7 +45,17 @@ module OpenTelemetry
|
|
|
45
45
|
end
|
|
46
46
|
|
|
47
47
|
def valid_attributes?(attrs)
|
|
48
|
-
attrs.nil? || attrs.all?
|
|
48
|
+
attrs.nil? || attrs.all? do |k, v|
|
|
49
|
+
if !valid_key?(k)
|
|
50
|
+
OpenTelemetry.handle_error(message: "invalid attribute key type #{v.class}")
|
|
51
|
+
false
|
|
52
|
+
elsif !valid_value?(v)
|
|
53
|
+
OpenTelemetry.handle_error(message: "invalid attribute value type #{v.class}")
|
|
54
|
+
false
|
|
55
|
+
else
|
|
56
|
+
true
|
|
57
|
+
end
|
|
58
|
+
end
|
|
49
59
|
end
|
|
50
60
|
end
|
|
51
61
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# Copyright
|
|
3
|
+
# Copyright The OpenTelemetry Authors
|
|
4
4
|
#
|
|
5
5
|
# SPDX-License-Identifier: Apache-2.0
|
|
6
6
|
|
|
@@ -22,7 +22,7 @@ module OpenTelemetry
|
|
|
22
22
|
def create(attributes = {})
|
|
23
23
|
frozen_attributes = attributes.each_with_object({}) do |(k, v), memo|
|
|
24
24
|
raise ArgumentError, 'attribute keys must be strings' unless k.is_a?(String)
|
|
25
|
-
raise ArgumentError, 'attribute values must be strings, integers, floats, or booleans' unless Internal.valid_value?(v)
|
|
25
|
+
raise ArgumentError, 'attribute values must be (array of) strings, integers, floats, or booleans' unless Internal.valid_value?(v)
|
|
26
26
|
|
|
27
27
|
memo[-k] = v.freeze
|
|
28
28
|
end.freeze
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# Copyright
|
|
3
|
+
# Copyright The OpenTelemetry Authors
|
|
4
4
|
#
|
|
5
5
|
# SPDX-License-Identifier: Apache-2.0
|
|
6
6
|
|
|
@@ -10,20 +10,6 @@ module OpenTelemetry
|
|
|
10
10
|
module Config
|
|
11
11
|
# Class that holds global trace parameters.
|
|
12
12
|
class TraceConfig
|
|
13
|
-
DEFAULT_SAMPLER = Samplers.parent_based(root: Samplers::ALWAYS_ON)
|
|
14
|
-
DEFAULT_MAX_ATTRIBUTES_COUNT = 32
|
|
15
|
-
DEFAULT_MAX_EVENTS_COUNT = 128
|
|
16
|
-
DEFAULT_MAX_LINKS_COUNT = 32
|
|
17
|
-
DEFAULT_MAX_ATTRIBUTES_PER_EVENT = 32
|
|
18
|
-
DEFAULT_MAX_ATTRIBUTES_PER_LINK = 32
|
|
19
|
-
|
|
20
|
-
private_constant(:DEFAULT_SAMPLER,
|
|
21
|
-
:DEFAULT_MAX_ATTRIBUTES_COUNT,
|
|
22
|
-
:DEFAULT_MAX_EVENTS_COUNT,
|
|
23
|
-
:DEFAULT_MAX_LINKS_COUNT,
|
|
24
|
-
:DEFAULT_MAX_ATTRIBUTES_PER_EVENT,
|
|
25
|
-
:DEFAULT_MAX_ATTRIBUTES_PER_LINK)
|
|
26
|
-
|
|
27
13
|
# The global default sampler (see {Samplers}).
|
|
28
14
|
attr_reader :sampler
|
|
29
15
|
|
|
@@ -46,12 +32,12 @@ module OpenTelemetry
|
|
|
46
32
|
#
|
|
47
33
|
# @return [TraceConfig] with the desired values.
|
|
48
34
|
# @raise [ArgumentError] if any of the max numbers are not positive.
|
|
49
|
-
def initialize(sampler:
|
|
50
|
-
max_attributes_count:
|
|
51
|
-
max_events_count:
|
|
52
|
-
max_links_count:
|
|
53
|
-
max_attributes_per_event:
|
|
54
|
-
max_attributes_per_link:
|
|
35
|
+
def initialize(sampler: sampler_from_environment(Samplers.parent_based(root: Samplers::ALWAYS_ON)),
|
|
36
|
+
max_attributes_count: Integer(ENV.fetch('OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT', 1000)),
|
|
37
|
+
max_events_count: Integer(ENV.fetch('OTEL_SPAN_EVENT_COUNT_LIMIT', 1000)),
|
|
38
|
+
max_links_count: Integer(ENV.fetch('OTEL_SPAN_LINK_COUNT_LIMIT', 1000)),
|
|
39
|
+
max_attributes_per_event: max_attributes_count,
|
|
40
|
+
max_attributes_per_link: max_attributes_count)
|
|
55
41
|
raise ArgumentError, 'max_attributes_count must be positive' unless max_attributes_count.positive?
|
|
56
42
|
raise ArgumentError, 'max_events_count must be positive' unless max_events_count.positive?
|
|
57
43
|
raise ArgumentError, 'max_links_count must be positive' unless max_links_count.positive?
|
|
@@ -67,6 +53,22 @@ module OpenTelemetry
|
|
|
67
53
|
end
|
|
68
54
|
|
|
69
55
|
# TODO: from_proto
|
|
56
|
+
private
|
|
57
|
+
|
|
58
|
+
def sampler_from_environment(default_sampler) # rubocop:disable Metrics/CyclomaticComplexity
|
|
59
|
+
case ENV['OTEL_TRACE_SAMPLER']
|
|
60
|
+
when 'always_on' then Samplers::ALWAYS_ON
|
|
61
|
+
when 'always_off' then Samplers::ALWAYS_OFF
|
|
62
|
+
when 'traceidratio' then Samplers.trace_id_ratio_based(Float(ENV.fetch('OTEL_TRACE_SAMPLER_ARG', 1.0)))
|
|
63
|
+
when 'parentbased_always_on' then Samplers.parent_based(root: Samplers::ALWAYS_ON)
|
|
64
|
+
when 'parentbased_always_off' then Samplers.parent_based(root: Samplers::ALWAYS_OFF)
|
|
65
|
+
when 'parentbased_traceidratio' then Samplers.parent_based(root: Samplers.trace_id_ratio_based(Float(ENV.fetch('OTEL_TRACE_SAMPLER_ARG', 1.0))))
|
|
66
|
+
else default_sampler
|
|
67
|
+
end
|
|
68
|
+
rescue StandardError => e
|
|
69
|
+
OpenTelemetry.handle_error(exception: e, message: "installing default sampler #{default_sampler.description}")
|
|
70
|
+
default_sampler
|
|
71
|
+
end
|
|
70
72
|
|
|
71
73
|
# The default {TraceConfig}.
|
|
72
74
|
DEFAULT = new
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# Copyright
|
|
3
|
+
# Copyright The OpenTelemetry Authors
|
|
4
4
|
#
|
|
5
5
|
# SPDX-License-Identifier: Apache-2.0
|
|
6
6
|
|
|
@@ -30,6 +30,7 @@ end
|
|
|
30
30
|
require 'opentelemetry/sdk/trace/export/batch_span_processor'
|
|
31
31
|
require 'opentelemetry/sdk/trace/export/console_span_exporter'
|
|
32
32
|
require 'opentelemetry/sdk/trace/export/in_memory_span_exporter'
|
|
33
|
+
require 'opentelemetry/sdk/trace/export/metrics_reporter'
|
|
33
34
|
require 'opentelemetry/sdk/trace/export/multi_span_exporter'
|
|
34
35
|
require 'opentelemetry/sdk/trace/export/noop_span_exporter'
|
|
35
36
|
require 'opentelemetry/sdk/trace/export/simple_span_processor'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# Copyright
|
|
3
|
+
# Copyright The OpenTelemetry Authors
|
|
4
4
|
#
|
|
5
5
|
# SPDX-License-Identifier: Apache-2.0
|
|
6
6
|
|
|
@@ -48,7 +48,8 @@ module OpenTelemetry
|
|
|
48
48
|
schedule_delay_millis: Float(ENV.fetch('OTEL_BSP_SCHEDULE_DELAY_MILLIS', 5_000)),
|
|
49
49
|
max_queue_size: Integer(ENV.fetch('OTEL_BSP_MAX_QUEUE_SIZE', 2048)),
|
|
50
50
|
max_export_batch_size: Integer(ENV.fetch('OTEL_BSP_MAX_EXPORT_BATCH_SIZE', 512)),
|
|
51
|
-
start_thread_on_boot: String(ENV['OTEL_RUBY_BSP_START_THREAD_ON_BOOT']) !~ /false/i
|
|
51
|
+
start_thread_on_boot: String(ENV['OTEL_RUBY_BSP_START_THREAD_ON_BOOT']) !~ /false/i,
|
|
52
|
+
metrics_reporter: nil)
|
|
52
53
|
raise ArgumentError if max_export_batch_size > max_queue_size
|
|
53
54
|
|
|
54
55
|
@exporter = exporter
|
|
@@ -60,6 +61,7 @@ module OpenTelemetry
|
|
|
60
61
|
@delay_seconds = schedule_delay_millis / 1000.0
|
|
61
62
|
@max_queue_size = max_queue_size
|
|
62
63
|
@batch_size = max_export_batch_size
|
|
64
|
+
@metrics_reporter = metrics_reporter || OpenTelemetry::SDK::Trace::Export::MetricsReporter
|
|
63
65
|
@spans = []
|
|
64
66
|
@pid = nil
|
|
65
67
|
@thread = nil
|
|
@@ -76,7 +78,10 @@ module OpenTelemetry
|
|
|
76
78
|
lock do
|
|
77
79
|
reset_on_fork
|
|
78
80
|
n = spans.size + 1 - max_queue_size
|
|
79
|
-
|
|
81
|
+
if n.positive?
|
|
82
|
+
spans.shift(n)
|
|
83
|
+
report_dropped_spans(n, reason: 'buffer-full')
|
|
84
|
+
end
|
|
80
85
|
spans << span
|
|
81
86
|
@condition.signal if spans.size > batch_size
|
|
82
87
|
end
|
|
@@ -93,10 +98,10 @@ module OpenTelemetry
|
|
|
93
98
|
# @param [optional Numeric] timeout An optional timeout in seconds.
|
|
94
99
|
# @return [Integer] SUCCESS if no error occurred, FAILURE if a
|
|
95
100
|
# non-specific failure occurred, TIMEOUT if a timeout occurred.
|
|
96
|
-
def force_flush(timeout: nil) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
|
101
|
+
def force_flush(timeout: nil) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity, Metrics/MethodLength
|
|
97
102
|
start_time = Time.now
|
|
98
103
|
snapshot = lock do
|
|
99
|
-
reset_on_fork
|
|
104
|
+
reset_on_fork if @keep_running
|
|
100
105
|
spans.shift(spans.size)
|
|
101
106
|
end
|
|
102
107
|
until snapshot.empty?
|
|
@@ -114,7 +119,10 @@ module OpenTelemetry
|
|
|
114
119
|
# the snapshot because they're older than any spans in the spans buffer.
|
|
115
120
|
lock do
|
|
116
121
|
n = spans.size + snapshot.size - max_queue_size
|
|
117
|
-
|
|
122
|
+
if n.positive?
|
|
123
|
+
snapshot.shift(n)
|
|
124
|
+
report_dropped_spans(n, reason: 'buffer-full')
|
|
125
|
+
end
|
|
118
126
|
spans.unshift(snapshot) unless snapshot.empty?
|
|
119
127
|
@condition.signal if spans.size > max_queue_size / 2
|
|
120
128
|
end
|
|
@@ -128,24 +136,26 @@ module OpenTelemetry
|
|
|
128
136
|
# non-specific failure occurred, TIMEOUT if a timeout occurred.
|
|
129
137
|
def shutdown(timeout: nil)
|
|
130
138
|
start_time = Time.now
|
|
131
|
-
lock do
|
|
139
|
+
thread = lock do
|
|
132
140
|
@keep_running = false
|
|
133
141
|
@condition.signal
|
|
142
|
+
@thread
|
|
134
143
|
end
|
|
135
144
|
|
|
136
|
-
|
|
145
|
+
thread&.join(timeout)
|
|
137
146
|
force_flush(timeout: OpenTelemetry::Common::Utilities.maybe_timeout(timeout, start_time))
|
|
138
147
|
@exporter.shutdown(timeout: OpenTelemetry::Common::Utilities.maybe_timeout(timeout, start_time))
|
|
148
|
+
dropped_spans = lock { spans.size }
|
|
149
|
+
report_dropped_spans(dropped_spans, reason: 'terminating') if dropped_spans.positive?
|
|
139
150
|
end
|
|
140
151
|
|
|
141
152
|
private
|
|
142
153
|
|
|
143
154
|
attr_reader :spans, :max_queue_size, :batch_size
|
|
144
155
|
|
|
145
|
-
def work
|
|
156
|
+
def work # rubocop:disable Metrics/AbcSize
|
|
146
157
|
loop do
|
|
147
158
|
batch = lock do
|
|
148
|
-
reset_on_fork(restart_thread: false)
|
|
149
159
|
@condition.wait(@mutex, @delay_seconds) if spans.size < batch_size && @keep_running
|
|
150
160
|
@condition.wait(@mutex, @delay_seconds) while spans.empty? && @keep_running
|
|
151
161
|
return unless @keep_running
|
|
@@ -153,6 +163,8 @@ module OpenTelemetry
|
|
|
153
163
|
fetch_batch
|
|
154
164
|
end
|
|
155
165
|
|
|
166
|
+
@metrics_reporter.observe_value('otel.bsp.buffer_utilization', value: spans.size / max_queue_size.to_f)
|
|
167
|
+
|
|
156
168
|
export_batch(batch)
|
|
157
169
|
end
|
|
158
170
|
end
|
|
@@ -163,7 +175,7 @@ module OpenTelemetry
|
|
|
163
175
|
|
|
164
176
|
@pid = pid
|
|
165
177
|
spans.clear
|
|
166
|
-
@thread = Thread.new { work }
|
|
178
|
+
@thread = restart_thread ? Thread.new { work } : nil
|
|
167
179
|
end
|
|
168
180
|
|
|
169
181
|
def export_batch(batch, timeout: @exporter_timeout_seconds)
|
|
@@ -173,7 +185,18 @@ module OpenTelemetry
|
|
|
173
185
|
end
|
|
174
186
|
|
|
175
187
|
def report_result(result_code, batch)
|
|
176
|
-
|
|
188
|
+
if result_code == SUCCESS
|
|
189
|
+
@metrics_reporter.add_to_counter('otel.bsp.export.success')
|
|
190
|
+
@metrics_reporter.add_to_counter('otel.bsp.exported_spans', increment: batch.size)
|
|
191
|
+
else
|
|
192
|
+
OpenTelemetry.handle_error(message: "Unable to export #{batch.size} spans")
|
|
193
|
+
@metrics_reporter.add_to_counter('otel.bsp.export.failure')
|
|
194
|
+
report_dropped_spans(batch.size, reason: 'export-failure')
|
|
195
|
+
end
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
def report_dropped_spans(count, reason:)
|
|
199
|
+
@metrics_reporter.add_to_counter('otel.bsp.dropped_spans', increment: count, labels: { 'reason' => reason })
|
|
177
200
|
end
|
|
178
201
|
|
|
179
202
|
def fetch_batch
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Copyright The OpenTelemetry Authors
|
|
4
|
+
#
|
|
5
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
6
|
+
|
|
7
|
+
module OpenTelemetry
|
|
8
|
+
module SDK
|
|
9
|
+
module Trace
|
|
10
|
+
module Export
|
|
11
|
+
# MetricsReporter defines an interface used for reporting metrics from
|
|
12
|
+
# span processors (like the BatchSpanProcessor) and exporters. It can
|
|
13
|
+
# be used to report metrics such as dropped spans, and successful and
|
|
14
|
+
# failed export attempts. This exists to decouple the Trace SDK from
|
|
15
|
+
# the unstable OpenTelemetry Metrics API. An example implementation in
|
|
16
|
+
# terms of StatsD is:
|
|
17
|
+
#
|
|
18
|
+
# module MetricsReporter
|
|
19
|
+
# def add_to_counter(metric, increment: 1, labels: {})
|
|
20
|
+
# StatsD.increment(metric, increment, labels, no_prefix: true)
|
|
21
|
+
# end
|
|
22
|
+
# def record_value(metric, value:, labels: {})
|
|
23
|
+
# StatsD.distribution(metric, value, labels, no_prefix: true)
|
|
24
|
+
# end
|
|
25
|
+
# def observe_value(metric, value:, labels: {})
|
|
26
|
+
# StatsD.gauge(metric, value, labels, no_prefix: true)
|
|
27
|
+
# end
|
|
28
|
+
# end
|
|
29
|
+
module MetricsReporter
|
|
30
|
+
extend self
|
|
31
|
+
|
|
32
|
+
# Adds an increment to a metric with the provided labels.
|
|
33
|
+
#
|
|
34
|
+
# @param [String] metric The metric name.
|
|
35
|
+
# @param [optional Numeric] increment An optional increment to report.
|
|
36
|
+
# @param [optional Hash<String, String>] labels Optional labels to
|
|
37
|
+
# associate with the metric.
|
|
38
|
+
def add_to_counter(metric, increment: 1, labels: {}); end
|
|
39
|
+
|
|
40
|
+
# Records a value for a metric with the provided labels.
|
|
41
|
+
#
|
|
42
|
+
# @param [String] metric The metric name.
|
|
43
|
+
# @param [Numeric] value The value to report.
|
|
44
|
+
# @param [optional Hash<String, String>] labels Optional labels to
|
|
45
|
+
# associate with the metric.
|
|
46
|
+
def record_value(metric, value:, labels: {}); end
|
|
47
|
+
|
|
48
|
+
# Observes a value for a metric with the provided labels.
|
|
49
|
+
#
|
|
50
|
+
# @param [String] metric The metric name.
|
|
51
|
+
# @param [Numeric] value The value to observe.
|
|
52
|
+
# @param [optional Hash<String, String>] labels Optional labels to
|
|
53
|
+
# associate with the metric.
|
|
54
|
+
def observe_value(metric, value:, labels: {}); end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# Copyright
|
|
3
|
+
# Copyright The OpenTelemetry Authors
|
|
4
4
|
#
|
|
5
5
|
# SPDX-License-Identifier: Apache-2.0
|
|
6
6
|
|
|
@@ -57,7 +57,7 @@ module OpenTelemetry
|
|
|
57
57
|
|
|
58
58
|
@span_exporter&.export([span.to_span_data])
|
|
59
59
|
rescue => e # rubocop:disable Style/RescueStandardError
|
|
60
|
-
OpenTelemetry.
|
|
60
|
+
OpenTelemetry.handle_error(exception: e, message: 'unexpected error in span.on_finish')
|
|
61
61
|
end
|
|
62
62
|
|
|
63
63
|
# Export all ended spans to the configured `Exporter` that have not yet
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# Copyright
|
|
3
|
+
# Copyright The OpenTelemetry Authors
|
|
4
4
|
#
|
|
5
5
|
# SPDX-License-Identifier: Apache-2.0
|
|
6
6
|
|
|
@@ -38,18 +38,11 @@ module OpenTelemetry
|
|
|
38
38
|
# to the {Span} to be created. Can be nil.
|
|
39
39
|
# @return [Result] The sampling result.
|
|
40
40
|
module Samplers
|
|
41
|
-
RECORD_AND_SAMPLE = Result.new(decision: Decision::RECORD_AND_SAMPLE)
|
|
42
|
-
DROP = Result.new(decision: Decision::DROP)
|
|
43
|
-
RECORD_ONLY = Result.new(decision: Decision::RECORD_ONLY)
|
|
44
|
-
SAMPLING_HINTS = [Decision::DROP, Decision::RECORD_ONLY, Decision::RECORD_AND_SAMPLE].freeze
|
|
45
|
-
|
|
46
|
-
private_constant(:RECORD_AND_SAMPLE, :DROP, :RECORD_ONLY, :SAMPLING_HINTS)
|
|
47
|
-
|
|
48
41
|
# Returns a {Result} with {Decision::RECORD_AND_SAMPLE}.
|
|
49
|
-
ALWAYS_ON = ConstantSampler.new(
|
|
42
|
+
ALWAYS_ON = ConstantSampler.new(decision: Decision::RECORD_AND_SAMPLE, description: 'AlwaysOnSampler')
|
|
50
43
|
|
|
51
44
|
# Returns a {Result} with {Decision::DROP}.
|
|
52
|
-
ALWAYS_OFF = ConstantSampler.new(
|
|
45
|
+
ALWAYS_OFF = ConstantSampler.new(decision: Decision::DROP, description: 'AlwaysOffSampler')
|
|
53
46
|
|
|
54
47
|
# Returns a new sampler. It delegates to samplers according to the following rules:
|
|
55
48
|
#
|
|
@@ -10,22 +10,29 @@ module OpenTelemetry
|
|
|
10
10
|
module Samplers
|
|
11
11
|
# @api private
|
|
12
12
|
#
|
|
13
|
-
# Implements a sampler returning a constant
|
|
13
|
+
# Implements a sampler returning a result with a constant decision.
|
|
14
14
|
class ConstantSampler
|
|
15
15
|
attr_reader :description
|
|
16
16
|
|
|
17
|
-
def initialize(
|
|
18
|
-
@
|
|
17
|
+
def initialize(decision:, description:)
|
|
18
|
+
@decision = decision
|
|
19
19
|
@description = description
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
+
def ==(other)
|
|
23
|
+
@decision == other.decision && @description == other.description
|
|
24
|
+
end
|
|
25
|
+
|
|
22
26
|
# @api private
|
|
23
27
|
#
|
|
24
28
|
# See {Samplers}.
|
|
25
29
|
def should_sample?(trace_id:, parent_context:, links:, name:, kind:, attributes:)
|
|
26
|
-
|
|
27
|
-
@result
|
|
30
|
+
Result.new(decision: @decision, tracestate: OpenTelemetry::Trace.current_span(parent_context).context.tracestate)
|
|
28
31
|
end
|
|
32
|
+
|
|
33
|
+
protected
|
|
34
|
+
|
|
35
|
+
attr_reader :decision
|
|
29
36
|
end
|
|
30
37
|
end
|
|
31
38
|
end
|
|
@@ -26,6 +26,14 @@ module OpenTelemetry
|
|
|
26
26
|
@local_parent_not_sampled = local_parent_not_sampled
|
|
27
27
|
end
|
|
28
28
|
|
|
29
|
+
def ==(other)
|
|
30
|
+
@root == other.root &&
|
|
31
|
+
@remote_parent_sampled == other.remote_parent_sampled &&
|
|
32
|
+
@remote_parent_not_sampled == other.remote_parent_not_sampled &&
|
|
33
|
+
@local_parent_sampled == other.local_parent_sampled &&
|
|
34
|
+
@local_parent_not_sampled == other.local_parent_not_sampled
|
|
35
|
+
end
|
|
36
|
+
|
|
29
37
|
# @api private
|
|
30
38
|
#
|
|
31
39
|
# See {Samplers}.
|
|
@@ -47,6 +55,10 @@ module OpenTelemetry
|
|
|
47
55
|
end
|
|
48
56
|
delegate.should_sample?(trace_id: trace_id, parent_context: parent_context, links: links, name: name, kind: kind, attributes: attributes)
|
|
49
57
|
end
|
|
58
|
+
|
|
59
|
+
protected
|
|
60
|
+
|
|
61
|
+
attr_reader :root, :remote_parent_sampled, :remote_parent_not_sampled, :local_parent_sampled, :local_parent_not_sampled
|
|
50
62
|
end
|
|
51
63
|
end
|
|
52
64
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# Copyright
|
|
3
|
+
# Copyright The OpenTelemetry Authors
|
|
4
4
|
#
|
|
5
5
|
# SPDX-License-Identifier: Apache-2.0
|
|
6
6
|
|
|
@@ -17,11 +17,16 @@ module OpenTelemetry
|
|
|
17
17
|
DECISIONS = [Decision::RECORD_ONLY, Decision::DROP, Decision::RECORD_AND_SAMPLE].freeze
|
|
18
18
|
private_constant(:EMPTY_HASH, :DECISIONS)
|
|
19
19
|
|
|
20
|
-
# Returns a frozen hash of attributes to be attached span.
|
|
20
|
+
# Returns a frozen hash of attributes to be attached to the span.
|
|
21
21
|
#
|
|
22
22
|
# @return [Hash{String => String, Numeric, Boolean, Array<String, Numeric, Boolean>}]
|
|
23
23
|
attr_reader :attributes
|
|
24
24
|
|
|
25
|
+
# Returns a Tracestate to be associated with the span.
|
|
26
|
+
#
|
|
27
|
+
# @return [Tracestate]
|
|
28
|
+
attr_reader :tracestate
|
|
29
|
+
|
|
25
30
|
# Returns a new sampling result with the specified decision and
|
|
26
31
|
# attributes.
|
|
27
32
|
#
|
|
@@ -30,9 +35,15 @@ module OpenTelemetry
|
|
|
30
35
|
# @param [optional Hash{String => String, Numeric, Boolean, Array<String, Numeric, Boolean>}]
|
|
31
36
|
# attributes A frozen or freezable hash containing attributes to be
|
|
32
37
|
# attached to the span.
|
|
33
|
-
|
|
38
|
+
# @param [Tracestate] tracestate A Tracestate that will be associated
|
|
39
|
+
# with the Span through the new SpanContext. If the sampler returns
|
|
40
|
+
# an empty Tracestate here, the Tracestate will be cleared, so
|
|
41
|
+
# samplers SHOULD normally return the passed-in Tracestate if they
|
|
42
|
+
# do not intend to change it.
|
|
43
|
+
def initialize(decision:, attributes: nil, tracestate:)
|
|
34
44
|
@decision = decision
|
|
35
45
|
@attributes = attributes.freeze || EMPTY_HASH
|
|
46
|
+
@tracestate = tracestate
|
|
36
47
|
end
|
|
37
48
|
|
|
38
49
|
# Returns true if this span should be sampled.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# Copyright
|
|
3
|
+
# Copyright The OpenTelemetry Authors
|
|
4
4
|
#
|
|
5
5
|
# SPDX-License-Identifier: Apache-2.0
|
|
6
6
|
|
|
@@ -20,16 +20,19 @@ module OpenTelemetry
|
|
|
20
20
|
@description = format('TraceIdRatioBased{%.6f}', probability)
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
+
def ==(other)
|
|
24
|
+
@description == other.description
|
|
25
|
+
end
|
|
26
|
+
|
|
23
27
|
# @api private
|
|
24
28
|
#
|
|
25
29
|
# See {Samplers}.
|
|
26
30
|
def should_sample?(trace_id:, parent_context:, links:, name:, kind:, attributes:)
|
|
27
|
-
|
|
28
|
-
|
|
31
|
+
tracestate = OpenTelemetry::Trace.current_span(parent_context).context.tracestate
|
|
29
32
|
if sample?(trace_id)
|
|
30
|
-
RECORD_AND_SAMPLE
|
|
33
|
+
Result.new(decision: Decision::RECORD_AND_SAMPLE, tracestate: tracestate)
|
|
31
34
|
else
|
|
32
|
-
DROP
|
|
35
|
+
Result.new(decision: Decision::DROP, tracestate: tracestate)
|
|
33
36
|
end
|
|
34
37
|
end
|
|
35
38
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# Copyright
|
|
3
|
+
# Copyright The OpenTelemetry Authors
|
|
4
4
|
#
|
|
5
5
|
# SPDX-License-Identifier: Apache-2.0
|
|
6
6
|
|
|
@@ -199,7 +199,7 @@ module OpenTelemetry
|
|
|
199
199
|
return self
|
|
200
200
|
end
|
|
201
201
|
@end_timestamp = end_timestamp || Time.now
|
|
202
|
-
@attributes.freeze
|
|
202
|
+
@attributes = validated_attributes(@attributes).freeze
|
|
203
203
|
@events.freeze
|
|
204
204
|
@ended = true
|
|
205
205
|
end
|
|
@@ -269,12 +269,16 @@ module OpenTelemetry
|
|
|
269
269
|
|
|
270
270
|
private
|
|
271
271
|
|
|
272
|
+
def validated_attributes(attrs)
|
|
273
|
+
return attrs if Internal.valid_attributes?(attrs)
|
|
274
|
+
|
|
275
|
+
attrs.keep_if { |key, value| Internal.valid_key?(key) && Internal.valid_value?(value) }
|
|
276
|
+
end
|
|
277
|
+
|
|
272
278
|
def trim_span_attributes(attrs)
|
|
273
279
|
return if attrs.nil?
|
|
274
280
|
|
|
275
281
|
excess = attrs.size - @trace_config.max_attributes_count
|
|
276
|
-
# TODO: with Ruby 2.5, replace with the more efficient
|
|
277
|
-
# attrs.shift(excess) if excess.positive?
|
|
278
282
|
excess.times { attrs.shift } if excess.positive?
|
|
279
283
|
nil
|
|
280
284
|
end
|
|
@@ -301,11 +305,12 @@ module OpenTelemetry
|
|
|
301
305
|
def append_event(events, event) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
|
302
306
|
max_events_count = @trace_config.max_events_count
|
|
303
307
|
max_attributes_per_event = @trace_config.max_attributes_per_event
|
|
308
|
+
valid_attributes = Internal.valid_attributes?(event.attributes)
|
|
304
309
|
|
|
305
310
|
# Fast path (likely) common case.
|
|
306
311
|
if events.size < max_events_count &&
|
|
307
312
|
event.attributes.size <= max_attributes_per_event &&
|
|
308
|
-
|
|
313
|
+
valid_attributes
|
|
309
314
|
return events << event
|
|
310
315
|
end
|
|
311
316
|
|
|
@@ -314,7 +319,7 @@ module OpenTelemetry
|
|
|
314
319
|
events.shift(excess) if excess.positive?
|
|
315
320
|
|
|
316
321
|
excess = event.attributes.size - max_attributes_per_event
|
|
317
|
-
if excess.positive? || !
|
|
322
|
+
if excess.positive? || !valid_attributes
|
|
318
323
|
attrs = Hash[event.attributes] # event.attributes is frozen, so we need an unfrozen copy to adjust.
|
|
319
324
|
attrs.keep_if { |key, value| Internal.valid_key?(key) && Internal.valid_value?(value) }
|
|
320
325
|
excess = attrs.size - max_attributes_per_event
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# Copyright
|
|
3
|
+
# Copyright The OpenTelemetry Authors
|
|
4
4
|
#
|
|
5
5
|
# SPDX-License-Identifier: Apache-2.0
|
|
6
6
|
|
|
@@ -40,21 +40,21 @@ module OpenTelemetry
|
|
|
40
40
|
parent_span_context = OpenTelemetry::Trace.current_span(with_parent).context
|
|
41
41
|
if parent_span_context.valid?
|
|
42
42
|
parent_span_id = parent_span_context.span_id
|
|
43
|
-
tracestate = parent_span_context.tracestate
|
|
44
43
|
trace_id = parent_span_context.trace_id
|
|
45
44
|
end
|
|
46
|
-
trace_id ||=
|
|
45
|
+
trace_id ||= tracer_provider.id_generator.generate_trace_id
|
|
47
46
|
sampler = tracer_provider.active_trace_config.sampler
|
|
48
47
|
result = sampler.should_sample?(trace_id: trace_id, parent_context: with_parent, links: links, name: name, kind: kind, attributes: attributes)
|
|
49
|
-
internal_create_span(result, name, kind, trace_id, parent_span_id, attributes, links, start_timestamp,
|
|
48
|
+
internal_create_span(result, name, kind, trace_id, parent_span_id, attributes, links, start_timestamp, with_parent)
|
|
50
49
|
end
|
|
51
50
|
|
|
52
51
|
private
|
|
53
52
|
|
|
54
|
-
def internal_create_span(result, name, kind, trace_id, parent_span_id, attributes, links, start_timestamp,
|
|
53
|
+
def internal_create_span(result, name, kind, trace_id, parent_span_id, attributes, links, start_timestamp, parent_context) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
|
54
|
+
span_id = tracer_provider.id_generator.generate_span_id
|
|
55
55
|
if result.recording? && !tracer_provider.stopped?
|
|
56
56
|
trace_flags = result.sampled? ? OpenTelemetry::Trace::TraceFlags::SAMPLED : OpenTelemetry::Trace::TraceFlags::DEFAULT
|
|
57
|
-
context = OpenTelemetry::Trace::SpanContext.new(trace_id: trace_id, trace_flags: trace_flags, tracestate: tracestate)
|
|
57
|
+
context = OpenTelemetry::Trace::SpanContext.new(trace_id: trace_id, span_id: span_id, trace_flags: trace_flags, tracestate: result.tracestate)
|
|
58
58
|
attributes = attributes&.merge(result.attributes) || result.attributes
|
|
59
59
|
Span.new(
|
|
60
60
|
context,
|
|
@@ -71,7 +71,7 @@ module OpenTelemetry
|
|
|
71
71
|
@instrumentation_library
|
|
72
72
|
)
|
|
73
73
|
else
|
|
74
|
-
OpenTelemetry::Trace::Span.new(span_context: OpenTelemetry::Trace::SpanContext.new(trace_id: trace_id))
|
|
74
|
+
OpenTelemetry::Trace::Span.new(span_context: OpenTelemetry::Trace::SpanContext.new(trace_id: trace_id, span_id: span_id, tracestate: result.tracestate))
|
|
75
75
|
end
|
|
76
76
|
end
|
|
77
77
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# Copyright
|
|
3
|
+
# Copyright The OpenTelemetry Authors
|
|
4
4
|
#
|
|
5
5
|
# SPDX-License-Identifier: Apache-2.0
|
|
6
6
|
|
|
@@ -12,7 +12,7 @@ module OpenTelemetry
|
|
|
12
12
|
Key = Struct.new(:name, :version)
|
|
13
13
|
private_constant(:Key)
|
|
14
14
|
|
|
15
|
-
attr_accessor :active_trace_config
|
|
15
|
+
attr_accessor :active_trace_config, :id_generator
|
|
16
16
|
attr_reader :active_span_processor, :stopped, :resource
|
|
17
17
|
alias stopped? stopped
|
|
18
18
|
|
|
@@ -24,6 +24,7 @@ module OpenTelemetry
|
|
|
24
24
|
@registry = {}
|
|
25
25
|
@active_span_processor = NoopSpanProcessor.instance
|
|
26
26
|
@active_trace_config = Config::TraceConfig::DEFAULT
|
|
27
|
+
@id_generator = OpenTelemetry::Trace
|
|
27
28
|
@registered_span_processors = []
|
|
28
29
|
@stopped = false
|
|
29
30
|
@resource = resource
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# Copyright
|
|
3
|
+
# Copyright The OpenTelemetry Authors
|
|
4
4
|
#
|
|
5
5
|
# SPDX-License-Identifier: Apache-2.0
|
|
6
6
|
|
|
7
7
|
module OpenTelemetry
|
|
8
8
|
module SDK
|
|
9
9
|
## Current OpenTelemetry version
|
|
10
|
-
VERSION = '0.
|
|
10
|
+
VERSION = '0.12.1'
|
|
11
11
|
end
|
|
12
12
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: opentelemetry-sdk
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.12.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- OpenTelemetry Authors
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2021-01-13 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: opentelemetry-api
|
|
@@ -16,28 +16,28 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: 0.
|
|
19
|
+
version: 0.12.0
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: 0.
|
|
26
|
+
version: 0.12.0
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: opentelemetry-common
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
31
|
- - "~>"
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: 0.
|
|
33
|
+
version: 0.12.0
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
38
|
- - "~>"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: 0.
|
|
40
|
+
version: 0.12.0
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: bundler
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -180,6 +180,7 @@ files:
|
|
|
180
180
|
- lib/opentelemetry/sdk/trace/export/batch_span_processor.rb
|
|
181
181
|
- lib/opentelemetry/sdk/trace/export/console_span_exporter.rb
|
|
182
182
|
- lib/opentelemetry/sdk/trace/export/in_memory_span_exporter.rb
|
|
183
|
+
- lib/opentelemetry/sdk/trace/export/metrics_reporter.rb
|
|
183
184
|
- lib/opentelemetry/sdk/trace/export/multi_span_exporter.rb
|
|
184
185
|
- lib/opentelemetry/sdk/trace/export/noop_span_exporter.rb
|
|
185
186
|
- lib/opentelemetry/sdk/trace/export/simple_span_processor.rb
|
|
@@ -200,10 +201,10 @@ homepage: https://github.com/open-telemetry/opentelemetry-ruby
|
|
|
200
201
|
licenses:
|
|
201
202
|
- Apache-2.0
|
|
202
203
|
metadata:
|
|
203
|
-
changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-sdk/v0.
|
|
204
|
+
changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-sdk/v0.12.1/file.CHANGELOG.html
|
|
204
205
|
source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby/tree/master/sdk
|
|
205
206
|
bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby/issues
|
|
206
|
-
documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-sdk/v0.
|
|
207
|
+
documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-sdk/v0.12.1
|
|
207
208
|
post_install_message:
|
|
208
209
|
rdoc_options: []
|
|
209
210
|
require_paths:
|