xrayconfig

package module
v0.38.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 30, 2023 License: Apache-2.0 Imports: 8 Imported by: 5

README

Go Reference Apache License

This module provides recommended configuration options for AWS Lambda Instrumentation when using AWS X-Ray. By using this configuration, trace context will automatically be extracted from incoming requests with the X-Amzn-Trace-Id header if present. Trace context will also always be injected using the X-Amzn-Trace-Id format into downstream requests from the Lambda function.

Installation

go get -u go.opentelemetry.io/contrib/instrumentation/github.com/aws/aws-lambda-go/otellambda/xrayconfig

Usage

Create a sample Lambda Go application instrumented by the otellambda package such as below.

package main

import (
	"context"
	"fmt"
	"github.com/aws/aws-lambda-go/lambda"
	"go.opentelemetry.io/contrib/instrumentation/github.com/aws/aws-lambda-go/otellambda"
)

type MyEvent struct {
	Name string `json:"name"`
}

func HandleRequest(ctx context.Context, name MyEvent) (string, error) {
	return fmt.Sprintf("Hello %s!", name.Name ), nil
}

func main() {
	lambda.Start(otellambda.InstrumentHandler(HandleRequest))
}

Now configure the instrumentation with the provided options to export traces to AWS X-Ray via the OpenTelemetry Collector running as a Lambda Extension. Instructions for running the OTel Collector as a Lambda Extension can be found in the AWS OpenTelemetry Documentation.

// Add import
import "go.opentelemetry.io/contrib/instrumentation/github.com/aws/aws-lambda-go/otellambda/xrayconfig"

// add options to InstrumentHandler call
func main() {
	lambda.Start(otellambda.InstrumentHandler(HandleRequest, xrayconfig.WithRecommendedOptions()...))
}
Instrumentation Option Recommended Value Exported As
WithTracerProvider An sdktrace.TracerProvider configured to export in batches to an OTel Collector running locally in Lambda Not individually exported. Can only be used via WithRecommendedOptions()
WithFlusher An otellambda.Flusher which yields before calling ForceFlush on the configured sdktrace.TracerProvider. Yielding mitigates data delays caused by asynchronous nature of batching TracerProvider when in Lambda Not individually exported. Can only be used via WithRecommendedOptions()
WithEventToCarrier Function which reads X-Ray TraceID from Lambda environment and inserts it into a propagtation.TextMapCarrier Individually exported as WithEventToCarrier(), also included in WithRecommendedOptions()
WithPropagator An xray.propagator Individually exported as WithPropagator(), also included in WithRecommendedOptions()

License

Apache 2.0 - See LICENSE for more information.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewTracerProvider added in v0.27.0

func NewTracerProvider(ctx context.Context) (*sdktrace.TracerProvider, error)

NewTracerProvider returns a TracerProvider configured with an exporter, ID generator, and lambda resource detector to send trace data to AWS X-Ray via a Collector instance listening on localhost.

func WithEventToCarrier added in v0.27.0

func WithEventToCarrier() otellambda.Option

WithEventToCarrier returns an otellambda.Option to enable an otellambda.EventToCarrier function which reads the XRay trace information from the environment and returns this information in a propagation.HeaderCarrier.

func WithPropagator added in v0.27.0

func WithPropagator() otellambda.Option

WithPropagator returns an otellambda.Option to enable the xray.Propagator.

func WithRecommendedOptions added in v0.27.0

func WithRecommendedOptions(tp *sdktrace.TracerProvider) []otellambda.Option

WithRecommendedOptions returns a list of all otellambda.Option(s) recommended for the otellambda package when using AWS XRay.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL