Instrument your Go Lambda function for Splunk Observability Cloud
Follow these steps to instrument Go lambda functions in AWS using OpenTelemetry to send traces to Splunk Observability Cloud.
To instrument a Go function in AWS Lambda for Splunk APM, follow these steps:
-
Run the following commands to install the
otellambda
and the Splunk OTel Go distribution:go get -u go.opentelemetry.io/contrib/instrumentation/github.com/aws/aws-lambda-go/otellambda go get -u github.com/signalfx/splunk-otel-go/distro
-
Create a wrapper for the OpenTelemetry instrumentation in your function’s code. For example:
package main import ( "context" "fmt" "github.com/aws/aws-lambda-go/lambda" "github.com/signalfx/splunk-otel-go/distro" "go.opentelemetry.io/contrib/instrumentation/github.com/aws/aws-lambda-go/otellambda" "go.opentelemetry.io/otel" ) func main() { distro.Run() flusher := otel.GetTracerProvider().(otellambda.Flusher) lambda.Start(otellambda.InstrumentHandler(HandleRequest, otellambda.WithFlusher(flusher))) } type MyEvent struct { Name string `json:"name"` } func HandleRequest(ctx context.Context, name MyEvent) (string, error) { return fmt.Sprintf("Hello %s!", name.Name), nil }
Note: For a full example, see OpenTelemetry Lambda tracing examples on GitHub. -
Configure the required environment variables. See Configure the Splunk OpenTelemetry Lambda layer.
See Instrument your AWS Lambda function for Splunk Observability Cloud for more information.