Skip to content

Commit e6759dc

Browse files
committed
Add otel and debugger in Rails 7.2
1 parent 52a9957 commit e6759dc

File tree

5 files changed

+57
-2
lines changed

5 files changed

+57
-2
lines changed

utils/build/docker/ruby/rails72.Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ COPY utils/build/docker/ruby/rails72/Gemfile.lock .
1111
RUN sed -i -e '/gem .ddtrace./d' Gemfile && bundle config set --local without test development && bundle install
1212

1313
COPY utils/build/docker/ruby/rails72/ .
14+
COPY utils/build/docker/ruby/shared/rails/ .
1415
COPY utils/build/docker/ruby/install_ddtrace.sh binaries* /binaries/
1516
RUN /binaries/install_ddtrace.sh
1617

utils/build/docker/ruby/rails72/Gemfile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ gem 'sqlite3', '~> 1.4'
77
gem 'puma', '~> 6.0'
88
gem 'bootsnap', require: false
99
# Tracing related dependencies
10-
gem 'rdkafka'
10+
gem 'rdkafka', '~> 0.21.0'
11+
gem 'opentelemetry-api', '~> 1.5.0'
12+
gem 'opentelemetry-sdk', '~> 1.8.0'
1113
# AppSec related dependencies
1214
gem 'devise', '~> 4.9'
1315
gem "faraday", '~> 2.13.0'

utils/build/docker/ruby/rails72/Gemfile.lock

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,18 @@ GEM
187187
racc (~> 1.4)
188188
nokogiri (1.18.8-x86_64-linux-musl)
189189
racc (~> 1.4)
190+
opentelemetry-api (1.5.0)
191+
opentelemetry-common (0.22.0)
192+
opentelemetry-api (~> 1.0)
193+
opentelemetry-registry (0.4.0)
194+
opentelemetry-api (~> 1.1)
195+
opentelemetry-sdk (1.8.0)
196+
opentelemetry-api (~> 1.1)
197+
opentelemetry-common (~> 0.20)
198+
opentelemetry-registry (~> 0.2)
199+
opentelemetry-semantic_conventions
200+
opentelemetry-semantic_conventions (1.11.0)
201+
opentelemetry-api (~> 1.0)
190202
orm_adapter (0.5.0)
191203
pp (0.6.2)
192204
prettyprint
@@ -299,10 +311,12 @@ DEPENDENCIES
299311
devise (~> 4.9)
300312
dogstatsd-ruby
301313
faraday (~> 2.13.0)
314+
opentelemetry-api
315+
opentelemetry-sdk
302316
pry-byebug
303317
puma (~> 6.0)
304318
rails (~> 7.2.2)
305-
rdkafka
319+
rdkafka (~> 0.21.0)
306320
sqlite3 (~> 1.4)
307321

308322
RUBY VERSION

utils/build/docker/ruby/rails72/app/controllers/system_test_controller.rb

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,36 @@ def return_headers
243243
render json: JSON.generate(request_headers), content_type: 'application/json'
244244
end
245245

246+
def otel_drop_in_default_propagator_extract
247+
# The extract operation succeeds with a custom OpenTelemetry propagator, but not with the default one.
248+
# To see this, uncomment the next line, and use that propagator to do the context extraction
249+
# propagator = OpenTelemetry::Context::Propagation::CompositeTextMapPropagator.compose_propagators([OpenTelemetry::Trace::Propagation::TraceContext.text_map_propagator, OpenTelemetry::Baggage::Propagation.text_map_propagator])
250+
context = OpenTelemetry.propagation.extract(request.headers)
251+
252+
span_context = OpenTelemetry::Trace.current_span(context).context
253+
254+
baggage = OpenTelemetry::Baggage.raw_entries()
255+
baggage_str = ""
256+
baggage.each_pair do |key, value|
257+
baggage_str << value << ','
258+
end
259+
baggage_str.chop!
260+
261+
result = {}
262+
result["trace_id"] = span_context.hex_trace_id.from(16).to_i(16)
263+
result["span_id"] = span_context.hex_span_id.to_i(16)
264+
result["tracestate"] = span_context.tracestate.to_s
265+
result["baggage"] = baggage_str
266+
267+
render json: JSON.generate(result), content_type: 'application/json'
268+
end
269+
270+
def otel_drop_in_default_propagator_inject
271+
headers = {}
272+
OpenTelemetry.propagation.inject(headers)
273+
render json: JSON.generate(headers), content_type: 'application/json'
274+
end
275+
246276
def handle_path_params
247277
render plain: 'OK'
248278
end

utils/build/docker/ruby/rails72/config/routes.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,14 @@
5050
get '/requestdownstream' => 'system_test#request_downstream'
5151
get '/returnheaders' => 'system_test#return_headers'
5252

53+
get '/otel_drop_in_default_propagator_extract' => 'system_test#otel_drop_in_default_propagator_extract'
54+
get '/otel_drop_in_default_propagator_inject' => 'system_test#otel_drop_in_default_propagator_inject'
55+
56+
get '/debugger/init' => 'debugger#init'
57+
get '/debugger/pii' => 'debugger#pii'
58+
get '/debugger/log' => 'debugger#log_probe'
59+
get '/debugger/mix/:string_arg/:int_arg' => 'debugger#mix_probe'
60+
5361
get '/rasp/sqli' => 'rasp_sqli#show'
5462
post '/rasp/sqli' => 'rasp_sqli#show'
5563

0 commit comments

Comments
 (0)