Skip to content

Commit 27e39b6

Browse files
committed
Add FaaS exception event extractor helper
1 parent b2035d0 commit 27e39b6

3 files changed

Lines changed: 48 additions & 9 deletions

File tree

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.instrumentation.api.incubator.semconv.faas;
7+
8+
import com.google.errorprone.annotations.CanIgnoreReturnValue;
9+
import io.opentelemetry.api.logs.Severity;
10+
import io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder;
11+
import io.opentelemetry.instrumentation.api.internal.Experimental;
12+
13+
/** Utilities for configuring FaaS exception events. */
14+
public final class FaasExceptionEventExtractors {
15+
16+
/** Configures the FaaS invocation exception event name and severity. */
17+
@CanIgnoreReturnValue
18+
public static <REQUEST, RESPONSE>
19+
InstrumenterBuilder<REQUEST, RESPONSE> setFaasInvocationExceptionEventExtractor(
20+
InstrumenterBuilder<REQUEST, RESPONSE> builder) {
21+
Experimental.setExceptionEventExtractor(
22+
builder,
23+
(logRecordBuilder, context, request) -> {
24+
logRecordBuilder.setEventName("faas.invocation.exception");
25+
logRecordBuilder.setSeverity(Severity.ERROR);
26+
});
27+
return builder;
28+
}
29+
30+
private FaasExceptionEventExtractors() {}
31+
}

instrumentation/aws-lambda/aws-lambda-core-1.0/library/src/main/java/io/opentelemetry/instrumentation/awslambdacore/v1_0/internal/AwsLambdaFunctionInstrumenterFactory.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
package io.opentelemetry.instrumentation.awslambdacore.v1_0.internal;
77

8+
import static io.opentelemetry.instrumentation.api.incubator.semconv.faas.FaasExceptionEventExtractors.setFaasInvocationExceptionEventExtractor;
9+
810
import io.opentelemetry.api.OpenTelemetry;
911
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
1012
import io.opentelemetry.instrumentation.api.instrumenter.SpanKindExtractor;
@@ -19,11 +21,12 @@ public final class AwsLambdaFunctionInstrumenterFactory {
1921
public static AwsLambdaFunctionInstrumenter createInstrumenter(OpenTelemetry openTelemetry) {
2022
return new AwsLambdaFunctionInstrumenter(
2123
openTelemetry,
22-
Instrumenter.builder(
23-
openTelemetry,
24-
"io.opentelemetry.aws-lambda-core-1.0",
25-
AwsLambdaFunctionInstrumenterFactory::spanName)
26-
.addAttributesExtractor(new AwsLambdaFunctionAttributesExtractor())
24+
setFaasInvocationExceptionEventExtractor(
25+
Instrumenter.builder(
26+
openTelemetry,
27+
"io.opentelemetry.aws-lambda-core-1.0",
28+
AwsLambdaFunctionInstrumenterFactory::spanName)
29+
.addAttributesExtractor(new AwsLambdaFunctionAttributesExtractor()))
2730
.buildInstrumenter(SpanKindExtractor.alwaysServer()));
2831
}
2932

instrumentation/aws-lambda/aws-lambda-events-common-2.2/library/src/main/java/io/opentelemetry/instrumentation/awslambdaevents/common/v2_2/internal/AwsLambdaEventsInstrumenterFactory.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
package io.opentelemetry.instrumentation.awslambdaevents.common.v2_2.internal;
77

8+
import static io.opentelemetry.instrumentation.api.incubator.semconv.faas.FaasExceptionEventExtractors.setFaasInvocationExceptionEventExtractor;
9+
810
import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent;
911
import io.opentelemetry.api.OpenTelemetry;
1012
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
@@ -24,10 +26,13 @@ public static AwsLambdaFunctionInstrumenter createInstrumenter(
2426
OpenTelemetry openTelemetry, String instrumentationName, Set<String> knownMethods) {
2527
return new AwsLambdaFunctionInstrumenter(
2628
openTelemetry,
27-
Instrumenter.builder(
28-
openTelemetry, instrumentationName, AwsLambdaEventsInstrumenterFactory::spanName)
29-
.addAttributesExtractor(new AwsLambdaFunctionAttributesExtractor())
30-
.addAttributesExtractor(new ApiGatewayProxyAttributesExtractor(knownMethods))
29+
setFaasInvocationExceptionEventExtractor(
30+
Instrumenter.builder(
31+
openTelemetry,
32+
instrumentationName,
33+
AwsLambdaEventsInstrumenterFactory::spanName)
34+
.addAttributesExtractor(new AwsLambdaFunctionAttributesExtractor())
35+
.addAttributesExtractor(new ApiGatewayProxyAttributesExtractor(knownMethods)))
3136
.buildInstrumenter(SpanKindExtractor.alwaysServer()));
3237
}
3338

0 commit comments

Comments
 (0)