Skip to content

Commit 59ae02a

Browse files
committed
Suppress internal spans by default
1 parent 1c6fdc7 commit 59ae02a

File tree

8 files changed

+33
-14
lines changed

8 files changed

+33
-14
lines changed

instrumentation/aws_sdk/Gemfile

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@ group :test do
2222
gem 'rspec-mocks'
2323
gem 'opentelemetry-instrumentation-base', path: '../base'
2424
gem 'webrick', '~> 1.7'
25+
gem 'aws-sdk-core', '~> 3'
26+
gem 'aws-sdk-lambda', '~> 1'
27+
gem 'aws-sdk-dynamodb', '~> 1'
28+
gem 'aws-sdk-sns', '~> 1'
29+
gem 'aws-sdk-sqs', '~> 1'
2530
if RUBY_VERSION >= '3.4'
2631
gem 'base64'
2732
gem 'mutex_m'

instrumentation/aws_sdk/README.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ To install the instrumentation, call `use` with the name of the instrumentation.
2020
OpenTelemetry::SDK.configure do |c|
2121
c.use 'OpenTelemetry::Instrumentation::AwsSdk', {
2222
inject_messaging_context: true,
23-
suppress_internal_instrumentation: true
23+
enable_internal_instrumentation: true
2424
}
2525
end
2626
```
@@ -36,8 +36,10 @@ end
3636
This instrumentation offers the following configuration options:
3737
* `:inject_messaging_context` (default: `false`): When set to `true`, adds context key/value
3838
to Message Attributes for SQS/SNS messages.
39-
* `suppress_internal_instrumentation` (default: `false`): When set to `true`, any spans with
40-
span kind of `internal` are suppressed from traces.
39+
* `:enable_internal_instrumentation` (default: `false`): When set to `true`, any spans with
40+
span kind of `internal` are traced.
41+
* `:suppress_internal_instrumentation`: **Deprecated**. This configuration has been
42+
deprecated in a favor of `:enable_internal_instrumentation`
4143

4244
## Integration with SDK V3's Telemetry support
4345
AWS SDK for Ruby V3 added support for Observability which includes a new configuration,

instrumentation/aws_sdk/lib/opentelemetry/instrumentation/aws_sdk/handler.rb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def call(context)
2323
) do |span|
2424
MessagingHelper.inject_context_if_supported(context, client_method, service_id)
2525

26-
if HandlerHelper.instrumentation_config[:suppress_internal_instrumentation]
26+
if HandlerHelper.skip_internal_instrumentation?
2727
OpenTelemetry::Common::Utilities.untraced { super }
2828
else
2929
super
@@ -32,7 +32,6 @@ def call(context)
3232
OpenTelemetry::SemanticConventions::Trace::HTTP_STATUS_CODE,
3333
context.http_response.status_code
3434
)
35-
3635
if (err = response.error)
3736
span.record_exception(err)
3837
span.status = Trace::Status.error(err.to_s)

instrumentation/aws_sdk/lib/opentelemetry/instrumentation/aws_sdk/handler_helper.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ def instrumentation_config
1414
AwsSdk::Instrumentation.instance.config
1515
end
1616

17+
def skip_internal_instrumentation?
18+
instrumentation_config[:enable_internal_instrumentation] == false
19+
end
20+
1721
def client_method(service_id, context)
1822
"#{service_id}.#{context.operation.name}".delete(' ')
1923
end

instrumentation/aws_sdk/lib/opentelemetry/instrumentation/aws_sdk/instrumentation.rb

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,20 @@ module AwsSdk
1919
# - `false` **(default)** - Context key/value will not be added.
2020
# - `true` - Context key/value will be added.
2121
#
22-
# ### `:suppress_internal_instrumentation`
22+
# ### `:enable_internal_instrumentation`
23+
# Enables tracing of spans of `internal` span kind.
2324
#
24-
# Disables tracing of spans of `internal` span kind.
25+
# - `false` **(default)** - Internal spans are not traced
26+
# - `true` - Internal spans are traced.
2527
#
26-
# - `false` **(default)** - Internal spans are traced.
27-
# - `true` - Internal spans are not traced.
28+
# ### `:suppress_internal_instrumentation` (deprecated)
29+
# This configuration has been deprecated in a favor of `:enable_internal_instrumentation`
2830
#
29-
# @example An explicit default configuration
31+
# @example An explicit default configurations
3032
# OpenTelemetry::SDK.configure do |c|
3133
# c.use 'OpenTelemetry::Instrumentation::AwsSdk', {
3234
# inject_messaging_context: false,
33-
# suppress_internal_instrumentation: false
35+
# enable_internal_instrumentation: false
3436
# }
3537
# end
3638
class Instrumentation < OpenTelemetry::Instrumentation::Base
@@ -51,7 +53,7 @@ class Instrumentation < OpenTelemetry::Instrumentation::Base
5153
end
5254

5355
option :inject_messaging_context, default: false, validate: :boolean
54-
option :suppress_internal_instrumentation, default: false, validate: :boolean
56+
option :enable_internal_instrumentation, default: false, validate: :boolean
5557

5658
def gem_version
5759
if Gem.loaded_specs['aws-sdk']

instrumentation/aws_sdk/lib/opentelemetry/instrumentation/aws_sdk/patches/telemetry.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ def span_wrapper(context, &)
2626
) do |span|
2727
MessagingHelper.inject_context_if_supported(context, client_method, service_id)
2828

29-
if HandlerHelper.instrumentation_config[:suppress_internal_instrumentation]
29+
if HandlerHelper.skip_internal_instrumentation?
3030
OpenTelemetry::Common::Utilities.untraced { super }
3131
else
3232
yield span

instrumentation/aws_sdk/test/opentelemetry/handler_test.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
#
55
# SPDX-License-Identifier: Apache-2.0
66

7-
require 'test_helper'
7+
require_relative '../test_helper'
88

99
describe OpenTelemetry::Instrumentation::AwsSdk do
1010
describe 'AwsSdk Plugin' do

instrumentation/aws_sdk/test/opentelemetry/instrumentation_test.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,4 +65,11 @@
6565
instrumentation.instance_variable_set(:@installed, false)
6666
end
6767
end
68+
69+
describe '#install with default options' do
70+
it 'with default options' do
71+
_(instrumentation.config[:inject_messaging_context]).must_equal(false)
72+
_(instrumentation.config[:enable_internal_instrumentation]).must_equal(false)
73+
end
74+
end
6875
end

0 commit comments

Comments
 (0)