邮件服务

当下单时,该服务将向用户发送确认邮件。

邮件服务源代码

初始化追踪

您需要引用核心 OpenTelemetry SDK 和 exporter Ruby gems,以及任何自动插桩库所需的 gem(例如:Sinatra)。

require "opentelemetry/sdk"
require "opentelemetry/exporter/otlp"
require "opentelemetry/instrumentation/sinatra"

Ruby SDK 使用 OpenTelemetry 的标准环境变量自动配置 OTLP 导出、资源属性和服务名称。在初始化 OpenTelemetry SDK 时,您还可以指定要使用哪些自动插桩库(例如:Sinatra)。

OpenTelemetry::SDK.configure do |c|
  c.use "OpenTelemetry::Instrumentation::Sinatra"
end

追踪

为自动插桩的 Span 添加属性

在自动插桩代码的执行过程中,您可以从上下文中获取当前 Span。

current_span = OpenTelemetry::Trace.current_span

使用 Span 对象的 add_attributes 方法可以将多个属性添加到 Span 中。

current_span.add_attributes({
  "app.order.id" => data.order.order_id,
})

使用 Span 对象的 set_attribute 方法可以只添加单个属性。

span.set_attribute("app.email.recipient", data.email)

创建新的 Span

可以使用来自 OpenTelemetry Tracer 对象的 in_span 方法创建新的 Span,并将其放入活动上下文中。当与 do..end 块一起使用时,Span 将在块执行结束时自动结束。

tracer = OpenTelemetry.tracer_provider.tracer('emailservice')
tracer.in_span("send_email") do |span|
  # 这里是 Span 上下文中的逻辑
end

指标

待定

日志

待定

最后修改 December 10, 2023: translate (a4350d6e)