You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置Ruby on Rails本地环境对接AWS X-Ray OTel SDK遇初始化错误

解决OpenTelemetry初始化报错:uninitialized constant Trace

错误原因

代码中使用的Trace::Export::BatchSpanProcessor不属于全局命名空间,该常量是OpenTelemetry SDK内部组件,必须使用完整限定命名空间才能访问,因此触发OpenTelemetry::SDK::ConfigurationError。

修正步骤

  • 修正BatchSpanProcessor的命名空间
    将Trace::Export::BatchSpanProcessor替换为OpenTelemetry::SDK::Trace::Export::BatchSpanProcessor。

  • (可选)完善OTLP Exporter端点配置
    OTLP Exporter要求端点为完整URL(包含协议和路径),建议将endpoint="localhost:2000"修改为endpoint="http://localhost:2000/v1/traces",避免后续连接失败。

修正后的完整初始化代码

require 'opentelemetry-api'
require 'opentelemetry-exporter-otlp'
require 'opentelemetry-sdk'
require 'opentelemetry-propagator-xray'

OpenTelemetry::SDK.configure do |c|
    c.service_name = 'test-app'
    
    c.span_processors = [
      OpenTelemetry::SDK::Trace::Export::BatchSpanProcessor.new(
          OpenTelemetry::Exporter::OTLP::Exporter.new(
            endpoint: "http://localhost:2000/v1/traces"
          )
      )
    ]

    c.id_generator = OpenTelemetry::Propagator::XRay::IDGenerator
    c.propagators = [OpenTelemetry::Propagator::XRay::TextMapPropagator.new]
  
    c.use 'OpenTelemetry::Instrumentation::AwsSdk', {
      suppress_internal_instrumentation: true
    }
  
    c.use 'OpenTelemetry::Instrumentation::Rails'
    c.use 'OpenTelemetry::Instrumentation::Rack'
    c.use 'OpenTelemetry::Instrumentation::ActionPack'
    c.use 'OpenTelemetry::Instrumentation::ActiveSupport'
    c.use 'OpenTelemetry::Instrumentation::ActionView'
    c.use 'OpenTelemetry::Instrumentation::ActiveRecord'
  
    c.use 'OpenTelemetry::Instrumentation::Faraday'
end

额外检查

  1. 确保已执行bundle install安装所有Gem依赖
  2. 确认本地Docker中的OTLP接收服务(如Jaeger、OpenTelemetry Collector)确实监听了2000端口的HTTP端点

内容的提问来源于stack exchange,提问作者Keimille

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 20:05:22