OpenTelemetry AWS-Lambda Instrumentation

The OpenTelemetry aws-lambda gem is a community-maintained instrumentation for AWS Lambda functions.

How do I get started?

Installation of the opentelemetry-instrumentation-aws_lambda gem is handled by the OpenTelemetry Lambda Layer for Ruby.

We do not advise installing the opentelemetry-instrumentation-aws_lambda gem directly into your Ruby lambda. Instead, clone the OpenTelemetry Lambda Layer for Ruby and build the layer locally. Then, save it in your AWS account.

Usage

From the Lambda Layer side, create the wrapper. More information can be found at https://github.com/open-telemetry/opentelemetry-lambda/tree/main/ruby

Below is an example of ruby/src/layer/wrapper.rb, where you can configure the layer to suit your needs before building it:

require 'opentelemetry/sdk'
require 'opentelemetry/instrumentation/aws_lambda'
OpenTelemetry::SDK.configure do |c|
  c.service_name = '<YOUR_SERVICE_NAME>'
  c.use 'OpenTelemetry::Instrumentation::AwsLambda'
end

def otel_wrapper(event:, context:)
  otel_wrapper = OpenTelemetry::Instrumentation::AwsLambda::Handler.new()
  otel_wrapper.call_wrapped(event: event, context: context)
end

Example

To run the example:

  1. cd to the examples directory and install gems
    • cd example
    • bundle install
  2. Run the sample client script
    • ruby trace_demonstration.rb
    • or bundle exec ruby trace_demonstration.rb

This will run SNS publish command, printing OpenTelemetry traces to the console as it goes.

How can I get involved?

The opentelemetry-instrumentation-aws_lambda 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

Apache 2.0 license. See LICENSE for more information.