自动仪表化

在Ruby中,通过仪表化包以及最常用的opentelemetry-instrumentation-all包进行自动仪表化。这些被称为仪表化库。

例如,如果您正在使用Rails并启用仪表化,则您运行的Rails应用程序将自动生成有关控制器的入站请求的遥测数据。

配置所有仪表化库

使用仪表化库的推荐方式是使用opentelemetry-instrumentation-all包:

gem 'opentelemetry-sdk'
gem 'opentelemetry-exporter-otlp'
gem 'opentelemetry-instrumentation-all'

并在应用程序生命周期的早期进行配置。以下是使用Rails初始化程序的示例:

# config/initializers/opentelemetry.rb
require 'opentelemetry/sdk'
require 'opentelemetry/exporter/otlp'
require 'opentelemetry/instrumentation/all'
OpenTelemetry::SDK.configure do |c|
  c.service_name = '<YOUR_SERVICE_NAME>'
  c.use_all() # 启用所有的仪表化!
end

这将安装所有仪表化库并启用与应用程序中使用的库相匹配的库。

覆盖特定仪表化库的配置

如果您正在启用所有的仪表化但想要覆盖特定库的配置,可以调用带有配置映射参数的use_all方法,其中键表示库,值是其特定的配置参数。

例如,以下是如何将所有的仪表化安装到应用程序中,除了Redis仪表化库:

require 'opentelemetry/sdk'
require 'opentelemetry/instrumentation/all'

OpenTelemetry::SDK.configure do |c|
  config = {'OpenTelemetry::Instrumentation::Redis' => { enabled: false }}
  c.use_all(config)
end

要覆盖更多的仪表化库,请在config映射中添加另一个条目。

配置特定的仪表化库

如果您希望更有选择地仅安装和使用特定的仪表化库,也可以做到。以下是如何仅使用SinatraFaraday,其中Faraday使用了额外的配置参数。

首先,安装您想要使用的特定仪表化库:

gem install opentelemetry-instrumentation-sinatra
gem install opentelemetry-instrumentation-faraday

然后对它们进行配置:

require 'opentelemetry/sdk'

# 安装所有兼容的仪表化库,使用默认配置
OpenTelemetry::SDK.configure do |c|
  c.use 'OpenTelemetry::Instrumentation::Sinatra'
  c.use 'OpenTelemetry::Instrumentation::Faraday', { opt: 'value' }
end

下一步操作

仪表化库是生成有关您的Ruby应用程序的许多有用遥测数据的最简单方法。但是,它们不会生成与您的应用程序逻辑相关的数据!要做到这一点,您需要使用来自仪表化库的自动仪表化来丰富手动仪表化

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