-
Notifications
You must be signed in to change notification settings - Fork 3
Open
Description
It would be nice to allow for a custom exporter, or a span processors to be passed in during initialization. Some integrations will require different auth headers or other configuration.
Something like:
module Traceloop
module SDK
class Traceloop
def initialize(exporter = default_exporter)
OpenTelemetry::SDK.configure do |c|
c.add_span_processor(
OpenTelemetry::SDK::Trace::Export::SimpleSpanProcessor.new(exporter)
)
puts "Traceloop exporting traces to #{exporter.instance_variable_get("@uri")}"
end
@tracer = OpenTelemetry.tracer_provider.tracer("Traceloop")
end
private
def default_exporter
OpenTelemetry::Exporter::OTLP::Exporter.new(
endpoint: "#{ENV.fetch("TRACELOOP_BASE_URL", "https://api.traceloop.com")}/v1/traces",
headers: { "Authorization" => "Bearer #{ENV.fetch("TRACELOOP_API_KEY")}" }
)
end
end
end
end
traceloop = Traceloop::SDK::Traceloop.new(
OpenTelemetry::Exporter::OTLP::Exporter.new(
endpoint: "https://custom.com/otel",
headers: { "x-api-key": "someapikey" }
)
Happy to take a stab at this if you'd like.
Metadata
Metadata
Assignees
Labels
No labels