55
66package io .opentelemetry .instrumentation .awssdk .v2_2 .internal ;
77
8+ import static io .opentelemetry .instrumentation .api .incubator .semconv .db .internal .DbExceptionEventExtractors .setDbClientExceptionEventExtractor ;
9+ import static io .opentelemetry .instrumentation .api .incubator .semconv .genai .internal .GenAiExceptionEventExtractors .setGenAiClientExceptionEventExtractor ;
10+ import static io .opentelemetry .instrumentation .api .incubator .semconv .messaging .internal .MessagingExceptionEventExtractors .setMessagingProcessExceptionEventExtractor ;
11+ import static io .opentelemetry .instrumentation .api .incubator .semconv .messaging .internal .MessagingExceptionEventExtractors .setMessagingReceiveExceptionEventExtractor ;
12+ import static io .opentelemetry .instrumentation .api .incubator .semconv .messaging .internal .MessagingExceptionEventExtractors .setMessagingSendExceptionEventExtractor ;
13+ import static io .opentelemetry .instrumentation .api .incubator .semconv .rpc .internal .RpcExceptionEventExtractors .setRpcClientExceptionEventExtractor ;
814import static java .util .Arrays .asList ;
9- import static java .util .Collections .emptyList ;
1015import static java .util .Collections .singletonList ;
1116
1217import io .opentelemetry .api .OpenTelemetry ;
@@ -103,7 +108,7 @@ public Instrumenter<ExecutionAttributes, Response> requestInstrumenter() {
103108 AwsSdkInstrumenterFactory ::spanName ,
104109 SpanKindExtractor .alwaysClient (),
105110 attributesExtractors (),
106- emptyList ( ),
111+ builder -> setRpcClientExceptionEventExtractor ( builder ),
107112 true );
108113 }
109114
@@ -138,6 +143,7 @@ public Instrumenter<SqsReceiveRequest, Response> consumerReceiveInstrumenter() {
138143 SpanKindExtractor .alwaysConsumer (),
139144 toSqsRequestExtractors (consumerAttributesExtractors ()),
140145 singletonList (messagingAttributeExtractor ),
146+ builder -> setMessagingReceiveExceptionEventExtractor (builder ),
141147 messagingReceiveInstrumentationEnabled );
142148 }
143149
@@ -152,6 +158,7 @@ public Instrumenter<SqsProcessRequest, Response> consumerProcessInstrumenter() {
152158 MessagingSpanNameExtractor .create (getter , operation ))
153159 .addAttributesExtractors (toSqsRequestExtractors (consumerAttributesExtractors ()))
154160 .addAttributesExtractor (messagingAttributesExtractor (getter , operation ));
161+ setMessagingProcessExceptionEventExtractor (builder );
155162
156163 if (messagingReceiveInstrumentationEnabled ) {
157164 builder .addSpanLinksExtractor (
@@ -205,6 +212,7 @@ public Instrumenter<ExecutionAttributes, Response> producerInstrumenter() {
205212 SpanKindExtractor .alwaysProducer (),
206213 attributesExtractors (),
207214 singletonList (messagingAttributeExtractor ),
215+ builder -> setMessagingSendExceptionEventExtractor (builder ),
208216 true );
209217 }
210218
@@ -214,10 +222,12 @@ public Instrumenter<ExecutionAttributes, Response> dynamoDbInstrumenter() {
214222 AwsSdkInstrumenterFactory ::spanName ,
215223 SpanKindExtractor .alwaysClient (),
216224 attributesExtractors (),
217- builder ->
218- builder
219- .addAttributesExtractor (new DynamoDbAttributesExtractor ())
220- .addOperationMetrics (DbClientMetrics .get ()),
225+ builder -> {
226+ builder
227+ .addAttributesExtractor (new DynamoDbAttributesExtractor ())
228+ .addOperationMetrics (DbClientMetrics .get ());
229+ setDbClientExceptionEventExtractor (builder );
230+ },
221231 true );
222232 }
223233
@@ -228,10 +238,12 @@ public Instrumenter<ExecutionAttributes, Response> bedrockRuntimeInstrumenter()
228238 GenAiSpanNameExtractor .create (getter ),
229239 SpanKindExtractor .alwaysClient (),
230240 attributesExtractors (),
231- builder ->
232- builder
233- .addAttributesExtractor (GenAiAttributesExtractor .create (getter ))
234- .addOperationMetrics (GenAiClientMetrics .get ()),
241+ builder -> {
242+ builder
243+ .addAttributesExtractor (GenAiAttributesExtractor .create (getter ))
244+ .addOperationMetrics (GenAiClientMetrics .get ());
245+ setGenAiClientExceptionEventExtractor (builder );
246+ },
235247 true );
236248 }
237249
@@ -245,14 +257,18 @@ private static <REQUEST, RESPONSE> Instrumenter<REQUEST, RESPONSE> createInstrum
245257 SpanKindExtractor <REQUEST > spanKindExtractor ,
246258 List <? extends AttributesExtractor <? super REQUEST , ? super RESPONSE >> attributeExtractors ,
247259 List <AttributesExtractor <REQUEST , RESPONSE >> additionalAttributeExtractors ,
260+ Consumer <InstrumenterBuilder <REQUEST , RESPONSE >> exceptionEventCustomizer ,
248261 boolean enabled ) {
249262
250263 return createInstrumenter (
251264 openTelemetry ,
252265 spanNameExtractor ,
253266 spanKindExtractor ,
254267 attributeExtractors ,
255- builder -> builder .addAttributesExtractors (additionalAttributeExtractors ),
268+ builder -> {
269+ builder .addAttributesExtractors (additionalAttributeExtractors );
270+ exceptionEventCustomizer .accept (builder );
271+ },
256272 enabled );
257273 }
258274
0 commit comments