Skip to content

Commit

Permalink
Add custom tracer options.
Browse files Browse the repository at this point in the history
  • Loading branch information
peterdeme committed Jul 10, 2024
1 parent b144b55 commit 0c0f363
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 3 deletions.
7 changes: 6 additions & 1 deletion ddlambda.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,14 @@ import (
"strings"
"time"

"github.com/aws/aws-lambda-go/lambda"
"gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer"

"github.com/DataDog/datadog-lambda-go/internal/extension"
"github.com/DataDog/datadog-lambda-go/internal/logger"
"github.com/DataDog/datadog-lambda-go/internal/metrics"
"github.com/DataDog/datadog-lambda-go/internal/trace"
"github.com/DataDog/datadog-lambda-go/internal/wrapper"
"github.com/aws/aws-lambda-go/lambda"
)

type (
Expand Down Expand Up @@ -71,6 +73,8 @@ type (
// TraceContextExtractor is the function that extracts a root/parent trace context from the Lambda event body.
// See trace.DefaultTraceExtractor for an example.
TraceContextExtractor trace.ContextExtractor
// TracerOptions are additional options passed to the tracer.
TracerOptions []tracer.StartOption
}
)

Expand Down Expand Up @@ -214,6 +218,7 @@ func (cfg *Config) toTraceConfig() trace.Config {
traceConfig.DDTraceEnabled = cfg.DDTraceEnabled
traceConfig.MergeXrayTraces = cfg.MergeXrayTraces
traceConfig.TraceContextExtractor = cfg.TraceContextExtractor
traceConfig.TracerOptions = cfg.TracerOptions
}

if traceConfig.TraceContextExtractor == nil {
Expand Down
7 changes: 5 additions & 2 deletions internal/trace/listener.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ type (
otelTracerEnabled bool
extensionManager *extension.ExtensionManager
traceContextExtractor ContextExtractor
tracerOptions []tracer.StartOption
}

// Config gives options for how the Listener should work
Expand All @@ -43,6 +44,7 @@ type (
UniversalInstrumentation bool
OtelTracerEnabled bool
TraceContextExtractor ContextExtractor
TracerOptions []tracer.StartOption
}
)

Expand All @@ -61,6 +63,7 @@ func MakeListener(config Config, extensionManager *extension.ExtensionManager) L
otelTracerEnabled: config.OtelTracerEnabled,
extensionManager: extensionManager,
traceContextExtractor: config.TraceContextExtractor,
tracerOptions: config.TracerOptions,
}
}

Expand All @@ -82,12 +85,12 @@ func (l *Listener) HandlerStarted(ctx context.Context, msg json.RawMessage) cont
serviceName = "aws.lambda"
}
extensionNotRunning := !l.extensionManager.IsExtensionRunning()
opts := []tracer.StartOption{
opts := append([]tracer.StartOption{
tracer.WithService(serviceName),
tracer.WithLambdaMode(extensionNotRunning),
tracer.WithGlobalTag("_dd.origin", "lambda"),
tracer.WithSendRetries(2),
}
}, l.tracerOptions...)
if l.otelTracerEnabled {
provider := ddotel.NewTracerProvider(
opts...,
Expand Down

0 comments on commit 0c0f363

Please sign in to comment.