diff --git a/manifests/ruby.yml b/manifests/ruby.yml index f36e80f4568..db9c7c5a89e 100644 --- a/manifests/ruby.yml +++ b/manifests/ruby.yml @@ -1148,7 +1148,10 @@ manifest: - weblog_declaration: "*": irrelevant rails72: v2.23.0-dev - tests/ffe/test_flag_eval_metrics.py: missing_feature + tests/ffe/test_flag_eval_metrics.py: + - weblog_declaration: + "*": irrelevant + rails72: v2.31.0-dev tests/integration_frameworks/llm/anthropic/test_anthropic_llmobs.py::TestAnthropicLlmObsMessages::test_create_error: bug (MLOB-1234) tests/integrations/crossed_integrations/test_kafka.py::Test_Kafka: - weblog_declaration: diff --git a/utils/build/docker/ruby/rails72/Gemfile b/utils/build/docker/ruby/rails72/Gemfile index 528dd60aaab..ef4fbd5c11a 100644 --- a/utils/build/docker/ruby/rails72/Gemfile +++ b/utils/build/docker/ruby/rails72/Gemfile @@ -10,12 +10,15 @@ gem 'bootsnap', require: false gem 'ruby-kafka', '~> 1.5.0' gem 'opentelemetry-api', '~> 1.5.0' gem 'opentelemetry-sdk', '~> 1.8.0' +gem 'opentelemetry-common', '>= 0.23.0' +gem 'opentelemetry-metrics-sdk', '>= 0.8' +gem 'opentelemetry-exporter-otlp-metrics', '>= 0.6' # AppSec related dependencies gem 'devise', '~> 4.9' gem 'faraday', '~> 2.13.0' gem 'faraday-follow_redirects', '~> 0.3' # FFE related dependencies -gem 'openfeature-sdk', '~> 0.4' +gem 'openfeature-sdk', '~> 0.5' # v0.5.1+ required for provider hooks support group :development do gem 'pry-byebug' diff --git a/utils/build/docker/ruby/rails72/app/controllers/internal_controller.rb b/utils/build/docker/ruby/rails72/app/controllers/internal_controller.rb index 18e1efbd3e1..f28f9742dc3 100644 --- a/utils/build/docker/ruby/rails72/app/controllers/internal_controller.rb +++ b/utils/build/docker/ruby/rails72/app/controllers/internal_controller.rb @@ -40,6 +40,18 @@ def flush worker.send(:send_events, *worker.dequeue) end + # Flush OTel metrics + begin + if defined?(::OpenTelemetry) && defined?(::OpenTelemetry::SDK::Metrics::MeterProvider) + meter_provider = ::OpenTelemetry.meter_provider + if meter_provider.is_a?(::OpenTelemetry::SDK::Metrics::MeterProvider) + meter_provider.force_flush + end + end + rescue => e + Rails.logger.warn("Failed to flush OTel metrics: #{e.class}: #{e}") + end + render plain: 'OK' end end