Class: Bitfab::Otel::DirectExporter
- Inherits:
-
Object
- Object
- Bitfab::Otel::DirectExporter
- Defined in:
- lib/bitfab/otel.rb
Overview
Encodes carrier spans as OTLP/JSON and posts them straight to Bitfab.
Instance Method Summary collapse
- #export(spans, timeout: nil) ⇒ Object
- #force_flush(timeout: nil) ⇒ Object
-
#initialize(direct_sender:, max_request_bytes:, max_request_batch_size:, export_concurrency:) ⇒ DirectExporter
constructor
A new instance of DirectExporter.
- #shutdown(timeout: nil) ⇒ Object
Constructor Details
#initialize(direct_sender:, max_request_bytes:, max_request_batch_size:, export_concurrency:) ⇒ DirectExporter
Returns a new instance of DirectExporter.
234 235 236 237 238 239 |
# File 'lib/bitfab/otel.rb', line 234 def initialize(direct_sender:, max_request_bytes:, max_request_batch_size:, export_concurrency:) @direct_sender = direct_sender @max_request_bytes = max_request_bytes @max_request_batch_size = max_request_batch_size @export_concurrency = export_concurrency end |
Instance Method Details
#export(spans, timeout: nil) ⇒ Object
241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 |
# File 'lib/bitfab/otel.rb', line 241 def export(spans, timeout: nil) spans = spans.to_a return SUCCESS if spans.empty? begin encoded = spans.map { |span| Encoder.encode_span(span) } envelope = Encoder.request_envelope(spans.first) rescue => e Bitfab.warn_once( "otel-encode-failed", "failed to encode an OpenTelemetry span batch (#{e.})" ) return FAILURE end batches = build_request_batches(envelope, encoded) results = send_batches(envelope, batches) results.all? ? SUCCESS : FAILURE end |
#force_flush(timeout: nil) ⇒ Object
261 262 263 |
# File 'lib/bitfab/otel.rb', line 261 def force_flush(timeout: nil) SUCCESS end |
#shutdown(timeout: nil) ⇒ Object
265 266 267 |
# File 'lib/bitfab/otel.rb', line 265 def shutdown(timeout: nil) SUCCESS end |