OpenTelemetry gRPC Instrumentation

Gem Version GitHub Actions CI Status

OpenTelemetry instrumentation for users of the gRPC gem.

[!WARNING] Right now, the gem only instruments outbound requests to gRPC services

How do I get started?

Install the gem using:

gem install opentelemetry-instrumentation-grpc

Or, if you use bundler, include opentelemetry-instrumentation-grpc 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::Grpc', {
      peer_service: "Example",
      allowed_metadata_headers: [],
    }
  end

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

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

Examples

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

Development

Integration tests rely on a real gRPC server that is started by relevant tests. The proto definition is located in test/support/proto/ping.proto. Making changes to the proto definition requires re-creating gRPC-generated code. To do this, run the following command:

bundle exec grpc_tools_ruby_protoc --ruby_out=. --grpc_out=. test/support/proto/ping.proto

How can I get involved?

The opentelemetry-instrumentation-grpc 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 on our GitHub Discussions, Slack Channel 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-grpc gem is distributed under the Apache 2.0 license. See LICENSE for more information.