From be02830dea891e7439f1231fc70a1617284d25a9 Mon Sep 17 00:00:00 2001 From: Eric Zhang Date: Sat, 26 Apr 2025 03:26:35 +0000 Subject: [PATCH 1/4] add flag to suppress downstream instrumentation --- .../instrumentation/faraday/instrumentation.rb | 1 + .../faraday/middlewares/tracer_middleware.rb | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/instrumentation/faraday/lib/opentelemetry/instrumentation/faraday/instrumentation.rb b/instrumentation/faraday/lib/opentelemetry/instrumentation/faraday/instrumentation.rb index a194d709e7..8751b0b007 100644 --- a/instrumentation/faraday/lib/opentelemetry/instrumentation/faraday/instrumentation.rb +++ b/instrumentation/faraday/lib/opentelemetry/instrumentation/faraday/instrumentation.rb @@ -28,6 +28,7 @@ class Instrumentation < OpenTelemetry::Instrumentation::Base option :span_kind, default: :client, validate: %i[client internal] option :peer_service, default: nil, validate: :string + option :suppress_internal_instrumentation, default: false, validate: :boolean private diff --git a/instrumentation/faraday/lib/opentelemetry/instrumentation/faraday/middlewares/tracer_middleware.rb b/instrumentation/faraday/lib/opentelemetry/instrumentation/faraday/middlewares/tracer_middleware.rb index 26904ee8d7..d5391f0db4 100644 --- a/instrumentation/faraday/lib/opentelemetry/instrumentation/faraday/middlewares/tracer_middleware.rb +++ b/instrumentation/faraday/lib/opentelemetry/instrumentation/faraday/middlewares/tracer_middleware.rb @@ -40,7 +40,13 @@ def call(env) ) do |span| OpenTelemetry.propagation.inject(env.request_headers) - app.call(env).on_complete { |resp| trace_response(span, resp.status) } + if config[:suppress_internal_instrumentation] + OpenTelemetry::Common::Utilities.untraced do + app.call(env).on_complete { |resp| trace_response(span, resp.status) } + end + else + app.call(env).on_complete { |resp| trace_response(span, resp.status) } + end rescue ::Faraday::Error => e trace_response(span, e.response[:status]) if e.response From 7d01f05fd71c70f2c247136c9e343c32a8e810f9 Mon Sep 17 00:00:00 2001 From: Eric Zhang Date: Sat, 26 Apr 2025 03:26:59 +0000 Subject: [PATCH 2/4] update README --- instrumentation/faraday/README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/instrumentation/faraday/README.md b/instrumentation/faraday/README.md index f8e23bc45e..604f9ab7c5 100644 --- a/instrumentation/faraday/README.md +++ b/instrumentation/faraday/README.md @@ -19,6 +19,7 @@ To install the instrumentation, call `use` with the name of the instrumentation. ```ruby OpenTelemetry::SDK.configure do |c| c.use 'OpenTelemetry::Instrumentation::Faraday' + suppress_internal_instrumentation: true end ``` @@ -30,6 +31,11 @@ OpenTelemetry::SDK.configure do |c| end ``` +### Configuration options +This instrumentation offers the following configuration options: +* `suppress_internal_instrumentation` (default: `false`): When set to `true`, any spans with + span kind of `internal` are suppressed from traces. + ## Examples Example usage of faraday can be seen in the `./example/faraday.rb` file [here](https://github.com/open-telemetry/opentelemetry-ruby-contrib/blob/main/instrumentation/faraday/example/faraday.rb) From afff1d9ec107b58a8d741d9cea70aca3a07228e3 Mon Sep 17 00:00:00 2001 From: Eric Zhang Date: Fri, 30 May 2025 00:26:42 +0000 Subject: [PATCH 3/4] change flag name --- instrumentation/faraday/README.md | 6 +++--- .../instrumentation/faraday/instrumentation.rb | 2 +- .../faraday/middlewares/tracer_middleware.rb | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/instrumentation/faraday/README.md b/instrumentation/faraday/README.md index 837c33fbfb..fd6f9b6dba 100644 --- a/instrumentation/faraday/README.md +++ b/instrumentation/faraday/README.md @@ -19,7 +19,7 @@ To install the instrumentation, call `use` with the name of the instrumentation. ```ruby OpenTelemetry::SDK.configure do |c| c.use 'OpenTelemetry::Instrumentation::Faraday' - suppress_internal_instrumentation: true + enable_internal_instrumentation: false end ``` @@ -33,8 +33,8 @@ end ### Configuration options This instrumentation offers the following configuration options: -* `suppress_internal_instrumentation` (default: `false`): When set to `true`, any spans with - span kind of `internal` are suppressed from traces. +* `enable_internal_instrumentation` (default: `false`): When set to `true`, any spans with + span kind of `internal` are included in traces. ## Examples diff --git a/instrumentation/faraday/lib/opentelemetry/instrumentation/faraday/instrumentation.rb b/instrumentation/faraday/lib/opentelemetry/instrumentation/faraday/instrumentation.rb index 8751b0b007..6aa08328ad 100644 --- a/instrumentation/faraday/lib/opentelemetry/instrumentation/faraday/instrumentation.rb +++ b/instrumentation/faraday/lib/opentelemetry/instrumentation/faraday/instrumentation.rb @@ -28,7 +28,7 @@ class Instrumentation < OpenTelemetry::Instrumentation::Base option :span_kind, default: :client, validate: %i[client internal] option :peer_service, default: nil, validate: :string - option :suppress_internal_instrumentation, default: false, validate: :boolean + option :enable_internal_instrumentation, default: false, validate: :boolean private diff --git a/instrumentation/faraday/lib/opentelemetry/instrumentation/faraday/middlewares/tracer_middleware.rb b/instrumentation/faraday/lib/opentelemetry/instrumentation/faraday/middlewares/tracer_middleware.rb index d5391f0db4..ac4b298431 100644 --- a/instrumentation/faraday/lib/opentelemetry/instrumentation/faraday/middlewares/tracer_middleware.rb +++ b/instrumentation/faraday/lib/opentelemetry/instrumentation/faraday/middlewares/tracer_middleware.rb @@ -40,7 +40,7 @@ def call(env) ) do |span| OpenTelemetry.propagation.inject(env.request_headers) - if config[:suppress_internal_instrumentation] + if config[:enable_internal_instrumentation] == false OpenTelemetry::Common::Utilities.untraced do app.call(env).on_complete { |resp| trace_response(span, resp.status) } end From 45a7d58e2f7a1ec6e23df01d800247253d123360 Mon Sep 17 00:00:00 2001 From: Eric Zhang Date: Fri, 30 May 2025 20:01:02 +0000 Subject: [PATCH 4/4] fix README --- instrumentation/faraday/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/instrumentation/faraday/README.md b/instrumentation/faraday/README.md index fd6f9b6dba..88b77cad23 100644 --- a/instrumentation/faraday/README.md +++ b/instrumentation/faraday/README.md @@ -18,8 +18,9 @@ To install the instrumentation, call `use` with the name of the instrumentation. ```ruby OpenTelemetry::SDK.configure do |c| - c.use 'OpenTelemetry::Instrumentation::Faraday' - enable_internal_instrumentation: false + c.use 'OpenTelemetry::Instrumentation::Faraday', { + enable_internal_instrumentation: false + } end ```