Email Service
This service will send a confirmation email to the user when an order is placed.
Initializing Tracing
You will need to require the core OpenTelemetry SDK and exporter Ruby gems, as well as any gem that will be needed for auto-instrumentation libraries (ie: Sinatra)
require "opentelemetry/sdk"
require "opentelemetry/exporter/otlp"
require "opentelemetry/instrumentation/sinatra"
The Ruby SDK uses OpenTelemetry standard environment variables to configure OTLP export, resource attributes, and service name automatically. When initializing the OpenTelemetry SDK, you will also specify which auto-instrumentation libraries to leverage (ie: Sinatra)
OpenTelemetry::SDK.configure do |c|
c.use "OpenTelemetry::Instrumentation::Sinatra"
end
Traces
Add attributes to auto-instrumented spans
Within the execution of auto-instrumented code you can get current span from context.
current_span = OpenTelemetry::Trace.current_span
Adding multiple attributes to a span is accomplished using add_attributes
on
the span object.
current_span.add_attributes({
"app.order.id" => data.order.order_id,
})
Adding only a single attribute can be accomplished using set_attribute
on the
span object.
span.set_attribute("app.email.recipient", data.email)
Create new spans
New spans can be created and placed into active context using in_span
from an
OpenTelemetry Tracer object. When used in conjunction with a do..end
block,
the span will automatically be ended when the block ends execution.
tracer = OpenTelemetry.tracer_provider.tracer('emailservice')
tracer.in_span("send_email") do |span|
# logic in context of span here
end
Metrics
TBD
Logs
TBD