https://github.com/uptrace/uptrace-ruby
OpenTelemetry Ruby distribution for Uptrace
https://github.com/uptrace/uptrace-ruby
distributed-tracing metrics opentelemetry ruby tracing uptrace
Last synced: 12 months ago
JSON representation
OpenTelemetry Ruby distribution for Uptrace
- Host: GitHub
- URL: https://github.com/uptrace/uptrace-ruby
- Owner: uptrace
- License: bsd-2-clause
- Created: 2020-06-01T14:09:13.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2025-03-17T11:19:45.000Z (over 1 year ago)
- Last Synced: 2025-06-09T23:07:16.370Z (about 1 year ago)
- Topics: distributed-tracing, metrics, opentelemetry, ruby, tracing, uptrace
- Language: Ruby
- Homepage: https://uptrace.dev/get/opentelemetry-ruby
- Size: 186 KB
- Stars: 3
- Watchers: 3
- Forks: 1
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Uptrace Ruby exporter for OpenTelemetry

[](https://uptrace.dev/get/opentelemetry-ruby)
[](https://t.me/uptrace)
## Introduction
uptrace-ruby is an OpenTelemery distribution configured to export
[traces](https://uptrace.dev/opentelemetry/distributed-tracing) to Uptrace.
## Quickstart
Install uptrace-ruby:
```bash
gem install uptrace
```
Run the [basic example](example/basic) below using the DSN from the Uptrace project settings page.
```ruby
#!/usr/bin/env ruby
# frozen_string_literal: true
require 'rubygems'
require 'bundler/setup'
require 'uptrace'
# Configure OpenTelemetry with sensible defaults.
# Copy your project DSN here or use UPTRACE_DSN env var.
Uptrace.configure_opentelemetry(dsn: '') do |c|
# c is OpenTelemetry::SDK::Configurator
c.service_name = 'myservice'
c.service_version = '1.0.0'
c.resource = OpenTelemetry::SDK::Resources::Resource.create(
'deployment.environment' => 'production'
)
end
# Create a tracer. Usually, tracer is a global variable.
tracer = OpenTelemetry.tracer_provider.tracer('my_app_or_gem', '0.1.0')
# Create a root span (a trace) to measure some operation.
tracer.in_span('main-operation', kind: :client) do |main|
tracer.in_span('GET /posts/:id') do |child1|
child1.set_attribute('http.method', 'GET')
child1.set_attribute('http.route', '/posts/:id')
child1.set_attribute('http.url', 'http://localhost:8080/posts/123')
child1.set_attribute('http.status_code', 200)
child1.record_exception(ArgumentError.new('error1'))
end
tracer.in_span('SELECT') do |child2|
child2.set_attribute('db.system', 'mysql')
child2.set_attribute('db.statement', 'SELECT * FROM posts LIMIT 100')
end
puts("trace URL: #{Uptrace.trace_url(main)}")
end
# Send buffered spans and free resources.
OpenTelemetry.tracer_provider.shutdown
```
## Links
- [Examples](example)
- [Documentation](https://uptrace.dev/get/opentelemetry-ruby)
- [OpenTelemetry Rails](https://uptrace.dev/guides/opentelemetry-rails)
- [OpenTelemetry Sinatra](https://uptrace.dev/guides/opentelemetry-sinatra)