Add OpenTelemetery gem [SCI-12179]

This commit is contained in:
Oleksii Kriuchykhin 2025-07-30 11:39:20 +02:00
parent 4d33953f0c
commit 0b34b17630
3 changed files with 101 additions and 24 deletions

View file

@ -70,7 +70,6 @@ gem 'rubyzip', '>= 2.3.0' # will load new rubyzip version
gem 'scenic', '~> 1.4'
gem 'sdoc', '~> 1.0', group: :doc
gem 'silencer' # Silence certain Rails logs
gem 'sneaky-save', git: 'https://github.com/einzige/sneaky-save'
gem 'turbolinks', '~> 5.2.0'
gem 'underscore-rails'
gem 'wicked_pdf'
@ -95,8 +94,11 @@ gem 'js-routes'
gem 'tailwindcss-rails', '~> 2.4'
gem 'base62' # Used for smart annotations
gem 'datadog'
gem 'newrelic_rpm'
gem 'opentelemetry-exporter-otlp'
gem 'opentelemetry-instrumentation-rails'
gem 'opentelemetry-propagator-xray'
gem 'opentelemetry-sdk'
# Permission helper Gem
gem 'canaid', git: 'https://github.com/scinote-eln/canaid'

View file

@ -1,10 +1,3 @@
GIT
remote: https://github.com/einzige/sneaky-save
revision: ee71d0a00cd4ecdd575bd2a9aa8b8693915f4871
specs:
sneaky-save (0.1.3)
activerecord (>= 3.2.0)
GIT
remote: https://github.com/scinote-eln/canaid
revision: bba1b817d1c9b0c7e0440a83d0f62848aabc0a1b
@ -292,13 +285,6 @@ GEM
activerecord (>= 5.a)
database_cleaner-core (~> 2.0.0)
database_cleaner-core (2.0.1)
datadog (2.14.0)
datadog-ruby_core_source (~> 3.4)
libdatadog (~> 16.0.1.1.0)
libddwaf (~> 1.21.0.0.1)
logger
msgpack
datadog-ruby_core_source (3.4.0)
date (3.4.1)
debug_inspector (1.1.0)
deface (1.9.0)
@ -361,6 +347,14 @@ GEM
raabro (~> 1.4)
globalid (1.2.1)
activesupport (>= 6.1)
google-protobuf (4.31.1-arm64-darwin)
bigdecimal
rake (>= 13)
google-protobuf (4.31.1-x86_64-linux-gnu)
bigdecimal
rake (>= 13)
googleapis-common-protos-types (1.20.0)
google-protobuf (>= 3.18, < 5.a)
graphviz (1.2.1)
process-pipeline
grover (1.2.3)
@ -430,12 +424,6 @@ GEM
activerecord
kaminari-core (= 1.2.2)
kaminari-core (1.2.2)
libdatadog (16.0.1.1.0)
libdatadog (16.0.1.1.0-x86_64-linux)
libddwaf (1.21.0.0.1-arm64-darwin)
ffi (~> 1.0)
libddwaf (1.21.0.0.1-x86_64-linux)
ffi (~> 1.0)
listen (3.8.0)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
@ -536,6 +524,73 @@ GEM
validate_email
validate_url
webfinger (~> 2.0)
opentelemetry-api (1.5.0)
opentelemetry-common (0.22.0)
opentelemetry-api (~> 1.0)
opentelemetry-exporter-otlp (0.30.0)
google-protobuf (>= 3.18)
googleapis-common-protos-types (~> 1.3)
opentelemetry-api (~> 1.1)
opentelemetry-common (~> 0.20)
opentelemetry-sdk (~> 1.2)
opentelemetry-semantic_conventions
opentelemetry-instrumentation-action_mailer (0.4.0)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-active_support (~> 0.7)
opentelemetry-instrumentation-base (~> 0.23.0)
opentelemetry-instrumentation-action_pack (0.12.3)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-base (~> 0.23.0)
opentelemetry-instrumentation-rack (~> 0.21)
opentelemetry-instrumentation-action_view (0.9.0)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-active_support (~> 0.7)
opentelemetry-instrumentation-base (~> 0.23.0)
opentelemetry-instrumentation-active_job (0.8.0)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-base (~> 0.23.0)
opentelemetry-instrumentation-active_record (0.9.0)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-base (~> 0.23.0)
opentelemetry-instrumentation-active_storage (0.1.1)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-active_support (~> 0.7)
opentelemetry-instrumentation-base (~> 0.23.0)
opentelemetry-instrumentation-active_support (0.8.0)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-base (~> 0.23.0)
opentelemetry-instrumentation-base (0.23.0)
opentelemetry-api (~> 1.0)
opentelemetry-common (~> 0.21)
opentelemetry-registry (~> 0.1)
opentelemetry-instrumentation-concurrent_ruby (0.22.0)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-base (~> 0.23.0)
opentelemetry-instrumentation-rack (0.26.0)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-base (~> 0.23.0)
opentelemetry-instrumentation-rails (0.36.0)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-action_mailer (~> 0.4.0)
opentelemetry-instrumentation-action_pack (~> 0.12.0)
opentelemetry-instrumentation-action_view (~> 0.9.0)
opentelemetry-instrumentation-active_job (~> 0.8.0)
opentelemetry-instrumentation-active_record (~> 0.9.0)
opentelemetry-instrumentation-active_storage (~> 0.1.0)
opentelemetry-instrumentation-active_support (~> 0.8.0)
opentelemetry-instrumentation-base (~> 0.23.0)
opentelemetry-instrumentation-concurrent_ruby (~> 0.22.0)
opentelemetry-propagator-xray (0.24.0)
opentelemetry-api (~> 1.0)
opentelemetry-registry (0.4.0)
opentelemetry-api (~> 1.1)
opentelemetry-sdk (1.8.0)
opentelemetry-api (~> 1.1)
opentelemetry-common (~> 0.20)
opentelemetry-registry (~> 0.2)
opentelemetry-semantic_conventions
opentelemetry-semantic_conventions (1.11.0)
opentelemetry-api (~> 1.0)
orm_adapter (0.5.0)
ostruct (0.6.0)
overcommit (0.60.0)
@ -836,7 +891,6 @@ DEPENDENCIES
cssbundling-rails
cucumber-rails
database_cleaner
datadog
deface (~> 1.9)
delayed_job_active_record
devise (~> 4.9.4)
@ -876,6 +930,10 @@ DEPENDENCIES
omniauth-rails_csrf_protection (~> 1.0)
omniauth-saml
omniauth_openid_connect
opentelemetry-exporter-otlp
opentelemetry-instrumentation-rails
opentelemetry-propagator-xray
opentelemetry-sdk
overcommit
pg (~> 1.5)
pg_search
@ -907,7 +965,6 @@ DEPENDENCIES
shoulda-matchers
silencer
simplecov
sneaky-save!
sprockets-rails
tailwindcss-rails (~> 2.4)
timecop

View file

@ -0,0 +1,18 @@
# frozen_string_literal: true
if ENV['OTEL_ENABLED'] == 'true'
require 'opentelemetry/sdk'
require 'opentelemetry/instrumentation/rails'
OpenTelemetry::SDK.configure do |config|
if ENV['OTEL_XRAY_ENABLED'] == 'true'
require 'opentelemetry-propagator-xray'
# The X-Ray ID Generator generates spans with X-Ray backend compliant IDs
config.id_generator = OpenTelemetry::Propagator::XRay::IDGenerator
# The X-Ray Propagator injects the X-Ray Tracing Header into downstream calls
config.propagators = [OpenTelemetry::Propagator::XRay::TextMapPropagator.new]
end
config.use_all # enables all instrumentation!
end
end