Module: Foam::Ruby::OtelSetup
- Defined in:
- lib/foam/ruby/otel_setup.rb
Class Method Summary collapse
- .configure!(config) ⇒ Object
- .configure_logs(config) ⇒ Object
- .configure_traces(config) ⇒ Object
- .ensure_log_processor_attached! ⇒ Object
- .ensure_processor_attached! ⇒ Object
Class Method Details
.configure!(config) ⇒ Object
14 15 16 17 |
# File 'lib/foam/ruby/otel_setup.rb', line 14 def configure!(config) configure_traces(config) configure_logs(config) end |
.configure_logs(config) ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/foam/ruby/otel_setup.rb', line 52 def configure_logs(config) @foam_log_processor = OpenTelemetry::SDK::Logs::Export::BatchLogRecordProcessor.new( OpenTelemetry::Exporter::OTLP::Logs::LogsExporter.new( endpoint: config.logs_endpoint, headers: config.otel_headers ) ) existing = OpenTelemetry.logger_provider if existing.is_a?(OpenTelemetry::SDK::Logs::LoggerProvider) existing.add_log_record_processor(@foam_log_processor) else resource = OpenTelemetry::SDK::Resources::Resource.create( "service.name" => config.service_name, "deployment.environment" => ENV["RAILS_ENV"] || ENV["RACK_ENV"] || "production" ) provider = OpenTelemetry::SDK::Logs::LoggerProvider.new(resource: resource) provider.add_log_record_processor(@foam_log_processor) OpenTelemetry.logger_provider = provider end @attached_logger_provider = OpenTelemetry.logger_provider end |
.configure_traces(config) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/foam/ruby/otel_setup.rb', line 19 def configure_traces(config) @foam_span_processor = OpenTelemetry::SDK::Trace::Export::BatchSpanProcessor.new( OpenTelemetry::Exporter::OTLP::Exporter.new( endpoint: config.traces_endpoint, headers: config.otel_headers ) ) existing = OpenTelemetry.tracer_provider if existing.is_a?(OpenTelemetry::SDK::Trace::TracerProvider) existing.add_span_processor(@foam_span_processor) else OpenTelemetry::SDK.configure do |c| c.service_name = config.service_name c.add_span_processor(@foam_span_processor) c.use_all end end @attached_provider = OpenTelemetry.tracer_provider end |
.ensure_log_processor_attached! ⇒ Object
76 77 78 79 80 81 82 83 84 85 |
# File 'lib/foam/ruby/otel_setup.rb', line 76 def ensure_log_processor_attached! return unless @foam_log_processor current = OpenTelemetry.logger_provider return if current.equal?(@attached_logger_provider) return unless current.is_a?(OpenTelemetry::SDK::Logs::LoggerProvider) current.add_log_record_processor(@foam_log_processor) @attached_logger_provider = current end |
.ensure_processor_attached! ⇒ Object
41 42 43 44 45 46 47 48 49 50 |
# File 'lib/foam/ruby/otel_setup.rb', line 41 def ensure_processor_attached! return unless @foam_span_processor current = OpenTelemetry.tracer_provider return if current.equal?(@attached_provider) return unless current.is_a?(OpenTelemetry::SDK::Trace::TracerProvider) current.add_span_processor(@foam_span_processor) @attached_provider = current end |