Skip to content

LoyalSphere/opentelemetry-instrumentation-rack-ruby2.6-experimental

Repository files navigation

OpenTelemetry Rack Instrumentation Ruby 2.6 Experimental

Note: This is a version of the opentelemetry-instrumentation-rack v0.23.4 gem modified to run on Ruby 2.6 and up. This has been given the version number v0.22.23.4.

This gem is required by the modded opentelemetry-instrumentation-grape gem (v0.0.1.4) that was adapted to run on Ruby 2.6 and up. This modded gem can be found at https://github.com/LoyalSphere/opentelemetry-instrumentation-grape-ruby2.6-experimental

The Rack instrumentation is a community-maintained instrumentation for the Rack web server interface.

How do I get started?

Install the gem using:

gem install opentelemetry-instrumentation-rack

Or, if you use bundler, include opentelemetry-instrumentation-rack in your Gemfile.

Usage

To use the instrumentation, call use with the name of the instrumentation:

OpenTelemetry::SDK.configure do |c|
  c.use 'OpenTelemetry::Instrumentation::Rack'
end

Alternatively, you can also call use_all to install all the available instrumentation.

OpenTelemetry::SDK.configure do |c|
  c.use_all
end

Controlling span name cardinality

By default we will set the rack span name to match the format "HTTP #{method}" (ie. HTTP GET). There are different ways to control span names with this instrumentation.

Enriching rack spans

We surface a hook to easily retrieve the rack span within the context of a request so that you can add information to or rename your server span.

This is how the rails controller instrumentation is able to rename the span names to match the controller and action that process the request. See https://github.com/open-telemetry/opentelemetry-ruby-contrib/blob/main/instrumentation/action_pack/lib/opentelemetry/instrumentation/action_pack/patches/action_controller/metal.rb#L15-L16 for an example.

High cardinality example

You can pass in an url quantization lambda that simply uses the URL path, the result is you will end up with high cardinality span names, however this may be acceptable in your deployment and is easy configurable using the following example.

OpenTelemetry::SDK.configure do |c|
  c.use 'OpenTelemetry::Instrumentation::Rack', { url_quantization: ->(path, _env) { path.to_s } }
end

Examples

Example usage can be seen in the ./example/trace_demonstration.rb file here

How can I get involved?

The opentelemetry-instrumentation-rack gem source is on github, along with related gems including opentelemetry-api and opentelemetry-sdk.

The OpenTelemetry Ruby gems are maintained by the OpenTelemetry-Ruby special interest group (SIG). You can get involved by joining us in GitHub Discussions or attending our weekly meeting. See the meeting calendar for dates and times. For more information on this and other language SIGs, see the OpenTelemetry community page.

License

The opentelemetry-instrumentation-rack gem is distributed under the Apache 2.0 license. See LICENSE for more information.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages