From 54b88456a887cf678b20a5b153148e6497770dc3 Mon Sep 17 00:00:00 2001 From: Raj Nishtala Date: Mon, 6 Oct 2025 13:30:12 -0400 Subject: [PATCH 1/8] docs: Add documentation for sending traces with instrumentation of dotnet lambda functions --- .../get-started-transaction-tracing/index.md | 6 + .../aws-lambda/dotnet.md | 120 ++++++++++++++++++ sidebars.ts | 1 + 3 files changed, 127 insertions(+) create mode 100644 docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet.md diff --git a/docs/apm/traces/get-started-transaction-tracing/index.md b/docs/apm/traces/get-started-transaction-tracing/index.md index 23bc934a74..0bb28db2fd 100644 --- a/docs/apm/traces/get-started-transaction-tracing/index.md +++ b/docs/apm/traces/get-started-transaction-tracing/index.md @@ -118,6 +118,12 @@ Learn how to install and configure OpenTelemetry distributed tracing for AWS Lam Thumbnail icon

Python

+
+
+ Thumbnail icon +

Dotnet

+
+
diff --git a/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet.md b/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet.md new file mode 100644 index 0000000000..35dd7ca6cf --- /dev/null +++ b/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet.md @@ -0,0 +1,120 @@ +--- +id: dotnet +title: AWS Lambda - .NET Function Instrumentation +sidebar_label: .NET +description: Learn how to install and configure OpenTelemetry distributed tracing for AWS .NET-based Lambda functions and send data to Sumo Logic. +--- + +import useBaseUrl from '@docusaurus/useBaseUrl'; +import ApmTrace from '../../../../../reuse/apm-traces-layer-order.md'; + +This document covers how to install and configure OpenTelemetry distributed tracing for AWS Lambda functions based on .NET and send the data to Sumo Logic. + +To obtain tracing data from AWS Lambda functions developed in .NET, you can use the following components + +### Provided SDK + +[OpenTelemetry Lambda SDK for .NET](https://github.com/open-telemetry/opentelemetry-dotnet-contrib/tree/main/src/OpenTelemetry.Instrumentation.AWSLambda) includes tracing APIs to instrument Lambda handlers and is provided on [NuGet](https://www.nuget.org/packages/OpenTelemetry.Instrumentation.AWSLambda). + +### OpenTelemetry Lambda layer + +[OpenTelemetry Lambda Layer for Collector](https://github.com/open-telemetry/opentelemetry-lambda/tree/main/collector#opentelemetry-collector-aws-lambda-extension-layer) includes OpenTelemetry Collector for Lambda components. Apply this layer to your Lambda handler that's already been instrumented with the OpenTelemetry Lambda .NET SDK to enable end-to-end tracing. + +#### .NET Lambda layer supports + +* .NET 6 SDK or later +* x86_64 and arm64 architectures + +### Lambda function requirements + +You'll need the following: + +* .NET 6 SDK or later +* Lambda layers add permissions +* Sumo Logic OTLP/HTTP Source endpoint URL - To send spans from the instrumented Lambda function to Sumo Logic you need an endpoint URL from an existing or new [OTLP/HTTP source](/docs/send-data/hosted-collectors/http-source/otlp). + +## Quick Start + +### Overview + +```text +┌─────────────────────┐ OTLP ┌──────────────────────┐ HTTP ┌─────────────┐ +│ .NET Lambda │ ────────► │ Collector Layer │ ────────► │ Sumo Logic │ +│ Function │ (default) │ (Lambda Extension) │ (protobuf) │ OTLP Endpoint│ +│ (Function.cs) │ │ localhost:4318 │ │ │ +└─────────────────────┘ └──────────────────────┘ └─────────────┘ +``` + +### Prerequisites + +* AWS CLI configured with appropriate permissions +* Configure the [AWS credential](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) +* .NET 6 SDK +* Sumo Logic OTLP endpoint URL + +### Build your OpenTelemetry Collector Lambda layer + +At the moment users have to build Collector Lambda layer by themselves, we may provide a collector Lambda layer in the future. + +* Download a local copy of the [opentelemetry-lambda repository from Github](https://github.com/open-telemetry/opentelemetry-lambda). + +* Configure the collector layer to send data to SumoLogic: + + ```yaml + receivers: + otlp: + protocols: + grpc: + endpoint: localhost:4317 + http: + endpoint: localhost:4318 + + exporters: + otlphttp: + endpoint: ${SUMO_LOGIC_OTLP_ENDPOINT} + headers: + Content-Type: application/x-protobuf + encoding: proto + + service: + pipelines: + traces: + receivers: [otlp] + exporters: [otlphttp] + ``` + + Set the following environment variables: + + | Variable | Value | Purpose | + |----------|-------|---------| + | `SUMO_LOGIC_OTLP_ENDPOINT` | `https://your-endpoint.sumologic.net/receiver/v1/otlp/YOUR_TOKEN/v1/traces` | Sumo Logic endpoint | + +* Run command: `cd collector && make publish-layer` to publish OpenTelemetry Collector Lambda layer in your AWS account and get its ARN + +### Configure the lambda function + +Navigate to [functions](https://console.aws.amazon.com/lambda/home#/functions) in the AWS Lambda Console and open the function you want to instrument. + +* Navigate to the **Layers** section and click **Add a layer**. + +* In the **Choose a layer** menu, select **Specify an ARN** and paste the ARN ID for your Lambda function + + :::note + Lambda layers are a regionalized resource, meaning that they can only be used in the Region in which they are published. Make sure to use the layer in the same region as your Lambda functions. + ::: + +* Configure the following environment variables: + + | Variable | Value | Purpose | + |----------|-------|---------| + | `OTEL_EXPORTER_OTLP_ENDPOINT` | `localhost:4318` | Collector endpoint | + | `OTEL_EXPORTER_OTLP_PROTOCOL` | `http/protobuf` | Export protocol | + | `AWS_LAMBDA_EXEC_WRAPPER` | `/opt/otel-instrument` | Lambda wrapper | + +Your function should be successfully instrumented. Invoke the function and find your traces in the [Sumo Logic Tracing screen](/docs/apm/traces/view-and-investigate-traces) + +## References + +* [OpenTelemetry Lambda Layer Documentation](https://github.com/open-telemetry/opentelemetry-lambda) + +* [Sumo Logic OTLP Integration](https://help.sumologic.com/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/) diff --git a/sidebars.ts b/sidebars.ts index d45bea35be..0d07e086d1 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -1820,6 +1820,7 @@ module.exports = { 'apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/java', 'apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/nodejs', 'apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/python', + 'apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet', ], }, { From c5d30f0a45f040e8c74cd39d8ba9ad20981076f1 Mon Sep 17 00:00:00 2001 From: Raj Nishtala Date: Mon, 6 Oct 2025 15:29:38 -0400 Subject: [PATCH 2/8] Change the docs to use the upstream collector lambda layer --- .../aws-lambda/dotnet.md | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet.md b/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet.md index 35dd7ca6cf..8f8581146d 100644 --- a/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet.md +++ b/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet.md @@ -52,11 +52,13 @@ You'll need the following: * .NET 6 SDK * Sumo Logic OTLP endpoint URL -### Build your OpenTelemetry Collector Lambda layer +### Configure the Collector Lambda layer -At the moment users have to build Collector Lambda layer by themselves, we may provide a collector Lambda layer in the future. +Use the following upstream [collector lambda layer](https://github.com/open-telemetry/opentelemetry-lambda/tree/main?tab=readme-ov-file#latest-layer-versions) -* Download a local copy of the [opentelemetry-lambda repository from Github](https://github.com/open-telemetry/opentelemetry-lambda). +* `arn:aws:lambda::184161586896:layer:opentelemetry-collector--:1` + +By default, OpenTelemetry Collector Lambda layer exports telemetry data to AWS backends. To customize the collector configuration, add a collector.yaml to your function and specify its location via the `OPENTELEMETRY_COLLECTOR_CONFIG_URI` environment file * Configure the collector layer to send data to SumoLogic: @@ -89,7 +91,11 @@ At the moment users have to build Collector Lambda layer by themselves, we may p |----------|-------|---------| | `SUMO_LOGIC_OTLP_ENDPOINT` | `https://your-endpoint.sumologic.net/receiver/v1/otlp/YOUR_TOKEN/v1/traces` | Sumo Logic endpoint | -* Run command: `cd collector && make publish-layer` to publish OpenTelemetry Collector Lambda layer in your AWS account and get its ARN + Once the file has been deployed with a Lambda, configuring the `OPENTELEMETRY_COLLECTOR_CONFIG_URI` will tell the OpenTelemetry extension where to find the collector configuration: + + ```bash + aws lambda update-function-configuration --function-name Function --environment Variables={OPENTELEMETRY_COLLECTOR_CONFIG_URI=/var/task/collector.yaml} + ``` ### Configure the lambda function From 922a6e27ca01e4caf638a8ce3a274ba4e91a836b Mon Sep 17 00:00:00 2001 From: "Kim (Sumo Logic)" <56411016+kimsauce@users.noreply.github.com> Date: Tue, 7 Oct 2025 11:58:00 -0700 Subject: [PATCH 3/8] Changed .NET URL to dotnet and added aws-lamda index page (#5877) * changed .NET URL to dotnet and added aws-lamda index pg * indent * Update docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet.md Co-authored-by: John Pipkin (Sumo Logic) --------- Co-authored-by: Raj Nishtala <113392743+rnishtala-sumo@users.noreply.github.com> Co-authored-by: John Pipkin (Sumo Logic) --- cid-redirects.json | 10 +++--- .../advanced-configuration/correlate-logs.md | 2 +- .../get-started-transaction-tracing/index.md | 6 ++-- .../aws-lambda/dotnet.md | 16 +++------ .../aws-lambda/index.md | 35 +++++++++++++++++++ .../{net => dotnet}/index.md | 2 +- .../traceid-spanid-injection-into-logs.md | 0 sidebars.ts | 9 ++--- 8 files changed, 54 insertions(+), 26 deletions(-) create mode 100644 docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/index.md rename docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/{net => dotnet}/index.md (99%) rename docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/{net => dotnet}/traceid-spanid-injection-into-logs.md (100%) diff --git a/cid-redirects.json b/cid-redirects.json index 0db1bc8257..836e36ad82 100644 --- a/cid-redirects.json +++ b/cid-redirects.json @@ -1524,9 +1524,9 @@ "/Traces/01Getting_Started_with_Transaction_Tracing/Set_up_traces_collection_for_Kubernetes_environments": "/docs/apm/traces/get-started-transaction-tracing/set-up-traces-collection-for-kubernetes-environments", "/Traces/01Getting_Started_with_Transaction_Tracing/Set_up_traces_collection_for_other_environments": "/docs/apm/traces/get-started-transaction-tracing/set-up-traces-collection-for-other-environments", "/Traces/01Getting_Started_with_Transaction_Tracing/01Instrument_your_application_with_OpenTelemetry": "/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation", - "/Traces/01Getting_Started_with_Transaction_Tracing/01Instrument_your_application_with_OpenTelemetry/.NET_OpenTelemetry_auto-instrumentation": "/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/net", - "/Traces/01Getting_Started_with_Transaction_Tracing/01Instrument_your_application_with_OpenTelemetry/.NET_OpenTelemetry_auto-instrumentation/01NET_Core_TraceID_and_SpanID_Injection_into_Logs": "/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/net/traceid-spanid-injection-into-logs", - "/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda": "/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/java", + "/Traces/01Getting_Started_with_Transaction_Tracing/01Instrument_your_application_with_OpenTelemetry/.NET_OpenTelemetry_auto-instrumentation": "/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/dotnet", + "/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/net": "/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet", + "/Traces/01Getting_Started_with_Transaction_Tracing/01Instrument_your_application_with_OpenTelemetry/.NET_OpenTelemetry_auto-instrumentation/01NET_Core_TraceID_and_SpanID_Injection_into_Logs": "/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/dotnet/traceid-spanid-injection-into-logs", "/Traces/01Getting_Started_with_Transaction_Tracing/01Instrument_your_application_with_OpenTelemetry/AWS_Lambda_-_Java_function_instrumentation_with_Sumo_Logic_tracing": "/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/java", "/Traces/01Getting_Started_with_Transaction_Tracing/01Instrument_your_application_with_OpenTelemetry/AWS_Lambda_-_NodeJS_function_instrumentation_with_Sumo_Logic_tracing": "/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/nodejs", "/Traces/01Getting_Started_with_Transaction_Tracing/01Instrument_your_application_with_OpenTelemetry/AWS_Lambda_-_Python_function_instrumentation_with_Sumo_Logic_tracing": "/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/python", @@ -1541,7 +1541,7 @@ "/docs/apm/traces/get-started-transaction-tracing/go": "/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/go", "/docs/apm/traces/get-started-transaction-tracing/java": "/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/java", "/docs/apm/traces/get-started-transaction-tracing/javascript": "/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/javascript", - "/docs/apm/traces/get-started-transaction-tracing/net": "/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/net", + "/docs/apm/traces/get-started-transaction-tracing/net": "/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/dotnet", "/Traces/01Getting_Started_with_Transaction_Tracing/01Instrument_your_application_with_OpenTelemetry/Python_OpenTelemetry_auto-instrumentation": "/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/python", "/Traces/01Getting_Started_with_Transaction_Tracing/01Instrument_your_application_with_OpenTelemetry/Ruby_on_Rails_OpenTelemetry_auto-instrumentation": "/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/ruby-on-rails", "/Traces/01Getting_Started_with_Transaction_Tracing/01Instrument_your_application_with_OpenTelemetry/Ruby_OpenTelemetry_auto-instrumentation": "/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/ruby", @@ -4277,7 +4277,7 @@ "/Traces/Getting_Started_with_Transaction_Tracing/Set_up_traces_collection_for_other_environments": "/docs/apm/traces/get-started-transaction-tracing/set-up-traces-collection-for-other-environments", "/Traces/Getting_Started_with_Transaction_Tracing/Working_with_spans_attributes": "/docs/apm/traces/advanced-configuration/working-with-span-attributes", "/Traces/Getting_Started_with_Transaction_Tracing/Instrument_your_application_with_OpenTelemetry": "/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation", - "/Traces/Getting_Started_with_Transaction_Tracing/Instrument_your_application_with_OpenTelemetry/.NET_OpenTelemetry_auto-instrumentation": "/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/net", + "/Traces/Getting_Started_with_Transaction_Tracing/Instrument_your_application_with_OpenTelemetry/.NET_OpenTelemetry_auto-instrumentation": "/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/dotnet", "/Traces/Getting_Started_with_Transaction_Tracing/Instrument_your_application_with_OpenTelemetry/Java_OpenTelemetry_auto-instrumentation/TraceId_and_SpanId_injection_into_logs_configuration": "/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/java/traceid-spanid-injection-into-logs-configuration", "/Traces/Getting_Started_with_Transaction_Tracing/Instrument_your_application_with_OpenTelemetry/Go_OpenTelemetry_auto-instrumentation": "/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/go", "/Traces/Getting_Started_with_Transaction_Tracing/Set_up_traces_collection_for_Kubernetes_environments": "/docs/apm/traces/get-started-transaction-tracing/set-up-traces-collection-for-kubernetes-environments", diff --git a/docs/apm/traces/advanced-configuration/correlate-logs.md b/docs/apm/traces/advanced-configuration/correlate-logs.md index a69e9af98f..b9b5c0a3c0 100644 --- a/docs/apm/traces/advanced-configuration/correlate-logs.md +++ b/docs/apm/traces/advanced-configuration/correlate-logs.md @@ -35,7 +35,7 @@ Our configurations, available in several programming languages, will inject the
Thumbnail icon -

.NET

+

.NET

Injects data into user logs from ASP.NET & .NET core.

diff --git a/docs/apm/traces/get-started-transaction-tracing/index.md b/docs/apm/traces/get-started-transaction-tracing/index.md index 0bb28db2fd..95e818357f 100644 --- a/docs/apm/traces/get-started-transaction-tracing/index.md +++ b/docs/apm/traces/get-started-transaction-tracing/index.md @@ -66,7 +66,7 @@ Learn how to collect telemetry data from applications written in the following p
Thumbnail icon -

.NET

+

.NET

@@ -118,13 +118,13 @@ Learn how to install and configure OpenTelemetry distributed tracing for AWS Lam Thumbnail icon

Python

+
- Thumbnail icon + Thumbnail icon

Dotnet

- ### Kubernetes environments diff --git a/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet.md b/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet.md index 8f8581146d..95aeef99c9 100644 --- a/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet.md +++ b/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet.md @@ -58,10 +58,9 @@ Use the following upstream [collector lambda layer](https://github.com/open-tele * `arn:aws:lambda::184161586896:layer:opentelemetry-collector--:1` -By default, OpenTelemetry Collector Lambda layer exports telemetry data to AWS backends. To customize the collector configuration, add a collector.yaml to your function and specify its location via the `OPENTELEMETRY_COLLECTOR_CONFIG_URI` environment file + By default, OpenTelemetry Collector Lambda layer exports telemetry data to AWS backends. To customize the collector configuration, add a collector.yaml to your function and specify its location via the `OPENTELEMETRY_COLLECTOR_CONFIG_URI` environment file. * Configure the collector layer to send data to SumoLogic: - ```yaml receivers: otlp: @@ -84,11 +83,9 @@ By default, OpenTelemetry Collector Lambda layer exports telemetry data to AWS b receivers: [otlp] exporters: [otlphttp] ``` - - Set the following environment variables: - +* Set the following environment variables: | Variable | Value | Purpose | - |----------|-------|---------| + |:---------|:------|:--------| | `SUMO_LOGIC_OTLP_ENDPOINT` | `https://your-endpoint.sumologic.net/receiver/v1/otlp/YOUR_TOKEN/v1/traces` | Sumo Logic endpoint | Once the file has been deployed with a Lambda, configuring the `OPENTELEMETRY_COLLECTOR_CONFIG_URI` will tell the OpenTelemetry extension where to find the collector configuration: @@ -102,17 +99,13 @@ By default, OpenTelemetry Collector Lambda layer exports telemetry data to AWS b Navigate to [functions](https://console.aws.amazon.com/lambda/home#/functions) in the AWS Lambda Console and open the function you want to instrument. * Navigate to the **Layers** section and click **Add a layer**. - * In the **Choose a layer** menu, select **Specify an ARN** and paste the ARN ID for your Lambda function - :::note Lambda layers are a regionalized resource, meaning that they can only be used in the Region in which they are published. Make sure to use the layer in the same region as your Lambda functions. ::: - * Configure the following environment variables: - | Variable | Value | Purpose | - |----------|-------|---------| + |:---------|:------|:--------| | `OTEL_EXPORTER_OTLP_ENDPOINT` | `localhost:4318` | Collector endpoint | | `OTEL_EXPORTER_OTLP_PROTOCOL` | `http/protobuf` | Export protocol | | `AWS_LAMBDA_EXEC_WRAPPER` | `/opt/otel-instrument` | Lambda wrapper | @@ -122,5 +115,4 @@ Your function should be successfully instrumented. Invoke the function and find ## References * [OpenTelemetry Lambda Layer Documentation](https://github.com/open-telemetry/opentelemetry-lambda) - * [Sumo Logic OTLP Integration](https://help.sumologic.com/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/) diff --git a/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/index.md b/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/index.md new file mode 100644 index 0000000000..cd72d581b9 --- /dev/null +++ b/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/index.md @@ -0,0 +1,35 @@ +--- +slug: /apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda +title: AWS Lambda Instrumentation +sidebar_label: AWS Lambda +description: Learn how to install and configure OpenTelemetry distributed tracing for AWS Lambda functions and send data to Sumo Logic. +--- + +import useBaseUrl from '@docusaurus/useBaseUrl'; + +Thumbnail icon + +In this section, you'll learn how to install and configure OpenTelemetry distributed tracing for AWS Lambda functions written in various programming languages and send that data to Sumo Logic. + +
+
+
+ Thumbnail icon

.NET

+
+
+
+
+ Thumbnail icon

Java

+
+
+
+
+ Thumbnail icon

Node.js

+
+
+
+
+ Thumbnail icon

Python

+
+
+
diff --git a/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/net/index.md b/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/dotnet/index.md similarity index 99% rename from docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/net/index.md rename to docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/dotnet/index.md index 23e1c11036..a80227cc19 100644 --- a/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/net/index.md +++ b/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/dotnet/index.md @@ -1,5 +1,5 @@ --- -slug: /apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/net +slug: /apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/dotnet title: .NET OpenTelemetry Auto-Instrumentation sidebar_label: OpenTelemetry Auto-Instrumentation description: The simplest way to start capturing telemetry data is to implement the solution coming from OpenTelemetry-dotNet. diff --git a/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/net/traceid-spanid-injection-into-logs.md b/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/dotnet/traceid-spanid-injection-into-logs.md similarity index 100% rename from docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/net/traceid-spanid-injection-into-logs.md rename to docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/dotnet/traceid-spanid-injection-into-logs.md diff --git a/sidebars.ts b/sidebars.ts index 0d07e086d1..48cda40043 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -1816,11 +1816,12 @@ module.exports = { label: 'AWS Lambda', collapsible: true, collapsed: true, + link: {type: 'doc', id: 'apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/index'}, items: [ + 'apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet', 'apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/java', 'apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/nodejs', 'apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/python', - 'apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet', ], }, { @@ -1862,8 +1863,8 @@ module.exports = { collapsible: true, collapsed: true, items: [ - 'apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/net/index', - 'apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/net/traceid-spanid-injection-into-logs', + 'apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/dotnet/index', + 'apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/dotnet/traceid-spanid-injection-into-logs', ], }, { @@ -3116,7 +3117,7 @@ integrations: [ 'api/about-apis/terraform-with-sumo-logic', 'api/about-apis/troubleshooting', ], - }, + }, 'api/access-keys', 'api/account-management', 'api/app-management', From 240fae19da678182dc5251dd93dae91b7566f429 Mon Sep 17 00:00:00 2001 From: Raj Nishtala Date: Tue, 7 Oct 2025 15:53:43 -0400 Subject: [PATCH 4/8] Add OPENTELEMETRY_COLLECTOR_CONFIG_URI to the environment variables --- .../aws-lambda/dotnet.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet.md b/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet.md index 95aeef99c9..d59e3891b9 100644 --- a/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet.md +++ b/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet.md @@ -52,7 +52,7 @@ You'll need the following: * .NET 6 SDK * Sumo Logic OTLP endpoint URL -### Configure the Collector Lambda layer +### OpenTelemetry Collector Lambda layer Use the following upstream [collector lambda layer](https://github.com/open-telemetry/opentelemetry-lambda/tree/main?tab=readme-ov-file#latest-layer-versions) @@ -61,6 +61,7 @@ Use the following upstream [collector lambda layer](https://github.com/open-tele By default, OpenTelemetry Collector Lambda layer exports telemetry data to AWS backends. To customize the collector configuration, add a collector.yaml to your function and specify its location via the `OPENTELEMETRY_COLLECTOR_CONFIG_URI` environment file. * Configure the collector layer to send data to SumoLogic: + ```yaml receivers: otlp: @@ -83,10 +84,6 @@ Use the following upstream [collector lambda layer](https://github.com/open-tele receivers: [otlp] exporters: [otlphttp] ``` -* Set the following environment variables: - | Variable | Value | Purpose | - |:---------|:------|:--------| - | `SUMO_LOGIC_OTLP_ENDPOINT` | `https://your-endpoint.sumologic.net/receiver/v1/otlp/YOUR_TOKEN/v1/traces` | Sumo Logic endpoint | Once the file has been deployed with a Lambda, configuring the `OPENTELEMETRY_COLLECTOR_CONFIG_URI` will tell the OpenTelemetry extension where to find the collector configuration: @@ -104,11 +101,18 @@ Navigate to [functions](https://console.aws.amazon.com/lambda/home#/functions) Lambda layers are a regionalized resource, meaning that they can only be used in the Region in which they are published. Make sure to use the layer in the same region as your Lambda functions. ::: * Configure the following environment variables: + + Navigate to the **Configuration > Environment variables** section and ensure that the following environment variables are setup: + | Variable | Value | Purpose | |:---------|:------|:--------| | `OTEL_EXPORTER_OTLP_ENDPOINT` | `localhost:4318` | Collector endpoint | | `OTEL_EXPORTER_OTLP_PROTOCOL` | `http/protobuf` | Export protocol | | `AWS_LAMBDA_EXEC_WRAPPER` | `/opt/otel-instrument` | Lambda wrapper | + | `SUMO_LOGIC_OTLP_ENDPOINT` | `https://your-endpoint.sumologic.net/receiver/v1/otlp/YOUR_TOKEN/v1/traces` | Sumo Logic endpoint | + | `OPENTELEMETRY_COLLECTOR_CONFIG_URI` | `/var/task/collector.yaml` | Collector configuration | + +Any other environment variables like `OTEL_RESOURCE_ATTRIBUTES` or `OTEL_SERVICE_NAME` could also be configured. Your function should be successfully instrumented. Invoke the function and find your traces in the [Sumo Logic Tracing screen](/docs/apm/traces/view-and-investigate-traces) From e35ab7a7f9b8c1d71c5fa767a39c8c83d575bf81 Mon Sep 17 00:00:00 2001 From: Raj Nishtala Date: Wed, 8 Oct 2025 10:48:05 -0400 Subject: [PATCH 5/8] Reorganizing content under lambda configuration --- .../aws-lambda/dotnet.md | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet.md b/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet.md index d59e3891b9..81014a604d 100644 --- a/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet.md +++ b/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet.md @@ -52,13 +52,21 @@ You'll need the following: * .NET 6 SDK * Sumo Logic OTLP endpoint URL -### OpenTelemetry Collector Lambda layer +### Configure the lambda function + +Navigate to [functions](https://console.aws.amazon.com/lambda/home#/functions) in the AWS Lambda Console and open the function you want to instrument. + +* Navigate to the **Layers** section and click **Add a layer**. + Use the following upstream [collector lambda layer](https://github.com/open-telemetry/opentelemetry-lambda/tree/main?tab=readme-ov-file#latest-layer-versions) -Use the following upstream [collector lambda layer](https://github.com/open-telemetry/opentelemetry-lambda/tree/main?tab=readme-ov-file#latest-layer-versions) + * `arn:aws:lambda::184161586896:layer:opentelemetry-collector--:1` -* `arn:aws:lambda::184161586896:layer:opentelemetry-collector--:1` +* In the **Choose a layer** menu, select **Specify an ARN** and paste the above ARN ID for your Lambda function + :::note + Lambda layers are a regionalized resource, meaning that they can only be used in the Region in which they are published. Make sure to use the layer in the same region as your Lambda functions. + ::: - By default, OpenTelemetry Collector Lambda layer exports telemetry data to AWS backends. To customize the collector configuration, add a collector.yaml to your function and specify its location via the `OPENTELEMETRY_COLLECTOR_CONFIG_URI` environment file. + By default, OpenTelemetry Collector Lambda layer exports telemetry data to AWS backends. To customize the collector configuration, add a collector.yaml to your function and specify its location via the `OPENTELEMETRY_COLLECTOR_CONFIG_URI` environment file. * Configure the collector layer to send data to SumoLogic: @@ -91,15 +99,6 @@ Use the following upstream [collector lambda layer](https://github.com/open-tele aws lambda update-function-configuration --function-name Function --environment Variables={OPENTELEMETRY_COLLECTOR_CONFIG_URI=/var/task/collector.yaml} ``` -### Configure the lambda function - -Navigate to [functions](https://console.aws.amazon.com/lambda/home#/functions) in the AWS Lambda Console and open the function you want to instrument. - -* Navigate to the **Layers** section and click **Add a layer**. -* In the **Choose a layer** menu, select **Specify an ARN** and paste the ARN ID for your Lambda function - :::note - Lambda layers are a regionalized resource, meaning that they can only be used in the Region in which they are published. Make sure to use the layer in the same region as your Lambda functions. - ::: * Configure the following environment variables: Navigate to the **Configuration > Environment variables** section and ensure that the following environment variables are setup: From f3a06f84a1d8dd6fb9df4b2e85715def87c55ad5 Mon Sep 17 00:00:00 2001 From: Raj Nishtala Date: Wed, 8 Oct 2025 10:56:31 -0400 Subject: [PATCH 6/8] Update the image to adhere style guide --- .../aws-lambda/dotnet.md | 8 +------- .../img/apm/traces/lambda-dotnet-overview.png | Bin 0 -> 32880 bytes 2 files changed, 1 insertion(+), 7 deletions(-) create mode 100644 static/img/apm/traces/lambda-dotnet-overview.png diff --git a/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet.md b/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet.md index 81014a604d..588f9b61cd 100644 --- a/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet.md +++ b/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet.md @@ -37,13 +37,7 @@ You'll need the following: ### Overview -```text -┌─────────────────────┐ OTLP ┌──────────────────────┐ HTTP ┌─────────────┐ -│ .NET Lambda │ ────────► │ Collector Layer │ ────────► │ Sumo Logic │ -│ Function │ (default) │ (Lambda Extension) │ (protobuf) │ OTLP Endpoint│ -│ (Function.cs) │ │ localhost:4318 │ │ │ -└─────────────────────┘ └──────────────────────┘ └─────────────┘ -``` +.NET Lambda Overview ### Prerequisites diff --git a/static/img/apm/traces/lambda-dotnet-overview.png b/static/img/apm/traces/lambda-dotnet-overview.png new file mode 100644 index 0000000000000000000000000000000000000000..8cb0071517e6a4e6257b4d47e9a97d91545d4baf GIT binary patch literal 32880 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 literal 0 HcmV?d00001 From 99b41607db37682fbd0dbffae6c9c368c4b18281 Mon Sep 17 00:00:00 2001 From: Raj Nishtala Date: Wed, 8 Oct 2025 15:36:49 -0400 Subject: [PATCH 7/8] Remove /v1/traces from the sumologic endpoint --- .../opentelemetry-instrumentation/aws-lambda/dotnet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet.md b/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet.md index 588f9b61cd..05657ac7b9 100644 --- a/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet.md +++ b/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet.md @@ -102,7 +102,7 @@ Navigate to [functions](https://console.aws.amazon.com/lambda/home#/functions) | `OTEL_EXPORTER_OTLP_ENDPOINT` | `localhost:4318` | Collector endpoint | | `OTEL_EXPORTER_OTLP_PROTOCOL` | `http/protobuf` | Export protocol | | `AWS_LAMBDA_EXEC_WRAPPER` | `/opt/otel-instrument` | Lambda wrapper | - | `SUMO_LOGIC_OTLP_ENDPOINT` | `https://your-endpoint.sumologic.net/receiver/v1/otlp/YOUR_TOKEN/v1/traces` | Sumo Logic endpoint | + | `SUMO_LOGIC_OTLP_ENDPOINT` | `https://your-endpoint.sumologic.net/receiver/v1/otlp/YOUR_TOKEN` | Sumo Logic endpoint | | `OPENTELEMETRY_COLLECTOR_CONFIG_URI` | `/var/task/collector.yaml` | Collector configuration | Any other environment variables like `OTEL_RESOURCE_ATTRIBUTES` or `OTEL_SERVICE_NAME` could also be configured. From 40ce719bebedfd239b6962d2ac09c2bd23d5284e Mon Sep 17 00:00:00 2001 From: Raj Nishtala Date: Wed, 8 Oct 2025 15:45:07 -0400 Subject: [PATCH 8/8] Update the link to setup the sumologic otlp endpoint --- .../opentelemetry-instrumentation/aws-lambda/dotnet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet.md b/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet.md index 05657ac7b9..e4406ebead 100644 --- a/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet.md +++ b/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/aws-lambda/dotnet.md @@ -112,4 +112,4 @@ Your function should be successfully instrumented. Invoke the function and find ## References * [OpenTelemetry Lambda Layer Documentation](https://github.com/open-telemetry/opentelemetry-lambda) -* [Sumo Logic OTLP Integration](https://help.sumologic.com/docs/apm/traces/get-started-transaction-tracing/opentelemetry-instrumentation/) +* [Sumo Logic OTLP Integration](https://help.sumologic.com/docs/send-data/hosted-collectors/http-source/otlp/)