Sitelet https://web.archive.org/web/20210315015450/https://github.com/open-telemetry/opentelemetry-ruby
Skip to content
main
Switch branches/tags
Go to file
Code

Latest commit

* Initial commit

* Fix some mistakes in initial commit

* Basic implementation of the ottrace injector

* Added sampled header

* Use lockstep version

Co-authored-by: Francis Bogsanyi <francis.bogsanyi@shopify.com>

* Naive implementation of 64 bit 16HEXDIGIT trace id truncation

* Initial implementation of the extractor

* removed untested flow

* More test cases. One of which covers a case for malformed trace ids.

* checking for valid incoming ids

* Initial baggage handling for injector

* Initial extractor implementation

* Temp fix to continue testing

* Remove puts debugging

* Test cases for invalid baggage keys/values

* Add test cases for overriding default setter

* small refactoring to functional style

* Overriding the injector getter

* Refactoring Extract Class

* Extract class refactoring

* Expose text map injector/extractor to propagator

* Enumerable#filter was introduced in Ruby 2.6

* Fix trace_id truncation and examples

* lockstep version numbers

* rubocop fix

* rubocop fix

* more rubocop fixes

* Remove monkey patch

* extract methods to reduce assignment complexity

* safe navigation and invert logic because langauge

* oops missed this build_context

* Rubocop assignment logic fix

* high level yard docs

* More details in the README

* Inline to default value

* Add initial changelog

* Update injector to reflect specification

Related #644 (comment)

* Use service locator instead of constructor injection

* Use service locator instead of dependency injection

* Add OTTrace to release process

* Silence warnings and add simplecov

* Fix constant already defined errors

* fix constant warnings and remove duplicate test data setup

Co-authored-by: Francis Bogsanyi <francis.bogsanyi@shopify.com>
a8dc3b5

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time

README.md

OpenTelemetry Ruby

Slack channel CI Apache License

The Ruby OpenTelemetry client.

Contributing

We'd love your help! Use tags good first issue and help wanted to get started with the project.

Please review the contribution instructions for important information on setting up your environment, running the tests, and opening pull requests.

The Ruby special interest group (SIG) meets regularly. See the OpenTelemetry community page repo for information on this and other language SIGs.

Approvers (@open-telemetry/ruby-approvers):

Find more about the approver role in community repository.

Maintainers (@open-telemetry/ruby-maintainers):

Find more about the maintainer role in community repository.

Installation

This repository includes multiple installable packages. The opentelemetry-api package includes abstract classes and no-op implementations that comprise the OpenTelemetry API following the specification. The opentelemetry-sdk package is the reference implementation of the API.

Libraries that produce telemetry data should only depend on opentelemetry-api, and defer the choice of the SDK to the application developer. Applications may depend on opentelemetry-sdk or another package that implements the API.

Please note that this library is currently in beta for tracing.

The API and SDK packages are available on RubyGems.org, and can be installed via gem:

gem install opentelemetry-api
gem install opentelemetry-sdk

or via Bundler by adding the following to your Gemfile:

gem 'opentelemetry-api'
gem 'opentelemetry-sdk'

followed by:

bundle install

To install development versions of these packages, follow the "Developer Setup" section (below).

Quick Start

require 'opentelemetry/sdk'

# Configure the sdk with default export and context propagation formats
# see SDK#configure for customizing the setup
OpenTelemetry::SDK.configure

# To start a trace you need to get a Tracer from the TracerProvider
tracer = OpenTelemetry.tracer_provider.tracer('my_app_or_gem', '0.1.0')

# create a span
tracer.in_span('foo') do |span|
  # set an attribute
  span.set_attribute('platform', 'osx')
  # add an event
  span.add_event('event in bar')
  # create bar as child of foo
  tracer.in_span('bar') do |child_span|
    # inspect the span
    pp child_span
  end
end

See the API Documentation for more detail, and the opentelemetry examples for a complete example including context propagation.

Instrumentation Libraries

This repository contains instrumentation libraries for many popular Ruby gems, including Rails, Rack, Sinatra, and others, so you can start using OpenTelemetry with minimal changes to your application. See the instrumentation README for more.

Useful links

License

Apache 2.0 - See LICENSE for more information.