Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add feature matrix #430

Merged
merged 5 commits into from
Jan 25, 2023
Merged
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 44 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
# 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)
![GitHub Terraform Lint Workflow Status](https://img.shields.io/github/actions/workflow/status/open-telemetry/opentelemetry-lambda/ci-terraform.yml?branch%3Amain&label=CI%20%28Terraform%20Lint%29&style=for-the-badge)
![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.
Expand All @@ -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
codeboten marked this conversation as resolved.
Show resolved Hide resolved

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`.
codeboten marked this conversation as resolved.
Show resolved Hide resolved

### Semantic conventions

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.

| Feature | Node | Python | Java | .NET | Go | Ruby |
codeboten marked this conversation as resolved.
Show resolved Hide resolved
| -------------------------- | :--: | :----: | :--: | :--: | :--: | :--: |
| 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