## Global Trace Provider
----------------------------------------------------------------
OpenTelemetry.configure do |config|
config.service_name = "my_app_or_library"
config.service_version = "1.1.1"
config.exporter = OpenTelemetry::Exporter.new(variant: :stdout)
end
trace = OpenTelemetry.trace_provider("my_app_or_library", "1.1.1").trace
trace = OpenTelemetry.trace_provider do |provider|
provider.service_name = "my_app_or_library"
provider.service_version = "1.1.1"
end.trace
## Trace Providers as Objects With Unique Configuration
----------------------------------------------------------------
provider_a = OpenTelemetry::TraceProvider.new("my_app_or_library", "1.1.1")
provider_a.exporter = OpenTelemetry::Exporter.new(variant: :stdout)
provider_b = OpenTelementry::TraceProvider.new do |config|
config.service_name = "my_app_or_library"
config.service_version = "1.1.1"
config.exporter = OpenTelemetry::Exporter.new(variant: :stdout)
end
## Getting a Trace From a Provider Object
----------------------------------------------------------------
trace = provider_a.trace # Inherit all configuration from the Provider Object
trace = provider_a.trace("microservice foo", "1.2.3") # Override the configuration
trace = provider_a.trace do |provider|
provider.service_name = "microservice foo"
provider.service_version = "1.2.3"
end.trace
## Creating Spans Using a Trace
----------------------------------------------------------------
trace.in_span("request") do |span|
span.set_attribute("verb", "GET")
span.set_attribute("url", "http://example.com/foo")
span.add_event("dispatching to handler")
trace.in_span("handler") do |child_span|
child_span.add_event("handling request")
trace.in_span("db") do |child_span|
child_span.add_event("querying database")
end
end
end