opentelemetry-sdk 0.5.1 → 0.10.0
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/.yardopts +2 -2
- data/CHANGELOG.md +60 -0
- data/README.md +1 -1
- data/lib/opentelemetry/sdk.rb +2 -1
- data/lib/opentelemetry/sdk/baggage.rb +16 -0
- data/lib/opentelemetry/sdk/{correlation_context → baggage}/builder.rb +5 -5
- data/lib/opentelemetry/sdk/{correlation_context → baggage}/manager.rb +37 -27
- data/lib/opentelemetry/sdk/configurator.rb +41 -20
- data/lib/opentelemetry/sdk/resources/constants.rb +0 -4
- data/lib/opentelemetry/sdk/resources/resource.rb +33 -22
- data/lib/opentelemetry/sdk/trace.rb +1 -0
- data/lib/opentelemetry/sdk/trace/config/trace_config.rb +3 -3
- data/lib/opentelemetry/sdk/trace/event.rb +48 -0
- data/lib/opentelemetry/sdk/trace/export.rb +9 -4
- data/lib/opentelemetry/sdk/trace/export/batch_span_processor.rb +84 -36
- data/lib/opentelemetry/sdk/trace/export/console_span_exporter.rb +5 -8
- data/lib/opentelemetry/sdk/trace/export/in_memory_span_exporter.rb +8 -2
- data/lib/opentelemetry/sdk/trace/export/multi_span_exporter.rb +17 -16
- data/lib/opentelemetry/sdk/trace/export/noop_span_exporter.rb +6 -2
- data/lib/opentelemetry/sdk/trace/export/simple_span_processor.rb +22 -4
- data/lib/opentelemetry/sdk/trace/multi_span_processor.rb +30 -6
- data/lib/opentelemetry/sdk/trace/noop_span_processor.rb +17 -3
- data/lib/opentelemetry/sdk/trace/samplers.rb +46 -45
- data/lib/opentelemetry/sdk/trace/samplers/constant_sampler.rb +4 -5
- data/lib/opentelemetry/sdk/trace/samplers/decision.rb +3 -3
- data/lib/opentelemetry/sdk/trace/samplers/parent_based.rb +54 -0
- data/lib/opentelemetry/sdk/trace/samplers/result.rb +16 -5
- data/lib/opentelemetry/sdk/trace/samplers/trace_id_ratio_based.rb +44 -0
- data/lib/opentelemetry/sdk/trace/span.rb +30 -36
- data/lib/opentelemetry/sdk/trace/span_data.rb +16 -3
- data/lib/opentelemetry/sdk/trace/tracer.rb +13 -12
- data/lib/opentelemetry/sdk/trace/tracer_provider.rb +4 -2
- data/lib/opentelemetry/sdk/version.rb +1 -1
- metadata +30 -11
- data/lib/opentelemetry/sdk/correlation_context.rb +0 -16
- data/lib/opentelemetry/sdk/trace/samplers/parent_or_else.rb +0 -43
- data/lib/opentelemetry/sdk/trace/samplers/probability_sampler.rb +0 -64
@@ -14,7 +14,6 @@ module OpenTelemetry
|
|
14
14
|
:kind,
|
15
15
|
:status,
|
16
16
|
:parent_span_id,
|
17
|
-
:child_count,
|
18
17
|
:total_recorded_attributes,
|
19
18
|
:total_recorded_events,
|
20
19
|
:total_recorded_links,
|
@@ -23,12 +22,26 @@ module OpenTelemetry
|
|
23
22
|
:attributes,
|
24
23
|
:links,
|
25
24
|
:events,
|
26
|
-
:
|
25
|
+
:resource,
|
27
26
|
:instrumentation_library,
|
28
27
|
:span_id,
|
29
28
|
:trace_id,
|
30
29
|
:trace_flags,
|
31
|
-
:tracestate)
|
30
|
+
:tracestate) do
|
31
|
+
# Returns the lowercase [hex encoded](https://tools.ietf.org/html/rfc4648#section-8) span ID.
|
32
|
+
#
|
33
|
+
# @return [String] A 16-hex-character lowercase string.
|
34
|
+
def hex_span_id
|
35
|
+
span_id.unpack1('H*')
|
36
|
+
end
|
37
|
+
|
38
|
+
# Returns the lowercase [hex encoded](https://tools.ietf.org/html/rfc4648#section-8) trace ID.
|
39
|
+
#
|
40
|
+
# @return [String] A 32-hex-character lowercase string.
|
41
|
+
def hex_trace_id
|
42
|
+
trace_id.unpack1('H*')
|
43
|
+
end
|
44
|
+
end
|
32
45
|
end
|
33
46
|
end
|
34
47
|
end
|
@@ -30,33 +30,34 @@ module OpenTelemetry
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def start_root_span(name, attributes: nil, links: nil, start_timestamp: nil, kind: nil)
|
33
|
-
start_span(name,
|
33
|
+
start_span(name, with_parent: Context.empty, attributes: attributes, links: links, start_timestamp: start_timestamp, kind: kind)
|
34
34
|
end
|
35
35
|
|
36
|
-
def start_span(name, with_parent: nil,
|
36
|
+
def start_span(name, with_parent: nil, attributes: nil, links: nil, start_timestamp: nil, kind: nil)
|
37
37
|
name ||= 'empty'
|
38
38
|
|
39
|
-
|
40
|
-
parent_span_context =
|
41
|
-
|
42
|
-
|
43
|
-
|
39
|
+
with_parent ||= Context.current
|
40
|
+
parent_span_context = OpenTelemetry::Trace.current_span(with_parent).context
|
41
|
+
if parent_span_context.valid?
|
42
|
+
parent_span_id = parent_span_context.span_id
|
43
|
+
trace_id = parent_span_context.trace_id
|
44
|
+
end
|
44
45
|
trace_id ||= OpenTelemetry::Trace.generate_trace_id
|
45
|
-
span_id = OpenTelemetry::Trace.generate_span_id
|
46
46
|
sampler = tracer_provider.active_trace_config.sampler
|
47
|
-
result = sampler.should_sample?(trace_id: trace_id, parent_context:
|
48
|
-
internal_create_span(result, name, kind, trace_id,
|
47
|
+
result = sampler.should_sample?(trace_id: trace_id, parent_context: with_parent, links: links, name: name, kind: kind, attributes: attributes)
|
48
|
+
internal_create_span(result, name, kind, trace_id, parent_span_id, attributes, links, start_timestamp, with_parent)
|
49
49
|
end
|
50
50
|
|
51
51
|
private
|
52
52
|
|
53
|
-
def internal_create_span(result, name, kind, trace_id,
|
53
|
+
def internal_create_span(result, name, kind, trace_id, parent_span_id, attributes, links, start_timestamp, parent_context) # rubocop:disable Metrics/AbcSize
|
54
54
|
if result.recording? && !tracer_provider.stopped?
|
55
55
|
trace_flags = result.sampled? ? OpenTelemetry::Trace::TraceFlags::SAMPLED : OpenTelemetry::Trace::TraceFlags::DEFAULT
|
56
|
-
context = OpenTelemetry::Trace::SpanContext.new(trace_id: trace_id, trace_flags: trace_flags, tracestate: tracestate)
|
56
|
+
context = OpenTelemetry::Trace::SpanContext.new(trace_id: trace_id, trace_flags: trace_flags, tracestate: result.tracestate)
|
57
57
|
attributes = attributes&.merge(result.attributes) || result.attributes
|
58
58
|
Span.new(
|
59
59
|
context,
|
60
|
+
parent_context,
|
60
61
|
name,
|
61
62
|
kind,
|
62
63
|
parent_span_id,
|
@@ -49,13 +49,15 @@ module OpenTelemetry
|
|
49
49
|
# processed and exported.
|
50
50
|
#
|
51
51
|
# After this is called all the newly created {Span}s will be no-op.
|
52
|
-
|
52
|
+
#
|
53
|
+
# @param [optional Numeric] timeout An optional timeout in seconds.
|
54
|
+
def shutdown(timeout: nil)
|
53
55
|
@mutex.synchronize do
|
54
56
|
if @stopped
|
55
57
|
OpenTelemetry.logger.warn('calling Tracer#shutdown multiple times.')
|
56
58
|
return
|
57
59
|
end
|
58
|
-
@active_span_processor.shutdown
|
60
|
+
@active_span_processor.shutdown(timeout: timeout)
|
59
61
|
@stopped = true
|
60
62
|
end
|
61
63
|
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.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- OpenTelemetry Authors
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-12-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: opentelemetry-api
|
@@ -16,14 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.10.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.10.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: opentelemetry-common
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.10.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.10.0
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: bundler
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -149,10 +163,10 @@ files:
|
|
149
163
|
- README.md
|
150
164
|
- lib/opentelemetry-sdk.rb
|
151
165
|
- lib/opentelemetry/sdk.rb
|
166
|
+
- lib/opentelemetry/sdk/baggage.rb
|
167
|
+
- lib/opentelemetry/sdk/baggage/builder.rb
|
168
|
+
- lib/opentelemetry/sdk/baggage/manager.rb
|
152
169
|
- lib/opentelemetry/sdk/configurator.rb
|
153
|
-
- lib/opentelemetry/sdk/correlation_context.rb
|
154
|
-
- lib/opentelemetry/sdk/correlation_context/builder.rb
|
155
|
-
- lib/opentelemetry/sdk/correlation_context/manager.rb
|
156
170
|
- lib/opentelemetry/sdk/instrumentation_library.rb
|
157
171
|
- lib/opentelemetry/sdk/internal.rb
|
158
172
|
- lib/opentelemetry/sdk/resources.rb
|
@@ -161,6 +175,7 @@ files:
|
|
161
175
|
- lib/opentelemetry/sdk/trace.rb
|
162
176
|
- lib/opentelemetry/sdk/trace/config.rb
|
163
177
|
- lib/opentelemetry/sdk/trace/config/trace_config.rb
|
178
|
+
- lib/opentelemetry/sdk/trace/event.rb
|
164
179
|
- lib/opentelemetry/sdk/trace/export.rb
|
165
180
|
- lib/opentelemetry/sdk/trace/export/batch_span_processor.rb
|
166
181
|
- lib/opentelemetry/sdk/trace/export/console_span_exporter.rb
|
@@ -173,9 +188,9 @@ files:
|
|
173
188
|
- lib/opentelemetry/sdk/trace/samplers.rb
|
174
189
|
- lib/opentelemetry/sdk/trace/samplers/constant_sampler.rb
|
175
190
|
- lib/opentelemetry/sdk/trace/samplers/decision.rb
|
176
|
-
- lib/opentelemetry/sdk/trace/samplers/
|
177
|
-
- lib/opentelemetry/sdk/trace/samplers/probability_sampler.rb
|
191
|
+
- lib/opentelemetry/sdk/trace/samplers/parent_based.rb
|
178
192
|
- lib/opentelemetry/sdk/trace/samplers/result.rb
|
193
|
+
- lib/opentelemetry/sdk/trace/samplers/trace_id_ratio_based.rb
|
179
194
|
- lib/opentelemetry/sdk/trace/span.rb
|
180
195
|
- lib/opentelemetry/sdk/trace/span_data.rb
|
181
196
|
- lib/opentelemetry/sdk/trace/tracer.rb
|
@@ -184,7 +199,11 @@ files:
|
|
184
199
|
homepage: https://github.com/open-telemetry/opentelemetry-ruby
|
185
200
|
licenses:
|
186
201
|
- Apache-2.0
|
187
|
-
metadata:
|
202
|
+
metadata:
|
203
|
+
changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-sdk/v0.10.0/file.CHANGELOG.html
|
204
|
+
source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby/tree/master/sdk
|
205
|
+
bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby/issues
|
206
|
+
documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-sdk/v0.10.0
|
188
207
|
post_install_message:
|
189
208
|
rdoc_options: []
|
190
209
|
require_paths:
|
@@ -200,7 +219,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
200
219
|
- !ruby/object:Gem::Version
|
201
220
|
version: '0'
|
202
221
|
requirements: []
|
203
|
-
rubygems_version: 3.
|
222
|
+
rubygems_version: 3.1.4
|
204
223
|
signing_key:
|
205
224
|
specification_version: 4
|
206
225
|
summary: A stats collection and distributed tracing framework
|
@@ -1,16 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# Copyright 2019 OpenTelemetry Authors
|
4
|
-
#
|
5
|
-
# SPDX-License-Identifier: Apache-2.0
|
6
|
-
|
7
|
-
require 'opentelemetry/sdk/correlation_context/builder'
|
8
|
-
require 'opentelemetry/sdk/correlation_context/manager'
|
9
|
-
|
10
|
-
module OpenTelemetry
|
11
|
-
module SDK
|
12
|
-
# Contains operational implementations of the CorrelationContext::Manager
|
13
|
-
module CorrelationContext
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
@@ -1,43 +0,0 @@
|
|
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 Samplers
|
11
|
-
# @api private
|
12
|
-
#
|
13
|
-
# This is a composite sampler. It either respects the parent span's sampling
|
14
|
-
# decision or delegates to delegate_sampler for root spans.
|
15
|
-
class ParentOrElse
|
16
|
-
def initialize(delegate_sampler)
|
17
|
-
@delegate_sampler = delegate_sampler
|
18
|
-
end
|
19
|
-
|
20
|
-
# @api private
|
21
|
-
#
|
22
|
-
# See {Samplers}.
|
23
|
-
def description
|
24
|
-
"ParentOrElse{#{@delegate_sampler.description}}"
|
25
|
-
end
|
26
|
-
|
27
|
-
# @api private
|
28
|
-
#
|
29
|
-
# See {Samplers}.
|
30
|
-
def should_sample?(trace_id:, parent_context:, links:, name:, kind:, attributes:)
|
31
|
-
if parent_context.nil?
|
32
|
-
@delegate_sampler.should_sample?(trace_id: trace_id, parent_context: parent_context, links: links, name: name, kind: kind, attributes: attributes)
|
33
|
-
elsif parent_context.trace_flags.sampled?
|
34
|
-
RECORD_AND_SAMPLED
|
35
|
-
else
|
36
|
-
NOT_RECORD
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
@@ -1,64 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# Copyright 2019 OpenTelemetry Authors
|
4
|
-
#
|
5
|
-
# SPDX-License-Identifier: Apache-2.0
|
6
|
-
|
7
|
-
module OpenTelemetry
|
8
|
-
module SDK
|
9
|
-
module Trace
|
10
|
-
module Samplers
|
11
|
-
# @api private
|
12
|
-
#
|
13
|
-
# Implements sampling based on a probability.
|
14
|
-
class ProbabilitySampler
|
15
|
-
attr_reader :description
|
16
|
-
|
17
|
-
def initialize(probability, ignore_parent:, apply_to_remote_parent:, apply_to_all_spans:)
|
18
|
-
@probability = probability
|
19
|
-
@id_upper_bound = (probability * (2**64 - 1)).ceil
|
20
|
-
@use_parent_sampled_flag = !ignore_parent
|
21
|
-
@apply_to_remote_parent = apply_to_remote_parent
|
22
|
-
@apply_to_all_spans = apply_to_all_spans
|
23
|
-
@description = format('ProbabilitySampler{%.6f}', probability)
|
24
|
-
end
|
25
|
-
|
26
|
-
# @api private
|
27
|
-
#
|
28
|
-
# See {Samplers}.
|
29
|
-
def should_sample?(trace_id:, parent_context:, links:, name:, kind:, attributes:)
|
30
|
-
# Ignored for sampling decision: links, name, kind, attributes.
|
31
|
-
|
32
|
-
if sample?(trace_id, parent_context)
|
33
|
-
RECORD_AND_SAMPLED
|
34
|
-
else
|
35
|
-
NOT_RECORD
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
private
|
40
|
-
|
41
|
-
def sample?(trace_id, parent_context)
|
42
|
-
if parent_context.nil?
|
43
|
-
sample_trace_id?(trace_id)
|
44
|
-
else
|
45
|
-
parent_sampled?(parent_context) || sample_trace_id_for_child?(parent_context, trace_id)
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
def parent_sampled?(parent_context)
|
50
|
-
@use_parent_sampled_flag && parent_context.trace_flags.sampled?
|
51
|
-
end
|
52
|
-
|
53
|
-
def sample_trace_id_for_child?(parent_context, trace_id)
|
54
|
-
(@apply_to_all_spans || (@apply_to_remote_parent && parent_context.remote?)) && sample_trace_id?(trace_id)
|
55
|
-
end
|
56
|
-
|
57
|
-
def sample_trace_id?(trace_id)
|
58
|
-
@probability == 1.0 || trace_id[8, 8].unpack1('Q>') < @id_upper_bound
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|