Dash0 Acquires Lumigo to Expand Agentic Observability Across AWS and Serverless
Dash0 integrates with AWS Lambda to collect telemetry data such as traces, logs, and metrics.
AWS Lambda is a serverless compute service that lets you run code without provisioning or managing servers. You can use AWS Lambda to run code in response to events such as changes in data or system state, or actions by users. You can integrate AWS Lambda with Dash0 to send telemetry data such as logs, metrics, and traces.

To collect telemetry data from an AWS Lambda function, you need to instrument your Lambda function with an OpenTelemetry SDK and configure it to send telemetry to Dash0.
The traces, logs and metrics generated by the OpenTelemetry SDK inside your function are routed to a local OpenTelemetry Collector, acting as an AWS Lambda External Extension, which then forwards it to Dash0.
The local OpenTelemetry Collector also collects your function’s standard output (stdout) and standard error (stderr) and forwards them as logs.
For collecting the platform metrics from the Lambda runtime, like throttles and recursive invocations, use the CloudWatch metrics integration.
To setup AWS Lambda monitoring you'll need the following:
Log in to your Dash0 account. You can sign up here
Retrieve the following information from your Dash0 account:
AWS requirements:
The setup is based on the OpenTelemetry Lambda setup and varies depending on your Lambda function's programming language.
The OpenTelemetry Collector uses a configuration file to determine how telemetry data is received and sent to Dash0. You can store this configuration in three ways:
Create a file named otel-collector-config.yaml with the following content:
Replace the placeholders with your actual Dash0 endpoint and credentials.
The collector configuration should be packaged as a Lambda layer:
otel-collector-config.yaml file so it is located at the root of the ZIP archive (not inside a directory)otel-collector-config)For detailed instructions, see the AWS documentation on creating layers.
Your Lambda function needs these three layers:
Note: Layer order in the AWS console doesn't affect functionality. The instrumentation wrapper and collector extension are controlled by environment variables, not layer position.



You must edit these values: Replace
<region>with your AWS region and<version>with the latest version number.
| Runtime | Instrumentation Layer ARN | Latest Version | Wrapper Path |
|---|---|---|---|
| Node.js | arn:aws:lambda:<region>:184161586896:layer:opentelemetry-nodejs-<version>:1 | /opt/otel-handler | |
| Python | arn:aws:lambda:<region>:184161586896:layer:opentelemetry-python-<version>:1 | /opt/otel-instrument | |
| Java Agent | arn:aws:lambda:<region>:184161586896:layer:opentelemetry-javaagent-<version>:1 | /opt/otel-handler | |
| Java Wrapper | arn:aws:lambda:<region>:184161586896:layer:opentelemetry-javawrapper-<version>:1 | /opt/otel-handler | |
| Ruby | arn:aws:lambda:<region>:184161586896:layer:opentelemetry-ruby-dev-<version>:1 | /opt/otel-handler |
OpenTelemetry Collector Layer:
arn:aws:lambda:<region>:184161586896:layer:opentelemetry-collector-<amd64|arm64>-<version>:1Common mistake: Using the wrong architecture. Make sure your collector layer matches your Lambda function's architecture (amd64 for x86_64, arm64 for ARM).


You must edit these values: Use the wrapper path from the table above.
| Variable | Value | Description |
|---|---|---|
AWS_LAMBDA_EXEC_WRAPPER | See table above | Path to the OpenTelemetry wrapper for your runtime |
OPENTELEMETRY_COLLECTOR_CONFIG_URI | See options below | Location of your collector configuration file |
Choose the appropriate URI based on how you stored your configuration file:
/opt/otel-collector-config.yaml/var/task/otel-collector-config.yamls3://<bucket_name>.s3.<region>.amazonaws.com/otel-collector-config.yamlNote: For S3, ensure your Lambda function has permissions to read the bucket and use the full S3 URI including the
s3://prefix.
After completing the setup:
The OpenTelemetry collector automatically collects Lambda function logs and sends them to Dash0.
Important: To correlate logs with traces, use a logger that supports OpenTelemetry. Your logs should include tracing information as part of their structured output.
Application metrics emitted using the OpenTelemetry SDK are automatically captured by the collector and exported to Dash0.
For Lambda runtime metrics (invocation count, duration, error rates, etc.), use the CloudWatch metrics integration.
The Dash0 authentication token can be stored directly in the OpenTelemetry Collector configuration file.
This configuration file is typically packaged as a Lambda layer or loaded from S3 and is only accessible to the Lambda function via IAM permissions. In this setup, storing the token in the configuration file is considered acceptable and keeps the configuration centrally managed.
For environments with stricter security requirements, you may choose to store the token in a Lambda environment variable or retrieve it from AWS Secrets Manager or Parameter Store. These approaches require additional setup and permissions and may introduce minor cold start overhead.