opentelemetry-sdk 0.16.0 → 1.0.0.rc3
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 +133 -61
- data/README.md +25 -2
- data/lib/opentelemetry/sdk.rb +5 -3
- data/lib/opentelemetry/sdk/configurator.rb +54 -43
- data/lib/opentelemetry/sdk/forwarding_logger.rb +69 -0
- data/lib/opentelemetry/sdk/internal.rb +3 -3
- data/lib/opentelemetry/sdk/resources.rb +0 -1
- data/lib/opentelemetry/sdk/resources/resource.rb +16 -9
- data/lib/opentelemetry/sdk/trace.rb +2 -3
- data/lib/opentelemetry/sdk/trace/event.rb +7 -36
- data/lib/opentelemetry/sdk/trace/export.rb +3 -2
- data/lib/opentelemetry/sdk/trace/export/batch_span_processor.rb +4 -3
- data/lib/opentelemetry/sdk/trace/export/in_memory_span_exporter.rb +13 -4
- data/lib/opentelemetry/sdk/trace/export/simple_span_processor.rb +2 -0
- data/lib/opentelemetry/sdk/trace/export/{noop_span_exporter.rb → span_exporter.rb} +8 -7
- data/lib/opentelemetry/sdk/trace/span.rb +55 -39
- data/lib/opentelemetry/sdk/trace/span_data.rb +25 -18
- data/lib/opentelemetry/sdk/trace/span_limits.rb +60 -0
- data/lib/opentelemetry/sdk/trace/{noop_span_processor.rb → span_processor.rb} +5 -8
- data/lib/opentelemetry/sdk/trace/tracer.rb +1 -37
- data/lib/opentelemetry/sdk/trace/tracer_provider.rb +89 -19
- data/lib/opentelemetry/sdk/version.rb +1 -1
- metadata +74 -24
- data/lib/opentelemetry/sdk/baggage.rb +0 -16
- data/lib/opentelemetry/sdk/baggage/builder.rb +0 -40
- data/lib/opentelemetry/sdk/baggage/manager.rb +0 -97
- data/lib/opentelemetry/sdk/resources/constants.rb +0 -205
- data/lib/opentelemetry/sdk/trace/config.rb +0 -18
- data/lib/opentelemetry/sdk/trace/config/trace_config.rb +0 -79
- data/lib/opentelemetry/sdk/trace/export/multi_span_exporter.rb +0 -76
- data/lib/opentelemetry/sdk/trace/multi_span_processor.rb +0 -86
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 17f7b73252b2a5e788e9e47e25d7ade10d5694481c2486751aa95f993ea61496
|
4
|
+
data.tar.gz: 1c9774adc9d2ae03b82e62d5c403cce431c8d3b301233985c88c286b93155666
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e586c8e065502a1651577c3389868a056b3f1146bd08567a721264367e7391b8af257c30401ec99333e63c18b8cb0f8ea9526ac5f24aeded17918e53600fe5a6
|
7
|
+
data.tar.gz: b5473a3c7be5039721c883bbbdb834db9ee1821d15e69287cf6a690a607dbc2ee99c267741260368315abdf4adc5a0ae3724351e2897d5119615fae56bf42a14
|
data/CHANGELOG.md
CHANGED
@@ -1,113 +1,185 @@
|
|
1
1
|
# Release History: opentelemetry-sdk
|
2
2
|
|
3
|
+
### v1.0.0.rc3 / 2021-08-12
|
4
|
+
|
5
|
+
* BREAKING CHANGE: Remove optional parent_context from in_span
|
6
|
+
* BREAKING CHANGE: Replace Time.now with Process.clock_gettime
|
7
|
+
* BREAKING CHANGE: Refactor Baggage to remove Noop*
|
8
|
+
* BREAKING CHANGE: Remove unnecessary readers from SDK Tracer
|
9
|
+
* BREAKING CHANGE: Total order constraint on span.status=
|
10
|
+
* BREAKING CHANGE: Use auto-generated resource constants in sdk and resource_detectors
|
11
|
+
* BREAKING CHANGE: Span limits env vars
|
12
|
+
|
13
|
+
* ADDED: Add Tracer.non_recording_span to API
|
14
|
+
* ADDED: Add unnamed tracer warning message
|
15
|
+
* ADDED: Allow disabling of install messages
|
16
|
+
* ADDED: Make API's NoopTextMapPropagator private
|
17
|
+
* ADDED: Use auto-generated resource constants in sdk and resource_detectors
|
18
|
+
* ADDED: Allow selecting multiple exporter
|
19
|
+
* ADDED: Add explicit BSP export error
|
20
|
+
* FIXED: Remove optional parent_context from in_span
|
21
|
+
* FIXED: Replace Time.now with Process.clock_gettime
|
22
|
+
* FIXED: Rename cloud.zone to cloud.availability_zone
|
23
|
+
* FIXED: Improve attribute error messages
|
24
|
+
* FIXED: Refactor Baggage to remove Noop*
|
25
|
+
* FIXED: Support OTEL_SERVICE_NAME env var
|
26
|
+
* FIXED: Remove unnecessary readers from SDK Tracer
|
27
|
+
* FIXED: Total order constraint on span.status=
|
28
|
+
* FIXED: Flakey tracer provider test
|
29
|
+
* FIXED: Split lock in TracerProvider
|
30
|
+
* FIXED: Span limits env vars
|
31
|
+
* FIXED: Prune invalid links
|
32
|
+
* DOCS: Update docs to rely more on environment variable configuration
|
33
|
+
|
34
|
+
### v1.0.0.rc2 / 2021-06-23
|
35
|
+
|
36
|
+
* BREAKING CHANGE: Remove optional parent_context from in_span [729](https://github.com/open-telemetry/opentelemetry-ruby/pull/729)
|
37
|
+
* BREAKING CHANGE: Replace Time.now with Process.clock_gettime [717](https://github.com/open-telemetry/opentelemetry-ruby/pull/717)
|
38
|
+
* BREAKING CHANGE: Refactor Baggage to remove Noop* [800](https://github.com/open-telemetry/opentelemetry-ruby/pull/800)
|
39
|
+
* BREAKING CHANGE: Remove unnecessary readers from SDK Tracer [820](https://github.com/open-telemetry/opentelemetry-ruby/pull/820)
|
40
|
+
- Tracer no longer surfaces attribute readers for the name, version, or tracer_provider
|
41
|
+
* BREAKING CHANGE: Total order constraint on span.status= [805](https://github.com/open-telemetry/opentelemetry-ruby/pull/805)
|
42
|
+
|
43
|
+
* ADDED: Add Tracer.non_recording_span to API [799](https://github.com/open-telemetry/opentelemetry-ruby/pull/799)
|
44
|
+
* ADDED: Add unnamed tracer warning message [830](https://github.com/open-telemetry/opentelemetry-ruby/pull/830)
|
45
|
+
* ADDED: Allow disabling of install messages [831](https://github.com/open-telemetry/opentelemetry-ruby/pull/831)
|
46
|
+
* FIXED: Rename cloud.zone to cloud.availability_zone [734](https://github.com/open-telemetry/opentelemetry-ruby/pull/734)
|
47
|
+
* FIXED: Improve attribute error messages [742](https://github.com/open-telemetry/opentelemetry-ruby/pull/742)
|
48
|
+
* FIXED: Support OTEL_SERVICE_NAME env var [806]https://github.com/open-telemetry/opentelemetry-ruby/pull/806
|
49
|
+
* FIXED: Flakey tracer provider test
|
50
|
+
|
51
|
+
### v1.0.0.rc1 / 2021-05-21
|
52
|
+
|
53
|
+
* BREAKING CHANGE: Remove optional parent_context from in_span
|
54
|
+
* BREAKING CHANGE: Replace Time.now with Process.clock_gettime
|
55
|
+
|
56
|
+
* FIXED: Remove optional parent_context from in_span
|
57
|
+
* FIXED: Replace Time.now with Process.clock_gettime
|
58
|
+
* FIXED: Rename cloud.zone to cloud.availability_zone
|
59
|
+
* FIXED: Improve attribute error messages
|
60
|
+
|
61
|
+
### v0.17.0 / 2021-04-22
|
62
|
+
|
63
|
+
* BREAKING CHANGE: Replace TextMapInjector/TextMapExtractor pairs with a TextMapPropagator.
|
64
|
+
|
65
|
+
[Check the propagator documentation](https://open-telemetry.github.io/opentelemetry-ruby/) for the new usage.
|
66
|
+
|
67
|
+
* ADDED: Add zipkin exporter
|
68
|
+
* ADDED: Processors validate exporters on init.
|
69
|
+
* ADDED: Add configurable truncation of span and event attribute values
|
70
|
+
* ADDED: Add simple 'recording' attr_accessor to InMemorySpanExporter
|
71
|
+
* FIXED: Typo in error message
|
72
|
+
* FIXED: Improve configuration error reporting
|
73
|
+
* FIXED: Refactor propagators to add #fields
|
74
|
+
|
3
75
|
### v0.16.0 / 2021-03-17
|
4
76
|
|
5
|
-
* BREAKING CHANGE: Update SDK BaggageManager to match API
|
6
|
-
* BREAKING CHANGE: Implement Exporter#force_flush
|
77
|
+
* BREAKING CHANGE: Update SDK BaggageManager to match API
|
78
|
+
* BREAKING CHANGE: Implement Exporter#force_flush
|
7
79
|
|
8
|
-
* ADDED: Add force_flush to SDK's TracerProvider
|
9
|
-
* ADDED: Add k8s node to gcp resource detector
|
10
|
-
* ADDED: Add console option for OTEL_TRACES_EXPORTER
|
11
|
-
* ADDED: Span#add_attributes
|
12
|
-
* ADDED: Implement Exporter#force_flush
|
13
|
-
* FIXED: Update SDK BaggageManager to match API
|
14
|
-
* DOCS: Replace Gitter with GitHub Discussions
|
80
|
+
* ADDED: Add force_flush to SDK's TracerProvider
|
81
|
+
* ADDED: Add k8s node to gcp resource detector
|
82
|
+
* ADDED: Add console option for OTEL_TRACES_EXPORTER
|
83
|
+
* ADDED: Span#add_attributes
|
84
|
+
* ADDED: Implement Exporter#force_flush
|
85
|
+
* FIXED: Update SDK BaggageManager to match API
|
86
|
+
* DOCS: Replace Gitter with GitHub Discussions
|
15
87
|
|
16
88
|
### v0.15.0 / 2021-02-18
|
17
89
|
|
18
|
-
* BREAKING CHANGE: Streamline processor pipeline
|
90
|
+
* BREAKING CHANGE: Streamline processor pipeline
|
19
91
|
|
20
|
-
* ADDED: Add instrumentation config validation
|
21
|
-
* FIXED: Streamline processor pipeline
|
22
|
-
* FIXED: OTEL_TRACE -> OTEL_TRACES env vars
|
23
|
-
* FIXED: Change limits from 1000 to 128
|
24
|
-
* FIXED: OTEL_TRACES_EXPORTER and OTEL_PROPAGATORS
|
25
|
-
* FIXED: Add thread error handling to the BSP
|
26
|
-
* DOCS: Clarify nil attribute values not allowed
|
92
|
+
* ADDED: Add instrumentation config validation
|
93
|
+
* FIXED: Streamline processor pipeline
|
94
|
+
* FIXED: OTEL_TRACE -> OTEL_TRACES env vars
|
95
|
+
* FIXED: Change limits from 1000 to 128
|
96
|
+
* FIXED: OTEL_TRACES_EXPORTER and OTEL_PROPAGATORS
|
97
|
+
* FIXED: Add thread error handling to the BSP
|
98
|
+
* DOCS: Clarify nil attribute values not allowed
|
27
99
|
|
28
100
|
### v0.14.0 / 2021-02-03
|
29
101
|
|
30
|
-
* BREAKING CHANGE: Replace getter and setter callables and remove rack specific propagators
|
102
|
+
* BREAKING CHANGE: Replace getter and setter callables and remove rack specific propagators
|
31
103
|
|
32
|
-
* ADDED: Replace getter and setter callables and remove rack specific propagators
|
104
|
+
* ADDED: Replace getter and setter callables and remove rack specific propagators
|
33
105
|
|
34
106
|
### v0.13.1 / 2021-02-01
|
35
107
|
|
36
|
-
* FIXED: Leaky test
|
37
|
-
* FIXED: Allow env var override of service.name
|
108
|
+
* FIXED: Leaky test
|
109
|
+
* FIXED: Allow env var override of service.name
|
38
110
|
|
39
111
|
### v0.13.0 / 2021-01-29
|
40
112
|
|
41
|
-
* BREAKING CHANGE: Remove MILLIS from BatchSpanProcessor vars
|
113
|
+
* BREAKING CHANGE: Remove MILLIS from BatchSpanProcessor vars
|
42
114
|
|
43
|
-
* ADDED: Process.runtime resource
|
44
|
-
* ADDED: Provide default resource in SDK
|
45
|
-
* ADDED: Add optional attributes to record_exception
|
46
|
-
* FIXED: Resource.merge consistency
|
47
|
-
* FIXED: Remove MILLIS from BatchSpanProcessor vars
|
115
|
+
* ADDED: Process.runtime resource
|
116
|
+
* ADDED: Provide default resource in SDK
|
117
|
+
* ADDED: Add optional attributes to record_exception
|
118
|
+
* FIXED: Resource.merge consistency
|
119
|
+
* FIXED: Remove MILLIS from BatchSpanProcessor vars
|
48
120
|
|
49
121
|
### v0.12.1 / 2021-01-13
|
50
122
|
|
51
|
-
* FIXED: Fix several BatchSpanProcessor errors related to fork safety
|
52
|
-
* FIXED: Define default value for traceid ratio
|
123
|
+
* FIXED: Fix several BatchSpanProcessor errors related to fork safety
|
124
|
+
* FIXED: Define default value for traceid ratio
|
53
125
|
|
54
126
|
### v0.12.0 / 2020-12-24
|
55
127
|
|
56
|
-
* ADDED: Structured error handling
|
57
|
-
* ADDED: Pluggable ID generation
|
58
|
-
* FIXED: BSP dropped span buffer full reporting
|
59
|
-
* FIXED: Implement SDK environment variables
|
60
|
-
* FIXED: Remove incorrect TODO
|
128
|
+
* ADDED: Structured error handling
|
129
|
+
* ADDED: Pluggable ID generation
|
130
|
+
* FIXED: BSP dropped span buffer full reporting
|
131
|
+
* FIXED: Implement SDK environment variables
|
132
|
+
* FIXED: Remove incorrect TODO
|
61
133
|
|
62
134
|
### v0.11.1 / 2020-12-16
|
63
135
|
|
64
|
-
* FIXED: BSP dropped span buffer full reporting
|
136
|
+
* FIXED: BSP dropped span buffer full reporting
|
65
137
|
|
66
138
|
### v0.11.0 / 2020-12-11
|
67
139
|
|
68
|
-
* ADDED: Metrics reporting from trace export
|
69
|
-
* FIXED: Copyright comments to not reference year
|
140
|
+
* ADDED: Metrics reporting from trace export
|
141
|
+
* FIXED: Copyright comments to not reference year
|
70
142
|
|
71
143
|
### v0.10.0 / 2020-12-03
|
72
144
|
|
73
|
-
* BREAKING CHANGE: Allow samplers to modify tracestate
|
145
|
+
* BREAKING CHANGE: Allow samplers to modify tracestate
|
74
146
|
|
75
|
-
* FIXED: Allow samplers to modify tracestate
|
147
|
+
* FIXED: Allow samplers to modify tracestate
|
76
148
|
|
77
149
|
### v0.9.0 / 2020-11-27
|
78
150
|
|
79
|
-
* BREAKING CHANGE: Pass full Context to samplers
|
80
|
-
* BREAKING CHANGE: Add timeout for force_flush and shutdown
|
151
|
+
* BREAKING CHANGE: Pass full Context to samplers
|
152
|
+
* BREAKING CHANGE: Add timeout for force_flush and shutdown
|
81
153
|
|
82
|
-
* ADDED: Add OTEL_RUBY_BSP_START_THREAD_ON_BOOT env var
|
83
|
-
* ADDED: Add timeout for force_flush and shutdown
|
84
|
-
* FIXED: Signal at batch_size
|
85
|
-
* FIXED: SDK Span.recording? after finish
|
86
|
-
* FIXED: Pass full Context to samplers
|
87
|
-
* DOCS: Add documentation on usage scenarios for span processors
|
154
|
+
* ADDED: Add OTEL_RUBY_BSP_START_THREAD_ON_BOOT env var
|
155
|
+
* ADDED: Add timeout for force_flush and shutdown
|
156
|
+
* FIXED: Signal at batch_size
|
157
|
+
* FIXED: SDK Span.recording? after finish
|
158
|
+
* FIXED: Pass full Context to samplers
|
159
|
+
* DOCS: Add documentation on usage scenarios for span processors
|
88
160
|
|
89
161
|
### v0.8.0 / 2020-10-27
|
90
162
|
|
91
|
-
* BREAKING CHANGE: Move context/span methods to Trace module
|
92
|
-
* BREAKING CHANGE: Remove 'canonical' from status codes
|
93
|
-
* BREAKING CHANGE: Assorted SpanContext fixes
|
163
|
+
* BREAKING CHANGE: Move context/span methods to Trace module
|
164
|
+
* BREAKING CHANGE: Remove 'canonical' from status codes
|
165
|
+
* BREAKING CHANGE: Assorted SpanContext fixes
|
94
166
|
|
95
|
-
* FIXED: Move context/span methods to Trace module
|
96
|
-
* FIXED: Remove 'canonical' from status codes
|
97
|
-
* FIXED: Assorted SpanContext fixes
|
167
|
+
* FIXED: Move context/span methods to Trace module
|
168
|
+
* FIXED: Remove 'canonical' from status codes
|
169
|
+
* FIXED: Assorted SpanContext fixes
|
98
170
|
|
99
171
|
### v0.7.0 / 2020-10-07
|
100
172
|
|
101
|
-
* ADDED: Add service_name setter to configurator
|
102
|
-
* ADDED: Add service_version setter to configurator
|
103
|
-
* FIXED: Fork safety for batch processor
|
104
|
-
* FIXED: Don't generate a span ID unnecessarily
|
105
|
-
* DOCS: Fix Configurator#add_span_processor
|
106
|
-
* DOCS: Standardize toplevel docs structure and readme
|
173
|
+
* ADDED: Add service_name setter to configurator
|
174
|
+
* ADDED: Add service_version setter to configurator
|
175
|
+
* FIXED: Fork safety for batch processor
|
176
|
+
* FIXED: Don't generate a span ID unnecessarily
|
177
|
+
* DOCS: Fix Configurator#add_span_processor
|
178
|
+
* DOCS: Standardize toplevel docs structure and readme
|
107
179
|
|
108
180
|
### v0.6.0 / 2020-09-10
|
109
181
|
|
110
|
-
* BREAKING CHANGE: Rename Resource labels to attributes
|
182
|
+
* BREAKING CHANGE: Rename Resource labels to attributes
|
111
183
|
* BREAKING CHANGE: Export resource from Span/SpanData instead of library_resource
|
112
184
|
* BREAKING CHANGE: Rename CorrelationContext to Baggage
|
113
185
|
* BREAKING CHANGE: Rename Text* to TextMap* (propagators, injectors, extractors)
|
@@ -117,7 +189,7 @@
|
|
117
189
|
|
118
190
|
* ADDED: Add OTLP exporter
|
119
191
|
* ADDED: Add support for OTEL_LOG_LEVEL env var
|
120
|
-
* FIXED: Rename Resource labels to attributes
|
192
|
+
* FIXED: Rename Resource labels to attributes
|
121
193
|
* ADDED: Environment variable resource detection
|
122
194
|
* ADDED: BatchSpanProcessor environment variable support
|
123
195
|
* FIXED: Remove semver prefix
|
data/README.md
CHANGED
@@ -29,10 +29,33 @@ Then, configure the SDK according to your desired handling of telemetry data, an
|
|
29
29
|
```ruby
|
30
30
|
require 'opentelemetry/sdk'
|
31
31
|
|
32
|
-
# Configure the sdk with default export and context propagation formats
|
33
|
-
# see SDK#configure for customizing the setup
|
32
|
+
# Configure the sdk with default export and context propagation formats.
|
34
33
|
OpenTelemetry::SDK.configure
|
35
34
|
|
35
|
+
# Many configuration options may be set via the environment. To use them,
|
36
|
+
# set the appropriate variable before calling configure. For example:
|
37
|
+
#
|
38
|
+
# ENV['OTEL_TRACES_EXPORTER'] = 'console'
|
39
|
+
# ENV['OTEL_PROPAGATORS'] = 'ottrace'
|
40
|
+
# OpenTelemetry::SDK.configure
|
41
|
+
#
|
42
|
+
# You may also configure the SDK programmatically, for advanced usage or to
|
43
|
+
# enable auto-instrumentation. For example:
|
44
|
+
#
|
45
|
+
# OpenTelemetry::SDK.configure do |c|
|
46
|
+
# c.service_name = something_calculated_dynamically
|
47
|
+
# c.add_span_processor(
|
48
|
+
# OpenTelemetry::SDK::Trace::Export::SimpleSpanProcessor.new(
|
49
|
+
# OpenTelemetry::SDK::Trace::Export::ConsoleSpanExporter.new
|
50
|
+
# )
|
51
|
+
# )
|
52
|
+
#
|
53
|
+
# c.use 'OpenTelemetry::Instrumentation::Net::HTTP'
|
54
|
+
# end
|
55
|
+
#
|
56
|
+
# Note that the SimpleSpanExporter is not recommended for use in production.
|
57
|
+
|
58
|
+
|
36
59
|
# To start a trace you need to get a Tracer from the TracerProvider
|
37
60
|
tracer = OpenTelemetry.tracer_provider.tracer('my_app_or_gem', '0.1.0')
|
38
61
|
|
data/lib/opentelemetry/sdk.rb
CHANGED
@@ -6,6 +6,8 @@
|
|
6
6
|
|
7
7
|
require 'opentelemetry'
|
8
8
|
require 'opentelemetry/common'
|
9
|
+
require 'opentelemetry-instrumentation-base'
|
10
|
+
require 'opentelemetry-semantic_conventions'
|
9
11
|
|
10
12
|
# OpenTelemetry is an open source observability framework, providing a
|
11
13
|
# general-purpose API, SDK, and related tools required for the instrumentation
|
@@ -54,7 +56,7 @@ module OpenTelemetry
|
|
54
56
|
# Configure everything
|
55
57
|
#
|
56
58
|
# OpenTelemetry::SDK.configure do |c|
|
57
|
-
# c.logger = Logger.new(
|
59
|
+
# c.logger = Logger.new(File::NULL)
|
58
60
|
# c.add_span_processor SpanProcessor.new(SomeExporter.new)
|
59
61
|
# c.use_all
|
60
62
|
# end
|
@@ -66,14 +68,14 @@ module OpenTelemetry
|
|
66
68
|
begin
|
67
69
|
raise ConfigurationError
|
68
70
|
rescue ConfigurationError => e
|
69
|
-
OpenTelemetry.handle_error(exception: e, message:
|
71
|
+
OpenTelemetry.handle_error(exception: e, message: "unexpected configuration error due to #{e.cause}")
|
70
72
|
end
|
71
73
|
end
|
72
74
|
end
|
73
75
|
end
|
74
76
|
|
75
77
|
require 'opentelemetry/sdk/configurator'
|
76
|
-
require 'opentelemetry/sdk/
|
78
|
+
require 'opentelemetry/sdk/forwarding_logger'
|
77
79
|
require 'opentelemetry/sdk/internal'
|
78
80
|
require 'opentelemetry/sdk/instrumentation_library'
|
79
81
|
require 'opentelemetry/sdk/resources'
|
@@ -9,20 +9,34 @@ module OpenTelemetry
|
|
9
9
|
# The configurator provides defaults and facilitates configuring the
|
10
10
|
# SDK for use.
|
11
11
|
class Configurator # rubocop:disable Metrics/ClassLength
|
12
|
+
# @api private
|
13
|
+
class NoopTextMapPropagator
|
14
|
+
EMPTY_LIST = [].freeze
|
15
|
+
private_constant(:EMPTY_LIST)
|
16
|
+
|
17
|
+
def inject(carrier, context: Context.current, setter: Context::Propagation.text_map_setter); end
|
18
|
+
|
19
|
+
def extract(carrier, context: Context.current, getter: Context::Propagation.text_map_getter)
|
20
|
+
context
|
21
|
+
end
|
22
|
+
|
23
|
+
def fields
|
24
|
+
EMPTY_LIST
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
12
28
|
USE_MODE_UNSPECIFIED = 0
|
13
29
|
USE_MODE_ONE = 1
|
14
30
|
USE_MODE_ALL = 2
|
15
31
|
|
16
32
|
private_constant :USE_MODE_UNSPECIFIED, :USE_MODE_ONE, :USE_MODE_ALL
|
17
33
|
|
18
|
-
attr_writer :
|
19
|
-
:id_generator
|
34
|
+
attr_writer :propagators, :error_handler, :id_generator
|
20
35
|
|
21
36
|
def initialize
|
22
37
|
@instrumentation_names = []
|
23
38
|
@instrumentation_config_map = {}
|
24
|
-
@
|
25
|
-
@extractors = nil
|
39
|
+
@propagators = nil
|
26
40
|
@span_processors = []
|
27
41
|
@use_mode = USE_MODE_UNSPECIFIED
|
28
42
|
@resource = Resources::Resource.default
|
@@ -33,6 +47,15 @@ module OpenTelemetry
|
|
33
47
|
@logger ||= OpenTelemetry.logger
|
34
48
|
end
|
35
49
|
|
50
|
+
# Accepts a logger and wraps it in the {ForwardingLogger} which allows
|
51
|
+
# for controlling the severity level emitted by the OpenTelemetry.logger
|
52
|
+
# independently of the supplied logger.
|
53
|
+
#
|
54
|
+
# @param [Logger] new_logger The logger for OpenTelemetry to use
|
55
|
+
def logger=(new_logger)
|
56
|
+
@logger = ForwardingLogger.new(new_logger, level: ENV['OTEL_LOG_LEVEL'] || Logger::INFO)
|
57
|
+
end
|
58
|
+
|
36
59
|
def error_handler
|
37
60
|
@error_handler ||= OpenTelemetry.error_handler
|
38
61
|
end
|
@@ -53,7 +76,7 @@ module OpenTelemetry
|
|
53
76
|
# @param [String] service_name The value to be used as the service name
|
54
77
|
def service_name=(service_name)
|
55
78
|
self.resource = OpenTelemetry::SDK::Resources::Resource.create(
|
56
|
-
OpenTelemetry::
|
79
|
+
OpenTelemetry::SemanticConventions::Resource::SERVICE_NAME => service_name
|
57
80
|
)
|
58
81
|
end
|
59
82
|
|
@@ -63,7 +86,7 @@ module OpenTelemetry
|
|
63
86
|
# @param [String] service_version The value to be used as the service version
|
64
87
|
def service_version=(service_version)
|
65
88
|
self.resource = OpenTelemetry::SDK::Resources::Resource.create(
|
66
|
-
OpenTelemetry::
|
89
|
+
OpenTelemetry::SemanticConventions::Resource::SERVICE_VERSION => service_version
|
67
90
|
)
|
68
91
|
end
|
69
92
|
|
@@ -114,7 +137,6 @@ module OpenTelemetry
|
|
114
137
|
def configure
|
115
138
|
OpenTelemetry.logger = logger
|
116
139
|
OpenTelemetry.error_handler = error_handler
|
117
|
-
OpenTelemetry.baggage = Baggage::Manager.new
|
118
140
|
configure_propagation
|
119
141
|
configure_span_processors
|
120
142
|
tracer_provider.id_generator = @id_generator
|
@@ -125,7 +147,7 @@ module OpenTelemetry
|
|
125
147
|
private
|
126
148
|
|
127
149
|
def tracer_provider
|
128
|
-
@tracer_provider ||= Trace::TracerProvider.new(@resource)
|
150
|
+
@tracer_provider ||= Trace::TracerProvider.new(resource: @resource)
|
129
151
|
end
|
130
152
|
|
131
153
|
def check_use_mode!(mode)
|
@@ -136,39 +158,38 @@ module OpenTelemetry
|
|
136
158
|
def install_instrumentation
|
137
159
|
case @use_mode
|
138
160
|
when USE_MODE_ONE
|
139
|
-
OpenTelemetry.
|
161
|
+
OpenTelemetry::Instrumentation.registry.install(@instrumentation_names, @instrumentation_config_map)
|
140
162
|
when USE_MODE_ALL
|
141
|
-
OpenTelemetry.
|
163
|
+
OpenTelemetry::Instrumentation.registry.install_all(@instrumentation_config_map)
|
142
164
|
end
|
143
165
|
end
|
144
166
|
|
145
167
|
def configure_span_processors
|
146
|
-
processors = @span_processors.empty? ?
|
168
|
+
processors = @span_processors.empty? ? wrapped_exporters_from_env.compact : @span_processors
|
147
169
|
processors.each { |p| tracer_provider.add_span_processor(p) }
|
148
170
|
end
|
149
171
|
|
150
|
-
def
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
172
|
+
def wrapped_exporters_from_env
|
173
|
+
exporters = ENV.fetch('OTEL_TRACES_EXPORTER', 'otlp')
|
174
|
+
exporters.split(',').map do |exporter|
|
175
|
+
case exporter.strip
|
176
|
+
when 'none' then nil
|
177
|
+
when 'otlp' then fetch_exporter(exporter, 'OpenTelemetry::Exporter::OTLP::Exporter')
|
178
|
+
when 'jaeger' then fetch_exporter(exporter, 'OpenTelemetry::Exporter::Jaeger::CollectorExporter')
|
179
|
+
when 'zipkin' then fetch_exporter(exporter, 'OpenTelemetry::Exporter::Zipkin::Exporter')
|
180
|
+
when 'console' then Trace::Export::SimpleSpanProcessor.new(Trace::Export::ConsoleSpanExporter.new)
|
181
|
+
else
|
182
|
+
OpenTelemetry.logger.warn "The #{exporter} exporter is unknown and cannot be configured, spans will not be exported"
|
183
|
+
nil
|
184
|
+
end
|
161
185
|
end
|
162
186
|
end
|
163
187
|
|
164
|
-
def configure_propagation # rubocop:disable Metrics/
|
165
|
-
propagators = ENV.fetch('OTEL_PROPAGATORS', 'tracecontext,baggage').split(',')
|
166
|
-
injectors, extractors = propagators.uniq.collect do |propagator|
|
188
|
+
def configure_propagation # rubocop:disable Metrics/CyclomaticComplexity
|
189
|
+
propagators = ENV.fetch('OTEL_PROPAGATORS', 'tracecontext,baggage').split(',').uniq.collect do |propagator|
|
167
190
|
case propagator
|
168
|
-
when 'tracecontext'
|
169
|
-
|
170
|
-
when 'baggage'
|
171
|
-
[OpenTelemetry::Baggage::Propagation.text_map_injector, OpenTelemetry::Baggage::Propagation.text_map_extractor]
|
191
|
+
when 'tracecontext' then OpenTelemetry::Trace::Propagation::TraceContext.text_map_propagator
|
192
|
+
when 'baggage' then OpenTelemetry::Baggage::Propagation.text_map_propagator
|
172
193
|
when 'b3' then fetch_propagator(propagator, 'OpenTelemetry::Propagator::B3::Single')
|
173
194
|
when 'b3multi' then fetch_propagator(propagator, 'OpenTelemetry::Propagator::B3::Multi', 'b3')
|
174
195
|
when 'jaeger' then fetch_propagator(propagator, 'OpenTelemetry::Propagator::Jaeger')
|
@@ -176,27 +197,17 @@ module OpenTelemetry
|
|
176
197
|
when 'ottrace' then fetch_propagator(propagator, 'OpenTelemetry::Propagator::OTTrace')
|
177
198
|
else
|
178
199
|
OpenTelemetry.logger.warn "The #{propagator} propagator is unknown and cannot be configured"
|
179
|
-
|
200
|
+
NoopTextMapPropagator.new
|
180
201
|
end
|
181
|
-
end.transpose
|
182
|
-
OpenTelemetry.propagation = create_propagator(@injectors || injectors.compact,
|
183
|
-
@extractors || extractors.compact)
|
184
|
-
end
|
185
|
-
|
186
|
-
def create_propagator(injectors, extractors)
|
187
|
-
if injectors.size > 1 || extractors.size > 1
|
188
|
-
Context::Propagation::CompositePropagator.new(injectors, extractors)
|
189
|
-
else
|
190
|
-
Context::Propagation::Propagator.new(injectors.first, extractors.first)
|
191
202
|
end
|
203
|
+
OpenTelemetry.propagation = Context::Propagation::CompositeTextMapPropagator.compose_propagators((@propagators || propagators).compact)
|
192
204
|
end
|
193
205
|
|
194
206
|
def fetch_propagator(name, class_name, gem_suffix = name)
|
195
|
-
|
196
|
-
[propagator_class.text_map_injector, propagator_class.text_map_extractor]
|
207
|
+
Kernel.const_get(class_name).text_map_propagator
|
197
208
|
rescue NameError
|
198
209
|
OpenTelemetry.logger.warn "The #{name} propagator cannot be configured - please add opentelemetry-propagator-#{gem_suffix} to your Gemfile"
|
199
|
-
|
210
|
+
nil
|
200
211
|
end
|
201
212
|
|
202
213
|
def fetch_exporter(name, class_name)
|