From 6a9754fc32d1062dfa366abb6fbb1d4c12d942a1 Mon Sep 17 00:00:00 2001 From: Alessandro Bologna Date: Sat, 30 Nov 2024 16:34:53 -0500 Subject: [PATCH 1/4] feat(otel): add span kind support to Lambda invocation tracing --- lambda-runtime/src/layers/otel.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lambda-runtime/src/layers/otel.rs b/lambda-runtime/src/layers/otel.rs index e6b7cfff..91cb16f0 100644 --- a/lambda-runtime/src/layers/otel.rs +++ b/lambda-runtime/src/layers/otel.rs @@ -4,7 +4,7 @@ use crate::LambdaInvocation; use opentelemetry_semantic_conventions::trace as traceconv; use pin_project::pin_project; use tower::{Layer, Service}; -use tracing::{instrument::Instrumented, Instrument}; +use tracing::{instrument::Instrumented, Instrument, field}; /// Tower layer to add OpenTelemetry tracing to a Lambda function invocation. The layer accepts /// a function to flush OpenTelemetry after the end of the invocation. @@ -75,6 +75,7 @@ where let span = tracing::info_span!( "Lambda function invocation", "otel.name" = req.context.env_config.function_name, + "otel.kind" = field::Empty, { traceconv::FAAS_TRIGGER } = &self.otel_attribute_trigger, { traceconv::FAAS_INVOCATION_ID } = req.context.request_id, { traceconv::FAAS_COLDSTART } = self.coldstart From c19bc255a18a7af143e0d4bc0870062acd360e40 Mon Sep 17 00:00:00 2001 From: Alessandro Bologna Date: Sat, 30 Nov 2024 16:41:55 -0500 Subject: [PATCH 2/4] fix fmt --- lambda-runtime/src/layers/otel.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lambda-runtime/src/layers/otel.rs b/lambda-runtime/src/layers/otel.rs index 91cb16f0..f50f36f7 100644 --- a/lambda-runtime/src/layers/otel.rs +++ b/lambda-runtime/src/layers/otel.rs @@ -4,7 +4,7 @@ use crate::LambdaInvocation; use opentelemetry_semantic_conventions::trace as traceconv; use pin_project::pin_project; use tower::{Layer, Service}; -use tracing::{instrument::Instrumented, Instrument, field}; +use tracing::{field, instrument::Instrumented, Instrument}; /// Tower layer to add OpenTelemetry tracing to a Lambda function invocation. The layer accepts /// a function to flush OpenTelemetry after the end of the invocation. From 62a87d846a188930f24e191b7f5d93747ee425c3 Mon Sep 17 00:00:00 2001 From: Alessandro Bologna Date: Sat, 30 Nov 2024 23:07:06 -0500 Subject: [PATCH 3/4] docs(example): demonstrate OpenTelemetry span kind usage --- examples/opentelemetry-tracing/src/main.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/examples/opentelemetry-tracing/src/main.rs b/examples/opentelemetry-tracing/src/main.rs index 85c3791c..e526d45c 100644 --- a/examples/opentelemetry-tracing/src/main.rs +++ b/examples/opentelemetry-tracing/src/main.rs @@ -1,6 +1,6 @@ use lambda_runtime::{ layers::{OpenTelemetryFaasTrigger, OpenTelemetryLayer as OtelLayer}, - LambdaEvent, Runtime, + LambdaEvent, Runtime, tracing::Span }; use opentelemetry::trace::TracerProvider; use opentelemetry_sdk::{runtime, trace}; @@ -8,6 +8,8 @@ use tower::{service_fn, BoxError}; use tracing_subscriber::prelude::*; async fn echo(event: LambdaEvent) -> Result { + let span = Span::current(); + span.record("otel.kind", "SERVER"); Ok(event.payload) } From 534b248c4cd6abb4877dde1ee499c6decd5d78b2 Mon Sep 17 00:00:00 2001 From: Alessandro Bologna Date: Sat, 30 Nov 2024 23:24:54 -0500 Subject: [PATCH 4/4] fix fmt --- examples/opentelemetry-tracing/src/main.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/opentelemetry-tracing/src/main.rs b/examples/opentelemetry-tracing/src/main.rs index e526d45c..062f5a11 100644 --- a/examples/opentelemetry-tracing/src/main.rs +++ b/examples/opentelemetry-tracing/src/main.rs @@ -1,6 +1,7 @@ use lambda_runtime::{ layers::{OpenTelemetryFaasTrigger, OpenTelemetryLayer as OtelLayer}, - LambdaEvent, Runtime, tracing::Span + tracing::Span, + LambdaEvent, Runtime, }; use opentelemetry::trace::TracerProvider; use opentelemetry_sdk::{runtime, trace};