From 1b8f59ac0cf9cb67a496d63649f0b7696e25aee7 Mon Sep 17 00:00:00 2001 From: Alex Boten Date: Tue, 17 Jan 2023 14:10:45 -0800 Subject: [PATCH 1/5] add feature matrix Adding the initial feature matrix with some descriptions of the features captured in the matrix. Signed-off-by: Alex Boten --- README.md | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5c809deaba..8b561dd7a4 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # OpenTelemetry Lambda + ![GitHub Java Workflow Status](https://img.shields.io/github/actions/workflow/status/open-telemetry/opentelemetry-lambda/ci-java.yml?branch%3Amain&label=CI%20%28Java%29&style=for-the-badge) ![GitHub Collector Workflow Status](https://img.shields.io/github/actions/workflow/status/open-telemetry/opentelemetry-lambda/ci-collector.yml?branch%3Amain&label=CI%20%28Collector%29&style=for-the-badge) ![GitHub NodeJS Workflow Status](https://img.shields.io/github/actions/workflow/status/open-telemetry/opentelemetry-lambda/ci-nodejs.yml?branch%3Amain&label=CI%20%28NodeJS%29&style=for-the-badge) @@ -6,6 +7,7 @@ ![GitHub Python Pull Request Workflow Status](https://img.shields.io/github/actions/workflow/status/open-telemetry/opentelemetry-lambda/pr-python.yml?branch%3Amain&label=Pull%20Request%20%28Python%29&style=for-the-badge) ## OpenTelemetry Lambda Layers + The OpenTelemetry Lambda Layers provide the OpenTelemetry (OTel) code to export telemetry asynchronously from AWS Lambdas. It does this by embedding a stripped-down version of [OpenTelemetry Collector Contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib) inside an [AWS Lambda Extension Layer](https://aws.amazon.com/blogs/compute/introducing-aws-lambda-extensions-in-preview/). Some layers include the corresponding OTel language SDK for the Lambda. This allows Lambdas to use OpenTelemetry to send traces and metrics to any configured backend. @@ -18,12 +20,53 @@ Some layers include the corresponding OTel language SDK for the Lambda. This all * ### [.NET + Collector Lambda Layer](dotnet/README.md) * ### [Collector Lambda Layer](collector/README.md) - ## FAQ + * **What exporters/recievers/processors are included from the OpenTelemetry Collector?** > You can check out [the stripped-down collector's imports](https://github.com/open-telemetry/opentelemetry-lambda/blob/main/collector/lambdacomponents/default.go#L18) in this repository for a full list of currently included components. * **Is the Lambda layer provided or do I need to build it and distribute it myself?** > This repository does not provide pre-build Lambda layers. They must be built manually and saved in your AWS account. This repo has files to facilitate doing that. More information is provided in [the Collector folder's README](collector/README.md). ## Design Proposal + To get a better understanding of the proposed design for the OpenTelemetry Lamda extension, you can see the [Design Proposal here.](docs/design_proposal.md) + +## Features + +The following is a list of features provided by the OpenTelemetry layers. + +### Custom Context Propagation + +Context can be propagated through various mechanisms (e.g. http headers (APIGW), message attributes (SQS), ...). In some cases, it may be required to pass a custom context propagation extractor in lambda through configuration, this feature allows this through Lambda instrumentation configuration. + +### Disable AWS Context propagation via environment variable + +The context propagation when Active Tracing is enabled uses the `_X_AMZN_TRACE_ID` environment variable present in the Lambda runtime. To disable this behaviour, implementations have added the `OTEL_LAMBDA_DISABLE_AWS_CONTEXT_PROPAGATION` environment variable which can be set to `true`. + +### Semantic conventions + +The Lambda language implementation follows the semantic conventions specified in the OpenTelemetry Specification. + +### Support matrix + +The table below captures the state of various features and their levels of support different runtimes. + +| Runtime | Custom Context Propagation | Disable AWS Propagation | Semantic conventions | +| ------------- | :------------------------: | :---------------------: | :------------------: | +| Node.js 16 | | | | +| Node.js 14 | | | | +| Python 3.9 | | | | +| Python 3.8 | | | | +| Python 3.7 | | | | +| Java 11 | | | | +| Java 8 | | | | +| .NET Core 3.1 | | | | +| .NET 6 | | | | +| .NET 5 | | | | +| Go 1.x | | | | +| Ruby 2.7 | | | | + +The following are additional runtimes which are no longer or not yet supported by this repository: + +* Node.js 18 - not currently supported (see [#322](https://github.com/open-telemetry/opentelemetry-lambda/issues/322)) +* Node.js 12 - not [officially supported](https://github.com/open-telemetry/opentelemetry-js#supported-runtimes) by OpenTelemetry JS. From bac6f21c3bbc440e99c69876583001e404ba6e36 Mon Sep 17 00:00:00 2001 From: Alex Boten Date: Mon, 23 Jan 2023 14:55:56 -0800 Subject: [PATCH 2/5] update matrix use runtime as header, break up semantic conventions into sections and add auto-instrumentation section Signed-off-by: Alex Boten --- README.md | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 8b561dd7a4..db21992a8c 100644 --- a/README.md +++ b/README.md @@ -47,26 +47,26 @@ The context propagation when Active Tracing is enabled uses the `_X_AMZN_TRACE_I The Lambda language implementation follows the semantic conventions specified in the OpenTelemetry Specification. +### Auto instrumentation + +The Lambda layer includes support for automatically instrumentation code via the use of instrumentation libraries. + ### Support matrix The table below captures the state of various features and their levels of support different runtimes. -| Runtime | Custom Context Propagation | Disable AWS Propagation | Semantic conventions | -| ------------- | :------------------------: | :---------------------: | :------------------: | -| Node.js 16 | | | | -| Node.js 14 | | | | -| Python 3.9 | | | | -| Python 3.8 | | | | -| Python 3.7 | | | | -| Java 11 | | | | -| Java 8 | | | | -| .NET Core 3.1 | | | | -| .NET 6 | | | | -| .NET 5 | | | | -| Go 1.x | | | | -| Ruby 2.7 | | | | - -The following are additional runtimes which are no longer or not yet supported by this repository: +| Feature | Node | Python | Java | .NET | Go | Ruby | +| -------------------------- | :--: | :----: | :--: | :--: | :--: | :--: | +| Custom Context Propagation | | | | | | | +| Disable AWS Propagation | | | | | | | +| Semantic conventions | | | | | | | +| - Trace General | | | | | | | +| - Trace Incoming | | | | | | | +| - Trace Outgoing | | | | | | | +| - Metrics | | | | | | | +| Auto Instrumentation | | | | | | | + +The following are runtimes which are no longer or not yet supported by this repository: * Node.js 18 - not currently supported (see [#322](https://github.com/open-telemetry/opentelemetry-lambda/issues/322)) -* Node.js 12 - not [officially supported](https://github.com/open-telemetry/opentelemetry-js#supported-runtimes) by OpenTelemetry JS. +* Node.js 12 - not [officially supported](https://github.com/open-telemetry/opentelemetry-js#supported-runtimes) by OpenTelemetry JS From 77f37f6eaf8de2036699460a3fe914a183cbfc7d Mon Sep 17 00:00:00 2001 From: Alex Boten Date: Tue, 24 Jan 2023 10:06:41 -0800 Subject: [PATCH 3/5] Update README.md Co-authored-by: Anthony Mirabella --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index db21992a8c..7ca121e84d 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ To get a better understanding of the proposed design for the OpenTelemetry Lamda The following is a list of features provided by the OpenTelemetry layers. -### Custom Context Propagation +### Custom Context Propagation Carrier Extraction Context can be propagated through various mechanisms (e.g. http headers (APIGW), message attributes (SQS), ...). In some cases, it may be required to pass a custom context propagation extractor in lambda through configuration, this feature allows this through Lambda instrumentation configuration. From 3491e4eeff478ef9d798724a406db201c1131979 Mon Sep 17 00:00:00 2001 From: Alex Boten Date: Tue, 24 Jan 2023 11:19:22 -0800 Subject: [PATCH 4/5] update matrix Signed-off-by: Alex Boten --- README.md | 37 +++++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 7ca121e84d..9ca097dfd6 100644 --- a/README.md +++ b/README.md @@ -35,14 +35,22 @@ To get a better understanding of the proposed design for the OpenTelemetry Lamda The following is a list of features provided by the OpenTelemetry layers. -### Custom Context Propagation Carrier Extraction +### OpenTelemetry collector + +The layer includes the OpenTelemetry Collector as a Lambda extension. + +### Custom context propagation carrier extraction Context can be propagated through various mechanisms (e.g. http headers (APIGW), message attributes (SQS), ...). In some cases, it may be required to pass a custom context propagation extractor in lambda through configuration, this feature allows this through Lambda instrumentation configuration. -### Disable AWS Context propagation via environment variable +### Disable AWS context propagation via environment variable The context propagation when Active Tracing is enabled uses the `_X_AMZN_TRACE_ID` environment variable present in the Lambda runtime. To disable this behaviour, implementations have added the `OTEL_LAMBDA_DISABLE_AWS_CONTEXT_PROPAGATION` environment variable which can be set to `true`. +### Span link context propagation + + This links a context extracted from the Lambda runtime environment to the instrumentation-generated span rather than disabling that context extraction entirely. + ### Semantic conventions The Lambda language implementation follows the semantic conventions specified in the OpenTelemetry Specification. @@ -57,14 +65,23 @@ The table below captures the state of various features and their levels of suppo | Feature | Node | Python | Java | .NET | Go | Ruby | | -------------------------- | :--: | :----: | :--: | :--: | :--: | :--: | -| Custom Context Propagation | | | | | | | -| Disable AWS Propagation | | | | | | | -| Semantic conventions | | | | | | | -| - Trace General | | | | | | | -| - Trace Incoming | | | | | | | -| - Trace Outgoing | | | | | | | -| - Metrics | | | | | | | -| Auto Instrumentation | | | | | | | +| OpenTelemetry collector | + | + | + | + | | | +| Custom context propagation | | | | N/A | N/A | | +| Disable AWS propagation | | | | N/A | N/A | | +| Span link propagation | | | | N/A | N/A | | +| Semantic conventions | | | | N/A | N/A | | +| - Trace General | | | | N/A | N/A | | +| - Trace Incoming | | | | N/A | N/A | | +| - Trace Outgoing | | | | N/A | N/A | | +| - Metrics | | | | N/A | N/A | | +| Auto instrumentation | | | | N/A | N/A | | + +#### Legend + +* `+` is supported +* `-` not supported +* `N/A` not applicable to the particular language +* blank cell means the status of the feature is not known. The following are runtimes which are no longer or not yet supported by this repository: From c1143fe3e6836d24c6a7b2b89b14659574789f61 Mon Sep 17 00:00:00 2001 From: Alex Boten Date: Wed, 25 Jan 2023 11:41:47 -0800 Subject: [PATCH 5/5] remove disable aws context propagation feature from matrix Signed-off-by: Alex Boten --- README.md | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/README.md b/README.md index 9ca097dfd6..9faea35bf2 100644 --- a/README.md +++ b/README.md @@ -43,13 +43,9 @@ The layer includes the OpenTelemetry Collector as a Lambda extension. Context can be propagated through various mechanisms (e.g. http headers (APIGW), message attributes (SQS), ...). In some cases, it may be required to pass a custom context propagation extractor in lambda through configuration, this feature allows this through Lambda instrumentation configuration. -### Disable AWS context propagation via environment variable - -The context propagation when Active Tracing is enabled uses the `_X_AMZN_TRACE_ID` environment variable present in the Lambda runtime. To disable this behaviour, implementations have added the `OTEL_LAMBDA_DISABLE_AWS_CONTEXT_PROPAGATION` environment variable which can be set to `true`. - ### Span link context propagation - This links a context extracted from the Lambda runtime environment to the instrumentation-generated span rather than disabling that context extraction entirely. +This links a context extracted from the Lambda runtime environment to the instrumentation-generated span rather than disabling that context extraction entirely. ### Semantic conventions @@ -67,7 +63,6 @@ The table below captures the state of various features and their levels of suppo | -------------------------- | :--: | :----: | :--: | :--: | :--: | :--: | | OpenTelemetry collector | + | + | + | + | | | | Custom context propagation | | | | N/A | N/A | | -| Disable AWS propagation | | | | N/A | N/A | | | Span link propagation | | | | N/A | N/A | | | Semantic conventions | | | | N/A | N/A | | | - Trace General | | | | N/A | N/A | |