The OpenTelemetry aws-lambda
gem is a community-maintained instrumentation for AWS Lambda functions.
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.
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
If using a Lambda Layer is not an option for your given setup, you can programmatically instrument a handler by using the OpenTelemetry::Instrumentation::AwsLambda::Wrap
module.
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
# Lambda Handler
module Example
class Handler
extend OpenTelemetry::Instrumentation::AwsLambda::Wrap
def self.process(event:, context:)
puts event.inspect
end
instrument_handler :process
end
end
To run the example:
cd
to the examples directory and install gemscd example
bundle install
- 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.
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 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.
Apache 2.0 license. See LICENSE for more information.