Integrations
Ruby

Ruby

Add OpenTelemetry instrumentation to your Ruby applications.

Overview

Ruby applications can be instrumented with OpenTelemetry to capture traces, metrics, and logs. The Ruby SDK provides auto-instrumentation for Rails and other popular frameworks.

Install

Add the OpenTelemetry gems to your Gemfile:

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

Then run:

bundle install

Configure

1. Set environment variables

export OTEL_SERVICE_NAME="my-ruby-service"
export OTEL_EXPORTER_OTLP_ENDPOINT="https://ingress.us-east-2.rocketgraph.app"
export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer YOUR_ROCKETLOGS_API_TOKEN"

2. Configure in your application

For Rails, create an initializer:

# config/initializers/opentelemetry.rb
require 'opentelemetry/sdk'
require 'opentelemetry/exporter/otlp'
require 'opentelemetry/instrumentation/all'

OpenTelemetry::SDK.configure do |c|
  c.service_name = ENV['OTEL_SERVICE_NAME'] || 'my-ruby-service'
  c.use_all # Enables all auto-instrumentation
end

For non-Rails Ruby applications

require 'opentelemetry/sdk'
require 'opentelemetry/exporter/otlp'

OpenTelemetry::SDK.configure do |c|
  c.service_name = 'my-ruby-app'
  c.add_span_processor(
    OpenTelemetry::SDK::Trace::Export::BatchSpanProcessor.new(
      OpenTelemetry::Exporter::OTLP::Exporter.new
    )
  )
end

# Get a tracer
tracer = OpenTelemetry.tracer_provider.tracer('my-tracer')

# Create spans
tracer.in_span('my-operation') do |span|
  span.set_attribute('user.id', user_id)
  # Your code here
end

Supported libraries

Auto-instrumentation is available for:

  • Rails, Sinatra, Rack
  • ActiveRecord, PG, MySQL2, Redis
  • Faraday, Net::HTTP, RestClient
  • Sidekiq, Resque, Delayed Job
  • And more via OpenTelemetry Registry